mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
7e89369166
PR-URL: https://github.com/nodejs/node/pull/52492 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
62 lines
2.2 KiB
JavaScript
62 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const dns = require('dns');
|
|
const { PerformanceObserver } = require('perf_hooks');
|
|
|
|
const entries = [];
|
|
const obs = new PerformanceObserver((items) => {
|
|
entries.push(...items.getEntries());
|
|
});
|
|
|
|
obs.observe({ type: 'dns' });
|
|
|
|
let count = 0;
|
|
|
|
function inc() {
|
|
count++;
|
|
}
|
|
|
|
// If DNS resolution fails, skip it
|
|
// https://github.com/nodejs/node/issues/44003
|
|
dns.lookup('localhost', common.mustCall((err) => { !err && inc(); }));
|
|
dns.lookupService('127.0.0.1', 80, common.mustCall((err) => { !err && inc(); }));
|
|
dns.resolveAny('localhost', common.mustCall((err) => { !err && inc(); }));
|
|
|
|
dns.promises.lookup('localhost').then(inc).catch(() => {});
|
|
dns.promises.lookupService('127.0.0.1', 80).then(inc).catch(() => {});
|
|
dns.promises.resolveAny('localhost').then(inc).catch(() => {});
|
|
|
|
process.on('exit', () => {
|
|
assert.strictEqual(entries.length, count);
|
|
entries.forEach((entry) => {
|
|
assert.strictEqual(!!entry.name, true);
|
|
assert.strictEqual(entry.entryType, 'dns');
|
|
assert.strictEqual(typeof entry.startTime, 'number');
|
|
assert.strictEqual(typeof entry.duration, 'number');
|
|
assert.strictEqual(typeof entry.detail, 'object');
|
|
switch (entry.name) {
|
|
case 'lookup':
|
|
assert.strictEqual(typeof entry.detail.hostname, 'string');
|
|
assert.strictEqual(typeof entry.detail.family, 'number');
|
|
assert.strictEqual(typeof entry.detail.hints, 'number');
|
|
assert.strictEqual(typeof entry.detail.verbatim, 'boolean');
|
|
assert.strictEqual(typeof entry.detail.order, 'string');
|
|
assert.strictEqual(Array.isArray(entry.detail.addresses), true);
|
|
break;
|
|
case 'lookupService':
|
|
assert.strictEqual(typeof entry.detail.host, 'string');
|
|
assert.strictEqual(typeof entry.detail.port, 'number');
|
|
assert.strictEqual(typeof entry.detail.hostname, 'string');
|
|
assert.strictEqual(typeof entry.detail.service, 'string');
|
|
break;
|
|
case 'queryAny':
|
|
assert.strictEqual(typeof entry.detail.host, 'string');
|
|
assert.strictEqual(typeof entry.detail.ttl, 'boolean');
|
|
assert.strictEqual(Array.isArray(entry.detail.result), true);
|
|
break;
|
|
}
|
|
});
|
|
});
|