Remove dry-run and create-only autoscaling modes
This commit is contained in:
@@ -5,8 +5,8 @@ import { prepareNativeHost } from '../helpers/native-host.js';
|
||||
let fixture: Fixture;
|
||||
beforeEach(async () => { vi.resetModules(); fixture = await newFixture([]); });
|
||||
afterEach(async () => { await fixture.cleanup(); });
|
||||
const settings = { game: 't6', mapSlug: 'town', maximum: 1, mode: 'dry-run' };
|
||||
async function setup(mode = 'dry-run') {
|
||||
const settings = { game: 't6', mapSlug: 'town', maximum: 1, mode: 'create-destroy' };
|
||||
async function setup(mode = 'create-destroy') {
|
||||
if (mode.startsWith('create')) await prepareNativeHost();
|
||||
const { db } = await import('../../src/lib/server/db/index.js');
|
||||
const scaling = await import('../../src/lib/server/autoscaling/index.js');
|
||||
@@ -31,10 +31,10 @@ it('deletes policy evidence atomically while preserving lobbies, keys, and unrel
|
||||
expect(db().prepare('SELECT name FROM servers').all()).toEqual([{ name: 't6_zombie_town_1' }]);
|
||||
expect(db().prepare('SELECT COUNT(*) AS n FROM server_keys').get()).toEqual({ n: 2 });
|
||||
expect(db().prepare('PRAGMA foreign_key_check').all()).toEqual([]);
|
||||
expect(scaling.saveScaling(settings, undefined, undefined, scaling.previewScaling(settings).token).id).not.toBe(saved.id);
|
||||
expect(scaling.saveScaling({ ...settings, mode: 'off' }, undefined, undefined, scaling.previewScaling({ ...settings, mode: 'off' }).token).id).not.toBe(saved.id);
|
||||
});
|
||||
|
||||
it.each(['off', 'create-only', 'create-destroy'])('deletes a settled %s policy even after key loss and releases ownership', async mode => {
|
||||
it.each(['off', 'create-destroy'])('deletes a settled %s policy even after key loss and releases ownership', async mode => {
|
||||
const { db, scaling, saved } = await setup(mode);
|
||||
db().prepare('DELETE FROM server_keys').run();
|
||||
scaling.deleteScaling(saved.id, saved.revision);
|
||||
@@ -54,11 +54,11 @@ it('rejects stale revisions and preserves the latest settings', async () => {
|
||||
});
|
||||
|
||||
it('blocks deletion with pending intent, then keeps Provisioning history after pause and settlement', async () => {
|
||||
const { db, scaling, saved } = await setup('create-only');
|
||||
const { db, scaling, saved } = await setup('create-destroy');
|
||||
await scaling.runAutoscaling();
|
||||
const { operation_id: id } = db().prepare('SELECT operation_id FROM autoscaling_decisions WHERE resolved=0').get() as { operation_id: string };
|
||||
expect(() => scaling.deleteScaling(saved.id, saved.revision)).toThrow('outstanding Provisioning');
|
||||
expect(scaling.getScalingPolicy(saved.id)?.mode).toBe('create-only');
|
||||
expect(scaling.getScalingPolicy(saved.id)?.mode).toBe('create-destroy');
|
||||
const off = { ...settings, mode: 'off' };
|
||||
const paused = scaling.saveScaling(off, saved.id, saved.revision, scaling.previewScaling(off, saved.id, saved.revision).token);
|
||||
scaling.deleteScaling(saved.id, paused.revision);
|
||||
|
||||
Reference in New Issue
Block a user