diff --git a/src/game-servers/assign.test.ts b/src/game-servers/assign.test.ts index 568ae59e5..fecfd2916 100644 --- a/src/game-servers/assign.test.ts +++ b/src/game-servers/assign.test.ts @@ -46,7 +46,7 @@ import { staticGameServers } from '../static-game-servers' import { servemeTf } from '../serveme-tf' // eslint-disable-next-line @typescript-eslint/no-explicit-any -const fakeGame = { number: 1 } as any +const fakeGame = { number: 1, map: 'cp_badlands' } as any // eslint-disable-next-line @typescript-eslint/no-explicit-any const fakeServer = { id: 'srv', name: 'test', provider: 'tf2quickserver' } as any @@ -58,14 +58,20 @@ describe('assign() with selected tf2QuickServer', () => { it('calls tf2QuickServer.assign with serverId when value is tf2QuickServer:{id}', async () => { await assign(fakeGame, 'tf2QuickServer:server-abc123') - expect(tf2QuickServer.assign).toHaveBeenCalledWith({ serverId: 'server-abc123' }) + expect(tf2QuickServer.assign).toHaveBeenCalledWith({ + serverId: 'server-abc123', + map: 'cp_badlands', + }) expect(staticGameServers.assign).not.toHaveBeenCalled() expect(servemeTf.assign).not.toHaveBeenCalled() }) it('calls tf2QuickServer.assign with region when value is tf2QuickServer:new:{region}', async () => { await assign(fakeGame, 'tf2QuickServer:new:eu-frankfurt-1') - expect(tf2QuickServer.assign).toHaveBeenCalledWith({ region: 'eu-frankfurt-1' }) + expect(tf2QuickServer.assign).toHaveBeenCalledWith({ + region: 'eu-frankfurt-1', + map: 'cp_badlands', + }) }) it('throws for unknown game server selection', async () => { diff --git a/src/game-servers/assign.ts b/src/game-servers/assign.ts index bd7441208..ec6e212b3 100644 --- a/src/game-servers/assign.ts +++ b/src/game-servers/assign.ts @@ -38,7 +38,7 @@ function assignFirstFree(game: GameModel): Promise { return staticGameServers .assign(game) .catch(() => servemeTf.assign(game)) - .catch(() => tf2QuickServer.assign()) + .catch(() => tf2QuickServer.assign({ map: game.map })) .catch((error: unknown) => { logger.error(error) throw errors.internalServerError(`no free servers available for game ${game.number}`) @@ -60,9 +60,9 @@ function assignSelected(game: GameModel, selected: string): Promise const payload = selected.substring(15) if (payload.startsWith('new:')) { const region = payload.substring(4) - return tf2QuickServer.assign({ region }) + return tf2QuickServer.assign({ region, map: game.map }) } - return tf2QuickServer.assign({ serverId: payload }) + return tf2QuickServer.assign({ serverId: payload, map: game.map }) } throw errors.badRequest(`unknown game server selection: ${selected}`) diff --git a/src/tf2-quick-server/assign.test.ts b/src/tf2-quick-server/assign.test.ts index 565935d29..77cffae12 100644 --- a/src/tf2-quick-server/assign.test.ts +++ b/src/tf2-quick-server/assign.test.ts @@ -131,8 +131,8 @@ describe('assign()', () => { }) it('should create a server in the given region without calling findFree', async () => { - await assign({ region: 'us-chicago-1' }) - expect(createServer).toHaveBeenCalledWith('us-chicago-1') + await assign({ region: 'us-chicago-1', map: 'cp_badlands' }) + expect(createServer).toHaveBeenCalledWith('us-chicago-1', 'cp_badlands') expect(findFree).not.toHaveBeenCalled() }) }) diff --git a/src/tf2-quick-server/assign.ts b/src/tf2-quick-server/assign.ts index 4c8925d60..9f1fe043e 100644 --- a/src/tf2-quick-server/assign.ts +++ b/src/tf2-quick-server/assign.ts @@ -26,7 +26,8 @@ function stubGameServer(taskId: string): GameServer { export async function assign({ serverId, region, -}: { serverId?: string; region?: string } = {}): Promise { + map, +}: { serverId?: string; region?: string; map?: string } = {}): Promise { if (!environment.TF2_QUICK_SERVER_CLIENT_ID || !environment.TF2_QUICK_SERVER_CLIENT_SECRET) { throw errors.badRequest('TF2 QuickServer is disabled') } @@ -55,7 +56,7 @@ export async function assign({ region = await configuration.get('tf2_quick_server.region') } - const { taskId } = await createServer(region) + const { taskId } = await createServer(region, map) logger.info({ taskId, region }, 'TF2 QuickServer creation started') return stubGameServer(taskId) } diff --git a/src/tf2-quick-server/client.ts b/src/tf2-quick-server/client.ts index 25ec72fff..73562642b 100644 --- a/src/tf2-quick-server/client.ts +++ b/src/tf2-quick-server/client.ts @@ -120,14 +120,15 @@ export async function listServers(): Promise[]> { return z.array(serverSchema).parse(await apiFetch('/api/servers')) } -export async function createServer(region: string): Promise<{ taskId: string }> { - logger.info({ region }, 'creating TF2 QuickServer server') +export async function createServer(region: string, firstMap?: string): Promise<{ taskId: string }> { + logger.info({ region, firstMap }, 'creating TF2 QuickServer server') return taskAcceptedSchema.parse( await apiFetch('/api/servers', { method: 'POST', body: JSON.stringify({ region, variantName: 'tf2pickup', + firstMap, extraEnvs: { SERVER_HOSTNAME: environment.WEBSITE_NAME, },