From ba908ba4df0a331f0a8730c3b313a9dfcc1f2ea6 Mon Sep 17 00:00:00 2001 From: Yaniv Friedensohn Date: Tue, 21 Aug 2018 21:45:34 +0300 Subject: [PATCH 1/2] test: add test for internalConnect() when address type is IPv6 --- test/common/index.js | 4 +++ .../test-net-connect-local-error.js | 31 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/test/common/index.js b/test/common/index.js index 742a78e3679917..4c543c1cc2fcb0 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -197,6 +197,10 @@ Object.defineProperty(exports, 'localhostIPv4', { } }); +Object.defineProperty(exports, 'localhostIPv6', { + get: () => '::1' +}); + // opensslCli defined lazily to reduce overhead of spawnSync Object.defineProperty(exports, 'opensslCli', { get: function() { if (opensslCli !== null) return opensslCli; diff --git a/test/sequential/test-net-connect-local-error.js b/test/sequential/test-net-connect-local-error.js index 205ff872cd8090..cdb506cd2b5fb4 100644 --- a/test/sequential/test-net-connect-local-error.js +++ b/test/sequential/test-net-connect-local-error.js @@ -6,20 +6,39 @@ const net = require('net'); // EADDRINUSE is expected to occur on FreeBSD // Ref: https://github.com/nodejs/node/issues/13055 const expectedErrorCodes = ['ECONNREFUSED', 'EADDRINUSE']; -const client = net.connect({ + +const optionsIPv4 = { port: common.PORT, localPort: common.PORT + 1, localAddress: common.localhostIPv4 -}); +}; + +const optionsIPv6 = { + host: common.localhostIPv6, + port: common.PORT + 2, + localPort: common.PORT + 3, + localAddress: common.localhostIPv6 +}; -client.on('error', common.mustCall(function onError(err) { +const onError = (err, options) => { assert.ok(expectedErrorCodes.includes(err.code)); assert.strictEqual(err.syscall, 'connect'); - assert.strictEqual(err.localPort, common.PORT + 1); - assert.strictEqual(err.localAddress, common.localhostIPv4); + assert.strictEqual(err.localPort, options.localPort); + assert.strictEqual(err.localAddress, options.localAddress); assert.strictEqual( err.message, `connect ${err.code} ${err.address}:${err.port} ` + `- Local (${err.localAddress}:${err.localPort})` ); -})); +}; + +const clientIPv4 = net.connect(optionsIPv4); +clientIPv4.on('error', common.mustCall((err) => onError(err, optionsIPv4))); + +if (!common.hasIPv6) { + common.printSkipMessage('ipv6 part of test, no IPv6 support'); + return; +} + +const clientIPv6 = net.connect(optionsIPv6); +clientIPv6.on('error', common.mustCall((err) => onError(err, optionsIPv6))); From c24e8a6f5a1f52d192b4f87b42ceedd9b03cc0b2 Mon Sep 17 00:00:00 2001 From: Yaniv Friedensohn Date: Wed, 22 Aug 2018 22:27:38 +0300 Subject: [PATCH 2/2] test: change onError() to a function declaration --- test/sequential/test-net-connect-local-error.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sequential/test-net-connect-local-error.js b/test/sequential/test-net-connect-local-error.js index cdb506cd2b5fb4..6f5139aefb226d 100644 --- a/test/sequential/test-net-connect-local-error.js +++ b/test/sequential/test-net-connect-local-error.js @@ -20,7 +20,7 @@ const optionsIPv6 = { localAddress: common.localhostIPv6 }; -const onError = (err, options) => { +function onError(err, options) { assert.ok(expectedErrorCodes.includes(err.code)); assert.strictEqual(err.syscall, 'connect'); assert.strictEqual(err.localPort, options.localPort); @@ -30,7 +30,7 @@ const onError = (err, options) => { `connect ${err.code} ${err.address}:${err.port} ` + `- Local (${err.localAddress}:${err.localPort})` ); -}; +} const clientIPv4 = net.connect(optionsIPv4); clientIPv4.on('error', common.mustCall((err) => onError(err, optionsIPv4)));