11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ciconst common = require('../common'); 41cb0ef41Sopenharmony_ciconst assert = require('assert'); 51cb0ef41Sopenharmony_ciconst dns = require('dns'); 61cb0ef41Sopenharmony_ciconst { PerformanceObserver } = require('perf_hooks'); 71cb0ef41Sopenharmony_ci 81cb0ef41Sopenharmony_ciconst entries = []; 91cb0ef41Sopenharmony_ciconst obs = new PerformanceObserver((items) => { 101cb0ef41Sopenharmony_ci entries.push(...items.getEntries()); 111cb0ef41Sopenharmony_ci}); 121cb0ef41Sopenharmony_ci 131cb0ef41Sopenharmony_ciobs.observe({ type: 'dns' }); 141cb0ef41Sopenharmony_ci 151cb0ef41Sopenharmony_cilet count = 0; 161cb0ef41Sopenharmony_ci 171cb0ef41Sopenharmony_cifunction inc() { 181cb0ef41Sopenharmony_ci count++; 191cb0ef41Sopenharmony_ci} 201cb0ef41Sopenharmony_ci 211cb0ef41Sopenharmony_ci// If DNS resolution fails, skip it 221cb0ef41Sopenharmony_ci// https://github.com/nodejs/node/issues/44003 231cb0ef41Sopenharmony_cidns.lookup('localhost', common.mustCall((err) => { !err && inc(); })); 241cb0ef41Sopenharmony_cidns.lookupService('127.0.0.1', 80, common.mustCall((err) => { !err && inc(); })); 251cb0ef41Sopenharmony_cidns.resolveAny('localhost', common.mustCall((err) => { !err && inc(); })); 261cb0ef41Sopenharmony_ci 271cb0ef41Sopenharmony_cidns.promises.lookup('localhost').then(inc).catch(() => {}); 281cb0ef41Sopenharmony_cidns.promises.lookupService('127.0.0.1', 80).then(inc).catch(() => {}); 291cb0ef41Sopenharmony_cidns.promises.resolveAny('localhost').then(inc).catch(() => {}); 301cb0ef41Sopenharmony_ci 311cb0ef41Sopenharmony_ciprocess.on('exit', () => { 321cb0ef41Sopenharmony_ci assert.strictEqual(entries.length, count); 331cb0ef41Sopenharmony_ci entries.forEach((entry) => { 341cb0ef41Sopenharmony_ci assert.strictEqual(!!entry.name, true); 351cb0ef41Sopenharmony_ci assert.strictEqual(entry.entryType, 'dns'); 361cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.startTime, 'number'); 371cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.duration, 'number'); 381cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail, 'object'); 391cb0ef41Sopenharmony_ci switch (entry.name) { 401cb0ef41Sopenharmony_ci case 'lookup': 411cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.hostname, 'string'); 421cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.family, 'number'); 431cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.hints, 'number'); 441cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.verbatim, 'boolean'); 451cb0ef41Sopenharmony_ci assert.strictEqual(Array.isArray(entry.detail.addresses), true); 461cb0ef41Sopenharmony_ci break; 471cb0ef41Sopenharmony_ci case 'lookupService': 481cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.host, 'string'); 491cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.port, 'number'); 501cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.hostname, 'string'); 511cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.service, 'string'); 521cb0ef41Sopenharmony_ci break; 531cb0ef41Sopenharmony_ci case 'queryAny': 541cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.host, 'string'); 551cb0ef41Sopenharmony_ci assert.strictEqual(typeof entry.detail.ttl, 'boolean'); 561cb0ef41Sopenharmony_ci assert.strictEqual(Array.isArray(entry.detail.result), true); 571cb0ef41Sopenharmony_ci break; 581cb0ef41Sopenharmony_ci } 591cb0ef41Sopenharmony_ci }); 601cb0ef41Sopenharmony_ci}); 61