diff options
author | Luigi Pinca <luigipinca@gmail.com> | 2022-04-19 16:36:57 +0300 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2022-05-02 15:39:33 +0300 |
commit | fbda87d96669faccb81f4d9e3017f10fdd1524fe (patch) | |
tree | 96a234c1bb5b390d73c3cc59189acb056949e4cd /test | |
parent | 4af0fbd41ea344868c75f4c7c3eece40e664e9ef (diff) |
test: simplify test-gc-{http-client,net}-*
Instead of sending/creating a fixed number of requests/connections,
detect when GC has started and stop sending requests/creating
connections at that point.
Refs: https://github.com/nodejs/node/commit/47ecf2060343
Refs: https://github.com/nodejs/node/commit/7ce8403ef1a6
PR-URL: https://github.com/nodejs/node/pull/42782
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-gc-http-client-connaborted.js | 35 | ||||
-rw-r--r-- | test/parallel/test-gc-http-client-timeout.js | 41 | ||||
-rw-r--r-- | test/parallel/test-gc-net-timeout.js | 39 |
3 files changed, 67 insertions, 48 deletions
diff --git a/test/parallel/test-gc-http-client-connaborted.js b/test/parallel/test-gc-http-client-connaborted.js index fa6bf20c176..fd276d30e2b 100644 --- a/test/parallel/test-gc-http-client-connaborted.js +++ b/test/parallel/test-gc-http-client-connaborted.js @@ -5,27 +5,27 @@ const common = require('../common'); const onGC = require('../common/ongc'); - const http = require('http'); -const todo = 500; +const os = require('os'); + +const cpus = os.cpus().length; +let createClients = true; let done = 0; let count = 0; let countGC = 0; -console.log(`We should do ${todo} requests`); - function serverHandler(req, res) { res.connection.destroy(); } const server = http.createServer(serverHandler); server.listen(0, common.mustCall(() => { - for (let i = 0; i < 10; 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) { @@ -48,11 +48,18 @@ 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(); + return; + } + } + + setImmediate(status); } diff --git a/test/parallel/test-gc-http-client-timeout.js b/test/parallel/test-gc-http-client-timeout.js index 359f890dc39..3ac410a6111 100644 --- a/test/parallel/test-gc-http-client-timeout.js +++ b/test/parallel/test-gc-http-client-timeout.js @@ -5,6 +5,8 @@ const common = require('../common'); const onGC = require('../common/ongc'); +const http = require('http'); +const os = require('os'); function serverHandler(req, res) { setTimeout(function() { @@ -14,19 +16,17 @@ function serverHandler(req, res) { }, 100); } -const http = require('http'); -const todo = 300; +const cpus = os.cpus().length; +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(getall)); +server.listen(0, common.mustCall(getAll)); -function getall() { - if (count >= todo) +function getAll() { + if (!createClients) return; const req = http.get({ @@ -35,18 +35,16 @@ function getall() { port: server.address().port }, cb); - req.setTimeout(10, function() { - console.log('timeout (expected)'); - }); + req.setTimeout(10, common.mustCall()); count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } -for (let i = 0; i < 10; i++) - getall(); +for (let i = 0; i < cpus; i++) + getAll(); function cb(res) { res.resume(); @@ -57,11 +55,18 @@ 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(); + return; + } + } + + setImmediate(status); } diff --git a/test/parallel/test-gc-net-timeout.js b/test/parallel/test-gc-net-timeout.js index 9ba6d2bc174..6b9d51c98d0 100644 --- a/test/parallel/test-gc-net-timeout.js +++ b/test/parallel/test-gc-net-timeout.js @@ -5,6 +5,9 @@ require('../common'); const onGC = require('../common/ongc'); +const assert = require('assert'); +const net = require('net'); +const os = require('os'); function serverHandler(sock) { sock.setTimeout(120000); @@ -23,20 +26,17 @@ function serverHandler(sock) { }, 100); } -const net = require('net'); -const assert = require('assert'); -const todo = 500; +const cpus = os.cpus().length; +let createClients = true; let done = 0; let count = 0; let countGC = 0; -console.log(`We should do ${todo} requests`); - const server = net.createServer(serverHandler); -server.listen(0, getall); +server.listen(0, getAll); -function getall() { - if (count >= todo) +function getAll() { + if (!createClients) return; const req = net.connect(server.address().port); @@ -49,21 +49,28 @@ function getall() { count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } -for (let i = 0; i < 10; i++) - getall(); +for (let i = 0; i < cpus; i++) + getAll(); 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(); + return; + } + } + + setImmediate(status); } |