27 lines
815 B
JavaScript
27 lines
815 B
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import { checkServerHealth } from '../../src/server/serverHealth.js';
|
|
|
|
test('server health checks cap count and concurrency', async () => {
|
|
const servers = Array.from({ length: 300 }, (_, index) => ({
|
|
id: `srv-${index}`,
|
|
label: `Server ${index}`,
|
|
host: `server-${index}.example`,
|
|
port: 443,
|
|
}));
|
|
let active = 0;
|
|
let peak = 0;
|
|
const results = await checkServerHealth(servers, async () => {
|
|
active += 1;
|
|
peak = Math.max(peak, active);
|
|
await new Promise((resolve) => setImmediate(resolve));
|
|
active -= 1;
|
|
return { ok: true, latency: 1 };
|
|
});
|
|
|
|
assert.equal(results.length, 30);
|
|
assert.equal(peak, 4);
|
|
assert.deepEqual(results.map(({ id }) => id), servers.slice(0, 30).map(({ id }) => id));
|
|
});
|