// Isolated load fixture; never imported by the production server. import { Collection } from 'mongodb'; import { createGameServer } from '../src/server/create-server.js'; const databaseName = process.env.LOAD_DATABASE!; if (!/^dragon_ball_test_load_[a-f0-9]+$/.test(databaseName)) throw new Error('TEST_DATABASE_REQUIRED'); const writes: Record = {}; for (const name of ['insertOne', 'updateOne', 'updateMany', 'findOneAndUpdate'] as const) { const original = Collection.prototype[name] as Function; (Collection.prototype as any)[name] = function (...args: unknown[]) { const key = `${this.collectionName}.${name}`; writes[key] = (writes[key] ?? 0) + 1; return original.apply(this, args); }; } const app = await createGameServer({ mongoUri: process.env.TEST_MONGODB_URI!, databaseName, clientDirectory: '.superpowers/missing-load-client', environment: 'test' }); const sockets = new Set(); let peakSockets = 0; app.server.on('upgrade', (_request, socket) => { sockets.add(socket); peakSockets = Math.max(peakSockets, sockets.size); socket.once('close', () => sockets.delete(socket)); }); let previous = process.cpuUsage(), at = performance.now(); const metrics = setInterval(() => { const next = performance.now(), usage = process.cpuUsage(), delta = next - at; process.send?.({ type: 'metrics', rss: process.memoryUsage().rss, cpuPercent: ((usage.user - previous.user) + (usage.system - previous.system)) / (delta * 1000) * 100, sockets: sockets.size, peakSockets, writes }); previous = usage; at = next; }, 1000); process.send?.({ type: 'ready', url: await app.listen({ port: 0, host: '127.0.0.1' }) }); process.on('message', message => { if (message === 'stop') void (async () => { clearInterval(metrics); await app.close(); process.exit(0); })(); });