summaryrefslogtreecommitdiff
path: root/test/internet
diff options
context:
space:
mode:
authorChin Huang <chhuang@us.ibm.com>2018-07-10 22:42:41 +0000
committerAnna Henningsen <anna@addaleax.net>2018-09-02 21:35:35 +0200
commitb366de582bb04ba9efd7f18306a39bf42f87d7f6 (patch)
tree2e2515c507dbcbf2da742b0d1d830e267ac9e2ed /test/internet
parent25d29da10adfa00cb10e7ff89535749453add775 (diff)
downloadandroid-node-v8-b366de582bb04ba9efd7f18306a39bf42f87d7f6.tar.gz
android-node-v8-b366de582bb04ba9efd7f18306a39bf42f87d7f6.tar.bz2
android-node-v8-b366de582bb04ba9efd7f18306a39bf42f87d7f6.zip
src: add trace points to dns
Add trace points to dns under node.dns.native category. Emit trace events for dns operations. Use the nestable async events instead of deprecated ones. Include test code to verify the trace log. The trace name is stored as const char* class variable. The test code is to check each operation in separate sync processes. Refs: https://github.com/nodejs/node/pull/19157 PR-URL: https://github.com/nodejs/node/pull/21840 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Diffstat (limited to 'test/internet')
-rw-r--r--test/internet/test-trace-events-dns.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/internet/test-trace-events-dns.js b/test/internet/test-trace-events-dns.js
new file mode 100644
index 0000000000..3eb787a2ca
--- /dev/null
+++ b/test/internet/test-trace-events-dns.js
@@ -0,0 +1,68 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const cp = require('child_process');
+const path = require('path');
+const tmpdir = require('../common/tmpdir');
+const fs = require('fs');
+const util = require('util');
+
+if (!common.isMainThread)
+ common.skip('process.chdir is not available in Workers');
+
+const traceFile = 'node_trace.1.log';
+
+tmpdir.refresh();
+process.chdir(tmpdir.path);
+
+const test_str = 'const dns = require("dns");' +
+'const options = {' +
+' family: 4,' +
+' hints: dns.ADDRCONFIG | dns.V4MAPPED,' +
+'};';
+
+const tests = {
+ 'lookup': 'dns.lookup("example.com", options, (err, address, family) => {});',
+ 'lookupService': 'dns.lookupService("127.0.0.1", 22, ' +
+ '(err, hostname, service) => {});',
+ 'reverse': 'dns.reverse("8.8.8.8", (err, hostnames) => {});',
+ 'resolveAny': 'dns.resolveAny("example.com", (err, res) => {});',
+ 'resolve4': 'dns.resolve4("example.com", (err, res) => {});',
+ 'resolve6': 'dns.resolve6("example.com", (err, res) => {});',
+ 'resolveCname': 'dns.resolveCname("example.com", (err, res) => {});',
+ 'resolveMx': 'dns.resolveMx("example.com", (err, res) => {});',
+ 'resolveNs': 'dns.resolveNs("example.com", (err, res) => {});',
+ 'resolveTxt': 'dns.resolveTxt("example.com", (err, res) => {});',
+ 'resolveSrv': 'dns.resolveSrv("example.com", (err, res) => {});',
+ 'resolvePtr': 'dns.resolvePtr("example.com", (err, res) => {});',
+ 'resolveNaptr': 'dns.resolveNaptr("example.com", (err, res) => {});',
+ 'resolveSoa': 'dns.resolveSoa("example.com", (err, res) => {});'
+};
+
+for (const tr in tests) {
+ const proc = cp.spawnSync(process.execPath,
+ [ '--trace-event-categories',
+ 'node.dns.native',
+ '-e',
+ test_str + tests[tr]
+ ],
+ { encoding: 'utf8' });
+
+ // Make sure the operation is successful.
+ assert.strictEqual(proc.status, 0, `${tr}:\n${util.inspect(proc)}`);
+
+ const file = path.join(tmpdir.path, traceFile);
+
+ // Confirm that trace log file is created.
+ assert(common.fileExists(file));
+ const data = fs.readFileSync(file);
+ const traces = JSON.parse(data.toString()).traceEvents
+ .filter((trace) => trace.cat !== '__metadata');
+
+ assert(traces.length > 0);
+
+ // DNS native trace events should be generated.
+ assert(traces.some((trace) => {
+ return (trace.name === tr && trace.pid === proc.pid);
+ }));
+}