aboutsummaryrefslogtreecommitdiff
path: root/test/parallel/test-gc-http-client-onerror.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-07-27 13:36:35 +0200
committerAnna Henningsen <anna@addaleax.net>2018-08-01 18:04:56 +0200
commit02badc424f92f71de66adf945e51fd07a914aaf1 (patch)
tree6747db01dcc4b6ce932b0af9268024bca6857e61 /test/parallel/test-gc-http-client-onerror.js
parentdcfbedb36518b1ca505149e135dc3ffc4d9ed2d5 (diff)
downloadandroid-node-v8-02badc424f92f71de66adf945e51fd07a914aaf1.tar.gz
android-node-v8-02badc424f92f71de66adf945e51fd07a914aaf1.tar.bz2
android-node-v8-02badc424f92f71de66adf945e51fd07a914aaf1.zip
test: remove test/gc, integrate into parallel
There’s no reason to have a separate addon just for testing GC anymore. PR-URL: https://github.com/nodejs/node/pull/22001 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'test/parallel/test-gc-http-client-onerror.js')
-rw-r--r--test/parallel/test-gc-http-client-onerror.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/test/parallel/test-gc-http-client-onerror.js b/test/parallel/test-gc-http-client-onerror.js
new file mode 100644
index 0000000000..8842da93c3
--- /dev/null
+++ b/test/parallel/test-gc-http-client-onerror.js
@@ -0,0 +1,67 @@
+'use strict';
+// Flags: --expose-gc
+// just like test-gc-http-client.js,
+// but with an on('error') handler that does nothing.
+
+const common = require('../common');
+
+function serverHandler(req, res) {
+ req.resume();
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World\n');
+}
+
+const http = require('http');
+const todo = 500;
+let done = 0;
+let count = 0;
+let countGC = 0;
+
+console.log(`We should do ${todo} requests`);
+
+const server = http.createServer(serverHandler);
+server.listen(0, runTest);
+
+function getall() {
+ if (count >= todo)
+ return;
+
+ (function() {
+ function cb(res) {
+ res.resume();
+ done += 1;
+ }
+ function onerror(er) {
+ throw er;
+ }
+
+ const req = http.get({
+ hostname: 'localhost',
+ pathname: '/',
+ port: server.address().port
+ }, cb).on('error', onerror);
+
+ count++;
+ common.onGC(req, { ongc });
+ })();
+
+ setImmediate(getall);
+}
+
+function runTest() {
+ for (let i = 0; i < 10; i++)
+ getall();
+}
+
+function ongc() {
+ countGC++;
+}
+
+setInterval(status, 100).unref();
+
+function status() {
+ global.gc();
+ console.log('Done: %d/%d', done, todo);
+ console.log('Collected: %d/%d', countGC, count);
+ if (countGC === todo) server.close();
+}