'use strict'; const common = require('../common'); const assert = require('assert'); const dgram = require('dgram'); const dns = require('dns'); for (const ctor of [dns.Resolver, dns.promises.Resolver]) { for (const timeout of [null, true, false, '', '2']) { assert.throws(() => new ctor({ timeout }), { code: 'ERR_INVALID_ARG_TYPE', name: 'TypeError', }); } for (const timeout of [-2, 4.2, 2 ** 31]) { assert.throws(() => new ctor({ timeout }), { code: 'ERR_OUT_OF_RANGE', name: 'RangeError', }); } for (const timeout of [-1, 0, 1]) new ctor({ timeout }); // OK } for (const timeout of [0, 1, 2]) { const server = dgram.createSocket('udp4'); server.bind(0, '127.0.0.1', common.mustCall(() => { const resolver = new dns.Resolver({ timeout }); resolver.setServers([`127.0.0.1:${server.address().port}`]); resolver.resolve4('nodejs.org', common.mustCall((err) => { assert.throws(() => { throw err; }, { code: 'ETIMEOUT', name: 'Error', }); server.close(); })); })); } for (const timeout of [0, 1, 2]) { const server = dgram.createSocket('udp4'); server.bind(0, '127.0.0.1', common.mustCall(() => { const resolver = new dns.promises.Resolver({ timeout }); resolver.setServers([`127.0.0.1:${server.address().port}`]); resolver.resolve4('nodejs.org').catch(common.mustCall((err) => { assert.throws(() => { throw err; }, { code: 'ETIMEOUT', name: 'Error', }); server.close(); })); })); }