diff options
author | Andreas Madsen <amwebdk@gmail.com> | 2017-07-17 16:47:12 -0700 |
---|---|---|
committer | Andreas Madsen <amwebdk@gmail.com> | 2017-11-16 11:46:54 +0100 |
commit | d217b2850efb9005819d55b697a37cbe5bd0003c (patch) | |
tree | 58177a7aa0d00ece9133ac6c2120e2adb940f527 /test/parallel/test-trace-events-all.js | |
parent | ed0327b8868cc3df981f81be6409586b97d06ac8 (diff) | |
download | android-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.js | 56 |
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; + })); + })); +})); |