summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/sequential/test-gc-http-client.js34
1 files changed, 21 insertions, 13 deletions
diff --git a/test/sequential/test-gc-http-client.js b/test/sequential/test-gc-http-client.js
index 2eea09652a..7b9f9865ea 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);
+ }
}