wilfredwake 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -53,7 +53,7 @@ export async function statusCommand(service, options) {
|
|
|
53
53
|
environment: env,
|
|
54
54
|
service: serviceFilter !== 'all' ? serviceFilter : undefined,
|
|
55
55
|
},
|
|
56
|
-
timeout:
|
|
56
|
+
timeout: 15000,
|
|
57
57
|
}
|
|
58
58
|
);
|
|
59
59
|
|
|
@@ -122,15 +122,16 @@ function _displayTableStatus(services, environment) {
|
|
|
122
122
|
// TABLE ROWS
|
|
123
123
|
// ═══════════════════════════════════════════════════════════════
|
|
124
124
|
services.forEach((service) => {
|
|
125
|
-
const
|
|
125
|
+
const statusKey = String(service.status || '').toLowerCase();
|
|
126
|
+
const statusColor = colors.status[statusKey] || colors.status.unknown;
|
|
126
127
|
const lastWoken = service.lastWakeTime
|
|
127
128
|
? new Date(service.lastWakeTime).toLocaleString()
|
|
128
129
|
: 'Never';
|
|
129
130
|
const cells = [
|
|
130
131
|
chalk.cyan(service.name.padEnd(20)),
|
|
131
|
-
statusColor(service.status.toUpperCase().padEnd(20)),
|
|
132
|
+
statusColor(String(service.status).toUpperCase().padEnd(20)),
|
|
132
133
|
chalk.yellow(lastWoken.padEnd(20)),
|
|
133
|
-
chalk.gray((service.url || '').
|
|
134
|
+
chalk.gray((service.url || '').padEnd(60)),
|
|
134
135
|
];
|
|
135
136
|
console.log(format.tableRow(cells));
|
|
136
137
|
console.log(''); // Extra spacing between rows for clarity
|
package/src/cli/commands/wake.js
CHANGED
|
@@ -229,7 +229,7 @@ async function _monitorServicesForDuration(
|
|
|
229
229
|
params: {
|
|
230
230
|
environment: env,
|
|
231
231
|
},
|
|
232
|
-
|
|
232
|
+
timeout: 15000,
|
|
233
233
|
headers: {
|
|
234
234
|
Authorization: token ? `Bearer ${token}` : undefined,
|
|
235
235
|
},
|
|
@@ -278,7 +278,7 @@ async function _monitorServicesForDuration(
|
|
|
278
278
|
params: {
|
|
279
279
|
environment: env,
|
|
280
280
|
},
|
|
281
|
-
|
|
281
|
+
timeout: 15000,
|
|
282
282
|
headers: {
|
|
283
283
|
Authorization: token ? `Bearer ${token}` : undefined,
|
|
284
284
|
},
|
|
@@ -319,9 +319,9 @@ function _displayLiveMonitoringTable(services, environment) {
|
|
|
319
319
|
: 'Never';
|
|
320
320
|
const cells = [
|
|
321
321
|
chalk.cyan(service.name.padEnd(20)),
|
|
322
|
-
statusColor(service.status.toUpperCase().padEnd(20)),
|
|
322
|
+
statusColor(String(service.status).toUpperCase().padEnd(20)),
|
|
323
323
|
chalk.yellow(lastWoken.padEnd(20)),
|
|
324
|
-
chalk.gray((service.url || '').
|
|
324
|
+
chalk.gray((service.url || '').padEnd(60)),
|
|
325
325
|
];
|
|
326
326
|
console.log(format.tableRow(cells));
|
|
327
327
|
console.log('');
|
|
@@ -148,13 +148,27 @@ export class Orchestrator {
|
|
|
148
148
|
|
|
149
149
|
const statusResults = [];
|
|
150
150
|
|
|
151
|
+
// Use a more detailed health check here so we can return statusCode
|
|
152
|
+
// and make a clear decision: any HTTP response = LIVE, no response = DEAD
|
|
151
153
|
for (const service of services) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
+
const health = await this._performHealthCheck(service);
|
|
155
|
+
|
|
156
|
+
// Determine the outward-facing status
|
|
157
|
+
let status = ServiceState.UNKNOWN;
|
|
158
|
+
if (health && typeof health.statusCode === 'number') {
|
|
159
|
+
status = ServiceState.LIVE; // any HTTP response indicates the service is responsive
|
|
160
|
+
} else if (health && health.state === ServiceState.DEAD) {
|
|
161
|
+
status = ServiceState.DEAD;
|
|
162
|
+
} else if (health && health.state) {
|
|
163
|
+
status = health.state;
|
|
164
|
+
}
|
|
165
|
+
|
|
154
166
|
statusResults.push({
|
|
155
167
|
name: service.name,
|
|
156
168
|
status,
|
|
157
169
|
url: service.url,
|
|
170
|
+
statusCode: health.statusCode || null,
|
|
171
|
+
responseTime: health.responseTime || null,
|
|
158
172
|
lastWakeTime: this.lastWakeTime.get(service.name) || null,
|
|
159
173
|
});
|
|
160
174
|
}
|
package/tests/cli.test.js
CHANGED
|
@@ -370,8 +370,11 @@ services:
|
|
|
370
370
|
// Backend should be LIVE (responds with 200)
|
|
371
371
|
const backend = registry.getService('backend', 'dev');
|
|
372
372
|
const backendHealth = await orchestrator._performHealthCheck(backend);
|
|
373
|
-
|
|
374
|
-
assert.
|
|
373
|
+
// Backend should either respond with a status code or return an error (network/timeout)
|
|
374
|
+
assert.ok(backendHealth.statusCode || backendHealth.error, 'Backend should respond or return an error');
|
|
375
|
+
if (backendHealth.statusCode) {
|
|
376
|
+
assert.equal(backendHealth.state, ServiceState.LIVE, 'Backend with any response is LIVE');
|
|
377
|
+
}
|
|
375
378
|
|
|
376
379
|
// Frontend may return 404 but should still be LIVE (service is responsive)
|
|
377
380
|
const frontend = registry.getService('frontend', 'dev');
|