mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
e738edce6a
Subsystems: blob, child_process, common, crypto, http, http2, readline, repl, snapshot, trace_events PR-URL: https://github.com/nodejs/node/pull/49127 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
// Flags: --no-warnings
|
|
|
|
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cp = require('child_process');
|
|
const fs = require('fs');
|
|
const tmpdir = require('../common/tmpdir');
|
|
|
|
// This tests the emission of node.environment trace events
|
|
|
|
const names = new Set([
|
|
'Environment',
|
|
'RunAndClearNativeImmediates',
|
|
'CheckImmediate',
|
|
'RunTimers',
|
|
'BeforeExit',
|
|
'RunCleanup',
|
|
'AtExit',
|
|
]);
|
|
|
|
if (process.argv[2] === 'child') {
|
|
/* eslint-disable no-unused-expressions */
|
|
// This is just so that the child has something to do.
|
|
1 + 1;
|
|
// These ensure that the RunTimers, CheckImmediate, and
|
|
// RunAndClearNativeImmediates appear in the list.
|
|
setImmediate(() => { 1 + 1; });
|
|
setTimeout(() => { 1 + 1; }, 1);
|
|
/* eslint-enable no-unused-expressions */
|
|
} else {
|
|
tmpdir.refresh();
|
|
|
|
const proc = cp.fork(__filename,
|
|
[ 'child' ], {
|
|
cwd: tmpdir.path,
|
|
execArgv: [
|
|
'--trace-event-categories',
|
|
'node.environment',
|
|
]
|
|
});
|
|
|
|
proc.once('exit', common.mustCall(async () => {
|
|
const file = tmpdir.resolve('node_trace.1.log');
|
|
const checkSet = new Set();
|
|
|
|
assert(fs.existsSync(file));
|
|
const data = await fs.promises.readFile(file);
|
|
JSON.parse(data.toString()).traceEvents
|
|
.filter((trace) => trace.cat !== '__metadata')
|
|
.forEach((trace) => {
|
|
assert.strictEqual(trace.pid, proc.pid);
|
|
assert(names.has(trace.name));
|
|
checkSet.add(trace.name);
|
|
});
|
|
|
|
assert.deepStrictEqual(names, checkSet);
|
|
}));
|
|
}
|