summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-07-13 18:32:35 +0200
committerAnna Henningsen <anna@addaleax.net>2018-07-16 20:48:16 +0200
commit9a34c5b8d57117ede5deb87c9798dbadbc030050 (patch)
tree2cb6abc5a596b15ea7acf27eb16ba7c0d385f0a2
parentd06142af36f7907d20f84986cdd3b4e71c51c20b (diff)
downloadnode-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();
+ });
}