summaryrefslogtreecommitdiff
path: root/test/parallel/test-gc-tls-external-memory.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-gc-tls-external-memory.js')
-rw-r--r--test/parallel/test-gc-tls-external-memory.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/parallel/test-gc-tls-external-memory.js b/test/parallel/test-gc-tls-external-memory.js
new file mode 100644
index 0000000000..c19fbbe508
--- /dev/null
+++ b/test/parallel/test-gc-tls-external-memory.js
@@ -0,0 +1,35 @@
+'use strict';
+// Flags: --expose-gc
+
+// Tests that memoryUsage().external doesn't go negative
+// when a lot tls connections are opened and closed
+
+const common = require('../common');
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+
+const assert = require('assert');
+const net = require('net');
+const tls = require('tls');
+
+// Payload doesn't matter. We just need to have the tls
+// connection try and connect somewhere.
+const yolo = Buffer.alloc(10000).fill('yolo');
+const server = net.createServer(function(socket) {
+ socket.write(yolo);
+});
+
+server.listen(0, common.mustCall(function() {
+ const { port } = server.address();
+ let runs = 0;
+ connect();
+
+ function connect() {
+ global.gc();
+ assert(process.memoryUsage().external >= 0);
+ if (runs++ < 512)
+ tls.connect(port).on('error', connect);
+ else
+ server.close();
+ }
+}));