Save autoscaling policies without a preview step
This commit is contained in:
@@ -11,7 +11,7 @@ async function setup() {
|
||||
const { db } = await import('../../src/lib/server/db/index.js');
|
||||
const scaling = await import('../../src/lib/server/autoscaling/index.js');
|
||||
for (const n of [3, 8]) db().prepare("INSERT INTO server_keys(id,game,pluto_key) VALUES(?,'t6',?)").run(`key-${n}`, `key-${n}`);
|
||||
const saved = scaling.saveScaling(settings, undefined, undefined, scaling.previewScaling(settings).token);
|
||||
const saved = scaling.saveScaling(settings);
|
||||
return { db, scaling, saved };
|
||||
}
|
||||
|
||||
@@ -34,15 +34,15 @@ it('withdraws an unsubmitted create and returns its game key when the policy pau
|
||||
const { db, scaling, saved } = await setup();
|
||||
await scaling.runAutoscaling();
|
||||
const off = { ...settings, mode: 'off' };
|
||||
scaling.saveScaling(off, saved.id, saved.revision, scaling.previewScaling(off, saved.id, saved.revision).token);
|
||||
scaling.saveScaling(off, saved.id, saved.revision);
|
||||
expect(db().prepare("SELECT state FROM server_deployments WHERE action='create'").get()).toEqual({ state: 'cancelled' });
|
||||
expect(db().prepare('SELECT owns_map FROM autoscaling_policies').get()).toEqual({ owns_map: 0 });
|
||||
expect(db().prepare('SELECT COUNT(*) AS n FROM server_key_leases').get()).toEqual({ n: 0 });
|
||||
db().prepare('DELETE FROM server_keys').run();
|
||||
const current = scaling.getScalingPolicy(saved.id)!;
|
||||
const preview = scaling.previewScaling(settings, saved.id, current.revision);
|
||||
expect(preview.blockers).toEqual([]);
|
||||
expect(preview.snapshot.keyPool).toEqual({ total: 0, available: 0 });
|
||||
const evaluation = scaling.evaluateScaling(settings, saved.id, current.revision);
|
||||
expect(evaluation.blockers).toEqual([]);
|
||||
expect(evaluation.snapshot.keyPool).toEqual({ total: 0, available: 0 });
|
||||
});
|
||||
|
||||
it('blocks manual lifecycle and collection creation, including stale previews', async () => {
|
||||
@@ -56,10 +56,10 @@ it('blocks manual lifecycle and collection creation, including stale previews',
|
||||
const { previewCollection, queueCollection } = await import('../../src/lib/server/fleet/collections.js');
|
||||
const blueprint = saveBlueprint({ name: 'Town', entries: [{ game: 't6', mapSlug: 'town', count: 1 }] });
|
||||
expect(previewCollection(blueprint.id).blockers.join(' ')).toContain('Autoscaling');
|
||||
const off = { ...settings, mode: 'off' }; scaling.saveScaling(off, saved.id, saved.revision, scaling.previewScaling(off, saved.id, saved.revision).token);
|
||||
const off = { ...settings, mode: 'off' }; scaling.saveScaling(off, saved.id, saved.revision);
|
||||
const preview = previewCollection(blueprint.id);
|
||||
const current = scaling.getScalingPolicy(saved.id)!;
|
||||
scaling.saveScaling(settings, saved.id, current.revision, scaling.previewScaling(settings, saved.id, current.revision).token);
|
||||
scaling.saveScaling(settings, saved.id, current.revision);
|
||||
expect(() => queueCollection({ previewId: preview.id })).toThrow('Autoscaling');
|
||||
expect(db().prepare('SELECT COUNT(*) AS n FROM server_deployments').get()).toEqual({ n: 0 });
|
||||
});
|
||||
@@ -86,7 +86,7 @@ it('exact matching cannot remove an owned map absent from the collection', async
|
||||
db().prepare("INSERT INTO servers(name,game,map,map_slug,container_state,container_checked_at,last_seen_at,last_players) VALUES(?,'t6','zm_transit','town','running',?,?,0)").run(town, at, at);
|
||||
for (const n of [1, 2]) db().prepare("INSERT INTO server_keys(id,game,pluto_key) VALUES(?,'t6',?)").run(`key-${n}`, `key-${n}`);
|
||||
const scaling = await import('../../src/lib/server/autoscaling/index.js');
|
||||
scaling.saveScaling(settings, undefined, undefined, scaling.previewScaling(settings).token);
|
||||
scaling.saveScaling(settings);
|
||||
const { saveBlueprint } = await import('../../src/lib/server/fleet/launch-recipes.js');
|
||||
const { previewCollection, queueCollection } = await import('../../src/lib/server/fleet/collections.js');
|
||||
const collection = saveBlueprint({ name: 'Moon only', entries: [{ game: 't5', mapSlug: 'moon', count: 1 }] });
|
||||
|
||||
Reference in New Issue
Block a user