mirror of
https://github.com/nodejs/node.git
synced 2025-12-28 07:50:41 +00:00
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 <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
a8afe26fca
commit
7ce8403ef1
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user