Refactor server picker and limit ping requests
This commit is contained in:
26
test/server/server-health.test.js
Normal file
26
test/server/server-health.test.js
Normal file
@@ -0,0 +1,26 @@
|
||||
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));
|
||||
});
|
||||
Reference in New Issue
Block a user