From 7ce8403ef1a68ecb300dad6f2ebe37137a3086ca Mon Sep 17 00:00:00 2001 From: Luigi Pinca Date: Thu, 20 Jan 2022 20:18:20 +0100 Subject: [PATCH] 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. PR-URL: https://github.com/nodejs/node/pull/41620 Refs: https://github.com/nodejs/node/commit/47ecf2060343 Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig --- test/sequential/test-gc-http-client.js | 34 ++++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) 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); + } }