| 'use strict'; |
| const common = require('../common'); |
| |
| // This test checks that calling `net.connect` internally calls |
| // `Socket.prototype.connect`. |
| // |
| // This is important for people who monkey-patch `Socket.prototype.connect` |
| // since it's not possible to monkey-patch `net.connect` directly (as the core |
| // `connect` function is called internally in Node instead of calling the |
| // `exports.connect` function). |
| // |
| // Monkey-patching of `Socket.prototype.connect` is done by - among others - |
| // most APM vendors, the async-listener module and the |
| // continuation-local-storage module. |
| // |
| // Related: |
| // - https://github.com/nodejs/node/pull/12342 |
| // - https://github.com/nodejs/node/pull/12852 |
| |
| const net = require('net'); |
| const Socket = net.Socket; |
| |
| // Monkey patch Socket.prototype.connect to check that it's called. |
| const orig = Socket.prototype.connect; |
| Socket.prototype.connect = common.mustCall(function() { |
| return orig.apply(this, arguments); |
| }); |
| |
| const server = net.createServer(); |
| |
| server.listen(common.mustCall(function() { |
| const port = server.address().port; |
| const client = net.connect({ port }, common.mustCall(function() { |
| client.end(); |
| })); |
| client.on('end', common.mustCall(function() { |
| server.close(); |
| })); |
| })); |