diff --git a/test/sequential/test-gc-http-client.js b/test/sequential/test-gc-http-client.js index 2eea09652a50d9..7b9f9865ea9945 100644 --- a/test/sequential/test-gc-http-client.js +++ b/test/sequential/test-gc-http-client.js @@ -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({ @@ -37,7 +37,7 @@ function getall() { count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } function cb(res) { @@ -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); + } }