Add autoscaling outcomes to Metrics (Refs #140)

This commit is contained in:
2026-10-10 17:51:31 -04:00
parent 0bfda267ec
commit 528ed7f37a
15 changed files with 612 additions and 6 deletions
+38
View File
@@ -205,3 +205,41 @@ it('adds match report invalidation on upgrade without invalidating for score hea
expect(revision()).toBeGreaterThan(renamed);
expect(upgraded.prepare('SELECT * FROM leaderboard_match_players').all()).toEqual([]);
});
it('adds provisioning report invalidation at version 14 without invalidating for progress updates', async () => {
const { db, closeDb } = await import('../../src/lib/server/db/index.js');
const handle = db();
for (const table of ['server_deployments', 'provisioning_sources'])
for (const action of ['INSERT', 'UPDATE', 'DELETE'])
handle.exec(`DROP TRIGGER report_metrics_${table}_${action}`);
handle.pragma('user_version = 14');
closeDb();
const upgraded = db();
const revision = () =>
(
upgraded
.prepare("SELECT revision FROM report_revisions WHERE topic='metrics'")
.get() as { revision: number }
).revision;
const before = revision();
upgraded.exec(`INSERT INTO server_deployments
(id,server,action,state,stage,started_at,triggered_by)
VALUES('operation','t5_zombie_moon_1','create','waiting','Queued',
'2026-10-10T12:00:00.000Z','test')`);
expect(revision()).toBe(before);
upgraded.exec(`INSERT INTO provisioning_sources(operation_id,kind,source_id,server)
VALUES('operation','autoscaling','policy','t5_zombie_moon_1')`);
expect(revision()).toBeGreaterThan(before);
const linked = revision();
upgraded.exec(
"UPDATE server_deployments SET stage='Still waiting',observed_at='2026-10-10T12:00:15.000Z'"
);
expect(revision()).toBe(linked);
upgraded.exec(
"UPDATE server_deployments SET state='done',finished_at='2026-10-10T12:01:12.000Z'"
);
expect(revision()).toBeGreaterThan(linked);
const completed = revision();
upgraded.exec('DELETE FROM server_deployments');
expect(revision()).toBeGreaterThan(completed);
});