Limit collection targets to 15 lobbies per map

This commit is contained in:
2026-10-08 16:09:12 -04:00
parent dd29b41f95
commit 63e084e38f
5 changed files with 13 additions and 11 deletions
@@ -62,7 +62,8 @@ describe('large native collection admission', () => {
const { previewCollection, queueCollection, getCollection } = await import('../../src/lib/server/fleet/collections.js');
const { db } = await import('../../src/lib/server/db/index.js');
const blueprint = saveBlueprint({ name: 'One hundred lobbies', entries:
['theater', 'cosmodrome', 'coast', 'temple', 'moon'].map(mapSlug => ({ game: 't5', mapSlug, count: 20 })) });
['theater', 'cosmodrome', 'coast', 'temple', 'moon', 'pentagon', 'prototype']
.map((mapSlug, index) => ({ game: 't5', mapSlug, count: index === 6 ? 10 : 15 })) });
const parse = JSON.parse;
let manifestParses = 0;
+6 -5
View File
@@ -72,15 +72,16 @@ describe('multi-server blueprints', () => {
expect(old.entries).toEqual([{ count: 1, game: 't5', mapSlug: 'theater', mapName: 'Kino Der Toten' }]);
expect(old).not.toHaveProperty('recipe');
expect(previewCreation({ blueprintId: 'legacy' }).recipe.files).toContainEqual(expect.objectContaining({ path: 'telemetry.gsc', versionId: current.id }));
const edited = updateBlueprint('legacy', { name: 'Whole lineup', entries });
expect(edited.totalServers).toBe(5);
expect(edited.entries[0]).toEqual({ ...old.entries[0], count: 2 });
const updatedEntries = [{ ...entries[0], count: 15 }, ...entries.slice(1)];
const edited = updateBlueprint('legacy', { name: 'Whole lineup', entries: updatedEntries });
expect(edited.totalServers).toBe(18);
expect(edited.entries[0]).toEqual({ ...old.entries[0], count: 15 });
const stored = db().prepare('SELECT recipe FROM server_blueprints WHERE id = ?').get('legacy') as { recipe: string };
expect(JSON.parse(stored.recipe)).toEqual({ format: 3, entries });
expect(JSON.parse(stored.recipe)).toEqual({ format: 3, entries: updatedEntries });
expect(listBlueprints()).toHaveLength(1);
});
it.each([[], [{ game: 't5', mapSlug: 'theater', count: 0 }], [{ game: 't5', mapSlug: 'theater', count: 21 }],
it.each([[], [{ game: 't5', mapSlug: 'theater', count: 0 }], [{ game: 't5', mapSlug: 'theater', count: 16 }],
[{ game: 't5', mapSlug: 'theater', count: 1.5 }], [{ game: 't5', mapSlug: 'theater', count: '2' }],
[{ game: 't5', mapSlug: 'town', count: 1 }], [entries[0], entries[0]]].map(input => ({ input })))('rejects an invalid lineup: $input', async ({ input }) => {
const { saveBlueprint } = await import('../../src/lib/server/fleet/launch-recipes.js');