Initial commit: ssessesse ki battle
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// 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<string, number> = {};
|
||||
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<unknown>(); 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); })(); });
|
||||
Reference in New Issue
Block a user