diff options
author | James M Snell <jasnell@gmail.com> | 2018-10-16 13:57:24 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2018-10-18 15:00:29 -0700 |
commit | 9c82a1e7ba8d5ce7e743f99348cf992965594f0a (patch) | |
tree | 0798e31149661c2d29181fd1beb14dc4958027d0 /test/parallel/test-trace-events-console.js | |
parent | bf7ed80475cfa7ae1ab6086c325f57557b75dffe (diff) | |
download | node-new-9c82a1e7ba8d5ce7e743f99348cf992965594f0a.tar.gz |
console: add trace-events for time and count
Add the `node.console` trace event category to capture
`console.count()`, `console.countReset()`, `console.time()`,
`console.timeLog()`, and `console.timeEnd()` to the trace
event log.
PR-URL: https://github.com/nodejs/node/pull/23703
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Diffstat (limited to 'test/parallel/test-trace-events-console.js')
-rw-r--r-- | test/parallel/test-trace-events-console.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/parallel/test-trace-events-console.js b/test/parallel/test-trace-events-console.js new file mode 100644 index 0000000000..a4860b5da0 --- /dev/null +++ b/test/parallel/test-trace-events-console.js @@ -0,0 +1,62 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const cp = require('child_process'); +const path = require('path'); +const fs = require('fs'); +const tmpdir = require('../common/tmpdir'); + +// Tests that node.console trace events for counters and time methods are +// emitted as expected. + +const names = [ + 'time::foo', + 'count::bar' +]; +const expectedCounts = [ 1, 2, 0 ]; +const expectedTimeTypes = [ 'b', 'n', 'e' ]; + +if (process.argv[2] === 'child') { + // The following console outputs exercise the test, causing node.console + // trace events to be emitted for the counter and time calls. + console.count('bar'); + console.count('bar'); + console.countReset('bar'); + console.time('foo'); + setImmediate(() => { + console.timeLog('foo'); + setImmediate(() => { + console.timeEnd('foo'); + }); + }); +} else { + tmpdir.refresh(); + + const proc = cp.fork(__filename, + [ 'child' ], { + cwd: tmpdir.path, + execArgv: [ + '--trace-event-categories', + 'node.console' + ] + }); + + proc.once('exit', common.mustCall(async () => { + const file = path.join(tmpdir.path, 'node_trace.1.log'); + + assert(fs.existsSync(file)); + const data = await fs.promises.readFile(file, { encoding: 'utf8' }); + JSON.parse(data).traceEvents + .filter((trace) => trace.cat !== '__metadata') + .forEach((trace) => { + assert.strictEqual(trace.pid, proc.pid); + assert(names.includes(trace.name)); + if (trace.name === 'count::bar') + assert.strictEqual(trace.args.data, expectedCounts.shift()); + else if (trace.name === 'time::foo') + assert.strictEqual(trace.ph, expectedTimeTypes.shift()); + }); + assert.strictEqual(expectedCounts.length, 0); + assert.strictEqual(expectedTimeTypes.length, 0); + })); +} |