summaryrefslogtreecommitdiff
path: root/test/parallel/test-trace-events-all.js
diff options
context:
space:
mode:
authorAndreas Madsen <amwebdk@gmail.com>2017-07-17 16:47:12 -0700
committerAndreas Madsen <amwebdk@gmail.com>2017-11-16 11:46:54 +0100
commitd217b2850efb9005819d55b697a37cbe5bd0003c (patch)
tree58177a7aa0d00ece9133ac6c2120e2adb940f527 /test/parallel/test-trace-events-all.js
parented0327b8868cc3df981f81be6409586b97d06ac8 (diff)
downloadandroid-node-v8-d217b2850efb9005819d55b697a37cbe5bd0003c.tar.gz
android-node-v8-d217b2850efb9005819d55b697a37cbe5bd0003c.tar.bz2
android-node-v8-d217b2850efb9005819d55b697a37cbe5bd0003c.zip
async_hooks: add trace events to async_hooks
This will allow trace event to record timing information for all asynchronous operations that are observed by async_hooks. PR-URL: https://github.com/nodejs/node/pull/15538 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test/parallel/test-trace-events-all.js')
-rw-r--r--test/parallel/test-trace-events-all.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/parallel/test-trace-events-all.js b/test/parallel/test-trace-events-all.js
new file mode 100644
index 0000000000..329f99f591
--- /dev/null
+++ b/test/parallel/test-trace-events-all.js
@@ -0,0 +1,56 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const cp = require('child_process');
+const fs = require('fs');
+
+const CODE =
+ 'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
+const FILE_NAME = 'node_trace.1.log';
+
+common.refreshTmpDir();
+process.chdir(common.tmpDir);
+
+const proc = cp.spawn(process.execPath,
+ [ '--trace-events-enabled', '-e', CODE ]);
+
+proc.once('exit', common.mustCall(() => {
+ assert(common.fileExists(FILE_NAME));
+ fs.readFile(FILE_NAME, common.mustCall((err, data) => {
+ const traces = JSON.parse(data.toString()).traceEvents;
+ assert(traces.length > 0);
+ // V8 trace events should be generated.
+ assert(traces.some((trace) => {
+ if (trace.pid !== proc.pid)
+ return false;
+ if (trace.cat !== 'v8')
+ return false;
+ if (trace.name !== 'V8.ScriptCompiler')
+ return false;
+ return true;
+ }));
+
+ // C++ async_hooks trace events should be generated.
+ assert(traces.some((trace) => {
+ if (trace.pid !== proc.pid)
+ return false;
+ if (trace.cat !== 'node.async_hooks')
+ return false;
+ if (trace.name !== 'TIMERWRAP')
+ return false;
+ return true;
+ }));
+
+
+ // JavaScript async_hooks trace events should be generated.
+ assert(traces.some((trace) => {
+ if (trace.pid !== proc.pid)
+ return false;
+ if (trace.cat !== 'node.async_hooks')
+ return false;
+ if (trace.name !== 'Timeout')
+ return false;
+ return true;
+ }));
+ }));
+}));