From 961322178d69325a46dbcbaea1da818fff12c45a Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Wed, 6 Mar 2019 10:30:13 -0500 Subject: [PATCH] test: de-flake test-dns-idna2008.js * use known well-behaved DNS server * force pass on ESERVFAIL PR-URL: https://github.com/nodejs/node/pull/26473 Fixes: https://github.com/nodejs/node/issues/25870 Reviewed-By: Gireesh Punathil Reviewed-By: Rich Trott Reviewed-By: Joyee Cheung --- test/internet/test-dns-idna2008.js | 36 ++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/test/internet/test-dns-idna2008.js b/test/internet/test-dns-idna2008.js index ebabe322f0db0d..2113dd74b4b5d5 100644 --- a/test/internet/test-dns-idna2008.js +++ b/test/internet/test-dns-idna2008.js @@ -11,23 +11,41 @@ const { mustCall } = require('../common'); const assert = require('assert'); const dns = require('dns'); +const { addresses } = require('../common/internet'); -const [host, expectedAddress] = ['straße.de', '81.169.145.78']; +const fixture = { + hostname: 'straße.de', + expectedAddress: '81.169.145.78', + dnsServer: addresses.DNS4_SERVER +}; -dns.lookup(host, mustCall((err, address) => { +// Explicitly use well behaved DNS servers that are known to be able to resolve +// the query (which is a.k.a xn--strae-oqa.de). +dns.setServers([fixture.dnsServer]); + +dns.lookup(fixture.hostname, mustCall((err, address) => { + if (err && err.errno === 'ESERVFAIL') { + assert.ok(err.message.includes('queryA ESERVFAIL straße.de')); + return; + } assert.ifError(err); - assert.strictEqual(address, expectedAddress); + assert.strictEqual(address, fixture.expectedAddress); })); -dns.promises.lookup(host).then(mustCall(({ address }) => { - assert.strictEqual(address, expectedAddress); +dns.promises.lookup(fixture.hostname).then(mustCall(({ address }) => { + assert.strictEqual(address, fixture.expectedAddress); +}).catch((err) => { + if (err && err.errno === 'ESERVFAIL') { + assert.ok(err.message.includes('queryA ESERVFAIL straße.de')); + } })); -dns.resolve4(host, mustCall((err, addresses) => { +dns.resolve4(fixture.hostname, mustCall((err, addresses) => { assert.ifError(err); - assert.deepStrictEqual(addresses, [expectedAddress]); + assert.deepStrictEqual(addresses, [fixture.expectedAddress]); })); -new dns.promises.Resolver().resolve4(host).then(mustCall((addresses) => { - assert.deepStrictEqual(addresses, [expectedAddress]); +const p = new dns.promises.Resolver().resolve4(fixture.hostname); +p.then(mustCall((addresses) => { + assert.deepStrictEqual(addresses, [fixture.expectedAddress]); }));