1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const dgram = require('dgram'); 5const dns = require('dns'); 6 7for (const ctor of [dns.Resolver, dns.promises.Resolver]) { 8 for (const timeout of [null, true, false, '', '2']) { 9 assert.throws(() => new ctor({ timeout }), { 10 code: 'ERR_INVALID_ARG_TYPE', 11 name: 'TypeError', 12 }); 13 } 14 15 for (const timeout of [-2, 4.2, 2 ** 31]) { 16 assert.throws(() => new ctor({ timeout }), { 17 code: 'ERR_OUT_OF_RANGE', 18 name: 'RangeError', 19 }); 20 } 21 22 for (const timeout of [-1, 0, 1]) new ctor({ timeout }); // OK 23} 24 25for (const timeout of [0, 1, 2]) { 26 const server = dgram.createSocket('udp4'); 27 server.bind(0, '127.0.0.1', common.mustCall(() => { 28 const resolver = new dns.Resolver({ timeout }); 29 resolver.setServers([`127.0.0.1:${server.address().port}`]); 30 resolver.resolve4('nodejs.org', common.mustCall((err) => { 31 assert.throws(() => { throw err; }, { 32 code: 'ETIMEOUT', 33 name: 'Error', 34 }); 35 server.close(); 36 })); 37 })); 38} 39 40for (const timeout of [0, 1, 2]) { 41 const server = dgram.createSocket('udp4'); 42 server.bind(0, '127.0.0.1', common.mustCall(() => { 43 const resolver = new dns.promises.Resolver({ timeout }); 44 resolver.setServers([`127.0.0.1:${server.address().port}`]); 45 resolver.resolve4('nodejs.org').catch(common.mustCall((err) => { 46 assert.throws(() => { throw err; }, { 47 code: 'ETIMEOUT', 48 name: 'Error', 49 }); 50 server.close(); 51 })); 52 })); 53} 54