diff options
Diffstat (limited to 'test/parallel/test-gc-tls-external-memory.js')
-rw-r--r-- | test/parallel/test-gc-tls-external-memory.js | 35 |
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(); + } +})); |