test: remove magic numbers in test-gc-http-client-onerror
Remove magic numbers (500, 10, 100) from the test. Instead, detect when GC has started and stop sending requests at that point. On my laptop, this results in 16 or 20 requests per run instead of 500. Fixes: https://github.com/nodejs/node/issues/23089 PR-URL: https://github.com/nodejs/node/pull/24943 Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
4b96a2a73b
commit
47ecf20603
@ -6,6 +6,8 @@
|
||||
const common = require('../common');
|
||||
const onGC = require('../common/ongc');
|
||||
|
||||
const cpus = require('os').cpus().length;
|
||||
|
||||
function serverHandler(req, res) {
|
||||
req.resume();
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
||||
@ -13,38 +15,35 @@ function serverHandler(req, res) {
|
||||
}
|
||||
|
||||
const http = require('http');
|
||||
const todo = 500;
|
||||
let createClients = true;
|
||||
let done = 0;
|
||||
let count = 0;
|
||||
let countGC = 0;
|
||||
|
||||
console.log(`We should do ${todo} requests`);
|
||||
|
||||
const server = http.createServer(serverHandler);
|
||||
server.listen(0, common.mustCall(() => {
|
||||
for (let i = 0; i < 10; i++)
|
||||
getall();
|
||||
for (let i = 0; i < cpus; i++)
|
||||
getAll();
|
||||
}));
|
||||
|
||||
function getall() {
|
||||
if (count >= todo)
|
||||
return;
|
||||
function getAll() {
|
||||
if (createClients) {
|
||||
const req = http.get({
|
||||
hostname: 'localhost',
|
||||
pathname: '/',
|
||||
port: server.address().port
|
||||
}, cb).on('error', onerror);
|
||||
|
||||
const req = http.get({
|
||||
hostname: 'localhost',
|
||||
pathname: '/',
|
||||
port: server.address().port
|
||||
}, cb).on('error', onerror);
|
||||
count++;
|
||||
onGC(req, { ongc });
|
||||
|
||||
count++;
|
||||
onGC(req, { ongc });
|
||||
|
||||
setImmediate(getall);
|
||||
setImmediate(getAll);
|
||||
}
|
||||
}
|
||||
|
||||
function cb(res) {
|
||||
res.resume();
|
||||
done += 1;
|
||||
done++;
|
||||
}
|
||||
|
||||
function onerror(err) {
|
||||
@ -55,11 +54,19 @@ function ongc() {
|
||||
countGC++;
|
||||
}
|
||||
|
||||
setInterval(status, 100).unref();
|
||||
setImmediate(status);
|
||||
|
||||
function status() {
|
||||
global.gc();
|
||||
console.log('Done: %d/%d', done, todo);
|
||||
console.log('Collected: %d/%d', countGC, count);
|
||||
if (countGC === todo) server.close();
|
||||
if (done > 0) {
|
||||
createClients = false;
|
||||
global.gc();
|
||||
console.log(`done/collected/total: ${done}/${countGC}/${count}`);
|
||||
if (countGC === count) {
|
||||
server.close();
|
||||
} else {
|
||||
setImmediate(status);
|
||||
}
|
||||
} else {
|
||||
setImmediate(status);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user