Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
test: simplify test-gc-http-client
Instead of sending a fixed number of requests, detect when GC has
started and stop sending requests at that point.

Refs: 47ecf2060343
  • Loading branch information
lpinca committed Jan 20, 2022
commit 28d0dec0764fc9be71152c889deca7a2be5cfe59
34 changes: 21 additions & 13 deletions test/sequential/test-gc-http-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,27 @@
const common = require('../common');
const onGC = require('../common/ongc');

const cpus = require('os').cpus().length;

function serverHandler(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}

const http = require('http');
const todo = 300;
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 < 15; i++)
getall();
for (let i = 0; i < cpus; i++)
getAll();
}));

function getall() {
if (count === todo)
function getAll() {
if (!createClients)
return;

const req = http.get({
Expand All @@ -37,7 +37,7 @@ function getall() {
count++;
onGC(req, { ongc });

setImmediate(getall);
setImmediate(getAll);
}

function cb(res) {
Expand All @@ -49,11 +49,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);
}
}