diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-07-13 18:32:35 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-07-16 20:48:16 +0200 |
commit | 9a34c5b8d57117ede5deb87c9798dbadbc030050 (patch) | |
tree | 2cb6abc5a596b15ea7acf27eb16ba7c0d385f0a2 | |
parent | d06142af36f7907d20f84986cdd3b4e71c51c20b (diff) | |
download | node-new-9a34c5b8d57117ede5deb87c9798dbadbc030050.tar.gz |
test: refactor test-tls-connect-memleak, move to parallel
This enables the test to run as part of the regular test suite.
PR-URL: https://github.com/nodejs/node/pull/21794
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r-- | test/parallel/test-tls-connect-memleak.js (renamed from test/pummel/test-tls-connect-memleak.js) | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/test/pummel/test-tls-connect-memleak.js b/test/parallel/test-tls-connect-memleak.js index 6809b23baf..95f71acdc3 100644 --- a/test/pummel/test-tls-connect-memleak.js +++ b/test/parallel/test-tls-connect-memleak.js @@ -30,36 +30,36 @@ const assert = require('assert'); const tls = require('tls'); const fixtures = require('../common/fixtures'); -assert.strictEqual( - typeof global.gc, - 'function', - `Type of global.gc is not a function. Type: ${typeof global.gc}.` + - ' Run this test with --expose-gc' -); +// Test that the implicit listener for an 'connect' event on tls.Sockets is +// added using `once()`, i.e. can be gc'ed once that event has occurred. -tls.createServer({ +const server = tls.createServer({ cert: fixtures.readSync('test_cert.pem'), key: fixtures.readSync('test_key.pem') -}).listen(common.PORT); +}).listen(0); + +let collected = false; +const gcListener = { ongc() { collected = true; } }; { - // 2**26 == 64M entries - const junk = new Array(2 ** 26).fill(0); + const gcObject = {}; + common.onGC(gcObject, gcListener); - const options = { rejectUnauthorized: false }; - tls.connect(common.PORT, '127.0.0.1', options, function() { - assert.notStrictEqual(junk.length, 0); // keep reference alive - setTimeout(done, 10); - global.gc(); - }); + const sock = tls.connect( + server.address().port, + { rejectUnauthorized: false }, + common.mustCall(() => { + assert.strictEqual(gcObject, gcObject); // keep reference alive + assert.strictEqual(collected, false); + setImmediate(done, sock); + })); } -function done() { - const before = process.memoryUsage().rss; +function done(sock) { global.gc(); - const after = process.memoryUsage().rss; - const reclaimed = (before - after) / 1024; - console.log('%d kB reclaimed', reclaimed); - assert(reclaimed > 256 * 1024); // it's more like 512M on x64 - process.exit(); + setImmediate(() => { + assert.strictEqual(collected, true); + sock.end(); + server.close(); + }); } |