test: fix flaky test-*-connect-address-family · nodejs/node@2d77cba

@@ -5,29 +5,42 @@ if (!common.hasCrypto) {

55

return;

66

}

778-

const assert = require('assert');

9-

const https = require('https');

10-118

if (!common.hasIPv6) {

129

common.skip('no IPv6 support');

1310

return;

1411

}

151216-

const ciphers = 'AECDH-NULL-SHA';

17-

https.createServer({ ciphers }, function(req, res) {

18-

this.close();

19-

res.end();

20-

}).listen(common.PORT, '::1', function() {

21-

const options = {

22-

host: 'localhost',

23-

port: common.PORT,

24-

family: 6,

25-

ciphers: ciphers,

26-

rejectUnauthorized: false,

27-

};

28-

// Will fail with ECONNREFUSED if the address family is not honored.

29-

https.get(options, common.mustCall(function() {

30-

assert.strictEqual('::1', this.socket.remoteAddress);

31-

this.destroy();

13+

const assert = require('assert');

14+

const https = require('https');

15+

const dns = require('dns');

16+17+

function runTest() {

18+

const ciphers = 'AECDH-NULL-SHA';

19+

https.createServer({ ciphers }, common.mustCall(function(req, res) {

20+

this.close();

21+

res.end();

22+

})).listen(common.PORT, '::1', common.mustCall(function() {

23+

const options = {

24+

host: 'localhost',

25+

port: common.PORT,

26+

family: 6,

27+

ciphers: ciphers,

28+

rejectUnauthorized: false,

29+

};

30+

// Will fail with ECONNREFUSED if the address family is not honored.

31+

https.get(options, common.mustCall(function() {

32+

assert.strictEqual('::1', this.socket.remoteAddress);

33+

this.destroy();

34+

}));

3235

}));

36+

}

37+38+

dns.lookup('localhost', {family: 6, all: true}, (err, addresses) => {

39+

if (err)

40+

throw err;

41+42+

if (addresses.some((val) => val.address === '::1'))

43+

runTest();

44+

else

45+

common.skip('localhost does not resolve to ::1');

3346

});