1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const cp = require('child_process'); 5const fs = require('fs'); 6const path = require('path'); 7const tmpdir = require('../common/tmpdir'); 8 9const names = [ 10 'environment', 11 'nodeStart', 12 'v8Start', 13 'loopStart', 14 'loopExit', 15 'bootstrapComplete', 16]; 17 18if (process.argv[2] === 'child') { 19 1 + 1; // eslint-disable-line no-unused-expressions 20} else { 21 tmpdir.refresh(); 22 23 const proc = cp.fork(__filename, 24 [ 'child' ], { 25 cwd: tmpdir.path, 26 execArgv: [ 27 '--trace-event-categories', 28 'node.bootstrap', 29 ] 30 }); 31 32 proc.once('exit', common.mustCall(() => { 33 const file = path.join(tmpdir.path, 'node_trace.1.log'); 34 35 assert(fs.existsSync(file)); 36 fs.readFile(file, common.mustCall((err, data) => { 37 const traces = JSON.parse(data.toString()).traceEvents 38 .filter((trace) => trace.cat !== '__metadata'); 39 traces.forEach((trace) => { 40 assert.strictEqual(trace.pid, proc.pid); 41 assert(names.includes(trace.name)); 42 }); 43 })); 44 })); 45} 46