node/test/pummel/test-heapdump-tls.js

42 lines
1.3 KiB
JavaScript

'use strict';
// This tests heap snapshot integration of tls sockets.
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const { validateByRetainingPath, validateByRetainingPathFromNodes } = require('../common/heap');
const assert = require('assert');
const net = require('net');
const tls = require('tls');
// Before tls is used, no TLSWrap should be created.
{
const nodes = validateByRetainingPath('Node / TLSWrap', []);
assert.strictEqual(nodes.length, 0);
}
const server = net.createServer(common.mustCall((c) => {
c.end();
})).listen(0, common.mustCall(() => {
const c = tls.connect({ port: server.address().port });
c.on('error', common.mustCall(() => {
server.close();
}));
c.write('hello');
const nodes = validateByRetainingPath('Node / TLSWrap', []);
validateByRetainingPathFromNodes(nodes, 'Node / TLSWrap', [
{ node_name: 'Node / NodeBIO', edge_name: 'enc_out' },
]);
validateByRetainingPathFromNodes(nodes, 'Node / TLSWrap', [
{ node_name: 'Node / NodeBIO', edge_name: 'enc_in' },
]);
validateByRetainingPathFromNodes(nodes, 'Node / TLSWrap', [
// `Node / TLSWrap` (C++) -> `TLSWrap` (JS)
{ node_name: 'TLSWrap', edge_name: 'native_to_javascript' },
// pending_cleartext_input could be empty
]);
}));