Permalink
Browse files

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: #23089

PR-URL: #24943
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information...
Trott authored and MylesBorins committed Dec 10, 2018
1 parent 4a858b2 commit 3e14212f0e86bd5a8b5916d8a3acbbc0f42a1b1c
Showing with 30 additions and 23 deletions.
  1. +30 −23 test/parallel/test-gc-http-client-onerror.js
@@ -6,45 +6,44 @@
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' });
res.end('Hello World\n');
}

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;

const req = http.get({
hostname: 'localhost',
pathname: '/',
port: server.address().port
}, cb).on('error', onerror);
function getAll() {
if (createClients) {
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);
}
}

0 comments on commit 3e14212

Please sign in to comment.