Fix transient health checks and avoid unnecessary recovery
This commit is contained in:
@@ -256,6 +256,10 @@ describe('provisioning operations', () => {
|
||||
|
||||
async function incident(id = 'incident') {
|
||||
const { db } = await import('../../src/lib/server/db/index.js');
|
||||
const { komodoInspectHealthy } = await import('../../src/lib/server/integrations/komodo.js');
|
||||
// These lifecycle tests exercise an actual container failure. Healthy
|
||||
// containers with fresh game evidence now cancel obsolete health work.
|
||||
vi.mocked(komodoInspectHealthy).mockResolvedValue({ ok: false, state: 'unhealthy', reason: 'Container unhealthy' });
|
||||
const now = new Date().toISOString();
|
||||
db().prepare(`INSERT INTO watchdog_incidents (id,server,kind,state,summary,first_seen_at,last_seen_at)
|
||||
VALUES (?,?,'health','open','Server down',?,?)`).run(id, server, now, now);
|
||||
@@ -323,7 +327,7 @@ describe('Watchdog provisioning and telemetry evidence', () => {
|
||||
const { requestWatchdogLifecycle } = await import('../../src/lib/server/provisioning/index.js');
|
||||
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
|
||||
const { rconGetPlayerCount, rconStatusResult } = await import('../../src/lib/server/integrations/rcon.js');
|
||||
const { komodoRestart } = await import('../../src/lib/server/integrations/komodo.js');
|
||||
const { komodoRestart, komodoInspectHealthy } = await import('../../src/lib/server/integrations/komodo.js');
|
||||
const { config } = await import('../../src/lib/server/config.js');
|
||||
vi.spyOn(config.rcon, 'password', 'get').mockReturnValue('');
|
||||
vi.mocked(rconGetPlayerCount).mockResolvedValue(null);
|
||||
@@ -333,6 +337,7 @@ describe('Watchdog provisioning and telemetry evidence', () => {
|
||||
if (!result.ok) throw new Error(result.error);
|
||||
await processProvisioning();
|
||||
expect(komodoRestart).toHaveBeenCalledTimes(1);
|
||||
vi.mocked(komodoInspectHealthy).mockResolvedValue({ ok: true, state: 'running' });
|
||||
vi.setSystemTime(Date.now() + 15_000);
|
||||
await processProvisioning();
|
||||
expect(await operation(result.deploymentId)).toMatchObject({ state: 'awaiting-health' });
|
||||
|
||||
Reference in New Issue
Block a user