Skip to content

Commit

Permalink
test: remove magic numbers in test-gc-http-client-onerror
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Trott committed Dec 13, 2018
1 parent afeb56a commit 7974779
Showing 1 changed file with 30 additions and 23 deletions.
53 changes: 30 additions & 23 deletions test/parallel/test-gc-http-client-onerror.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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 7974779

Please sign in to comment.