Skip to content

Commit

Permalink
test: allow for different nsswitch.conf settings
Browse files Browse the repository at this point in the history
The motivation for this commit is that these two test fail on systems
that have different Name Service Switch configuration settings. A
concrete example of this is when using Red Hat Enterprise Linux (RHEL)
7.

If Name Service Switch is available on the operating system then it
might be configured differently (/etc/nsswitch.conf).
If the system is configured with no dns the error code will be
AI_AGAIN, but if there are more services after the dns entry, for
example some linux distributions skip a myhostname service by default
which would still produce the ENOTFOUND error.

This commit suggests checking for either ENOTFOUND or EAI_AGAIN to
accommodate systems like the ones described above. The references below
indicate that others have run, or are running, into this aswell.

Refs: #12075
Refs: nodejs/help#687
Refs: #15825
PR-URL: #16378
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
  • Loading branch information
danbev authored and MylesBorins committed Nov 28, 2017
1 parent 7ae23b7 commit 2b1042b
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 deletions.
2 changes: 1 addition & 1 deletion test/parallel/test-https-connect-address-family.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ function runTest() {

dns.lookup('localhost', {family: 6, all: true}, (err, addresses) => {
if (err) {
if (err.code === 'ENOTFOUND')
if (err.code === 'ENOTFOUND' || err.code === 'EAI_AGAIN')
common.skip('localhost does not resolve to ::1');

throw err;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@ const c = net.createConnection(0, 'this.hostname.is.invalid');
c.on('connect', common.mustNotCall());

c.on('error', common.mustCall(function(e) {
assert.strictEqual(e.code, 'ENOTFOUND');
// If Name Service Switch is available on the operating system then it
// might be configured differently (/etc/nsswitch.conf).
// If the system is configured with no dns the error code will be EAI_AGAIN,
// but if there are more services after the dns entry, for example some
// linux distributions ship a myhostname service by default which would
// still produce the ENOTFOUND error.
assert.ok(e.code === 'ENOTFOUND' || e.code === 'EAI_AGAIN');
assert.strictEqual(e.port, 0);
assert.strictEqual(e.hostname, 'this.hostname.is.invalid');
}));
8 changes: 7 additions & 1 deletion test/parallel/test-net-connect-immediate-finish.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ const client = net.connect({
client.once('error', common.mustCall((err) => {
assert(err);
assert.strictEqual(err.code, err.errno);
assert.strictEqual(err.code, 'ENOTFOUND');
// If Name Service Switch is available on the operating system then it
// might be configured differently (/etc/nsswitch.conf).
// If the system is configured with no dns the error code will be EAI_AGAIN,
// but if there are more services after the dns entry, for example some
// linux distributions ship a myhostname service by default which would
// still produce the ENOTFOUND error.
assert.ok(err.code === 'ENOTFOUND' || err.code === 'EAI_AGAIN');
assert.strictEqual(err.host, err.hostname);
assert.strictEqual(err.host, 'this.hostname.is.invalid');
assert.strictEqual(err.syscall, 'getaddrinfo');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-connect-address-family.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ function runTest() {

dns.lookup('localhost', {family: 6, all: true}, (err, addresses) => {
if (err) {
if (err.code === 'ENOTFOUND')
if (err.code === 'ENOTFOUND' || err.code === 'EAI_AGAIN')
common.skip('localhost does not resolve to ::1');

throw err;
Expand Down

0 comments on commit 2b1042b

Please sign in to comment.