11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ciconst common = require('../common'); 31cb0ef41Sopenharmony_ciconst assert = require('assert'); 41cb0ef41Sopenharmony_ciconst cp = require('child_process'); 51cb0ef41Sopenharmony_ciconst fs = require('fs'); 61cb0ef41Sopenharmony_ciconst path = require('path'); 71cb0ef41Sopenharmony_ci 81cb0ef41Sopenharmony_ciconst CODE = ` 91cb0ef41Sopenharmony_ci const { internalBinding } = require('internal/test/binding'); 101cb0ef41Sopenharmony_ci const { trace } = internalBinding('trace_events'); 111cb0ef41Sopenharmony_ci trace('b'.charCodeAt(0), 'custom', 121cb0ef41Sopenharmony_ci 'type-value', 10, {'extra-value': 20 }); 131cb0ef41Sopenharmony_ci trace('b'.charCodeAt(0), 'custom', 141cb0ef41Sopenharmony_ci 'type-value', 20, {'first-value': 20, 'second-value': 30 }); 151cb0ef41Sopenharmony_ci trace('b'.charCodeAt(0), 'custom', 'type-value', 30); 161cb0ef41Sopenharmony_ci trace('b'.charCodeAt(0), 'missing', 171cb0ef41Sopenharmony_ci 'type-value', 10, {'extra-value': 20 }); 181cb0ef41Sopenharmony_ci`; 191cb0ef41Sopenharmony_ci 201cb0ef41Sopenharmony_ciconst tmpdir = require('../common/tmpdir'); 211cb0ef41Sopenharmony_citmpdir.refresh(); 221cb0ef41Sopenharmony_ciconst FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log'); 231cb0ef41Sopenharmony_ci 241cb0ef41Sopenharmony_ciconst proc = cp.spawn(process.execPath, 251cb0ef41Sopenharmony_ci [ '--trace-event-categories', 'custom', 261cb0ef41Sopenharmony_ci '--no-warnings', 271cb0ef41Sopenharmony_ci '--expose-internals', 281cb0ef41Sopenharmony_ci '-e', CODE ], 291cb0ef41Sopenharmony_ci { cwd: tmpdir.path }); 301cb0ef41Sopenharmony_ci 311cb0ef41Sopenharmony_ciproc.once('exit', common.mustCall(() => { 321cb0ef41Sopenharmony_ci assert(fs.existsSync(FILE_NAME)); 331cb0ef41Sopenharmony_ci fs.readFile(FILE_NAME, common.mustCall((err, data) => { 341cb0ef41Sopenharmony_ci const traces = JSON.parse(data.toString()).traceEvents 351cb0ef41Sopenharmony_ci .filter((trace) => trace.cat !== '__metadata'); 361cb0ef41Sopenharmony_ci assert.strictEqual(traces.length, 3); 371cb0ef41Sopenharmony_ci 381cb0ef41Sopenharmony_ci assert.strictEqual(traces[0].pid, proc.pid); 391cb0ef41Sopenharmony_ci assert.strictEqual(traces[0].ph, 'b'); 401cb0ef41Sopenharmony_ci assert.strictEqual(traces[0].cat, 'custom'); 411cb0ef41Sopenharmony_ci assert.strictEqual(traces[0].name, 'type-value'); 421cb0ef41Sopenharmony_ci assert.strictEqual(traces[0].id, '0xa'); 431cb0ef41Sopenharmony_ci assert.deepStrictEqual(traces[0].args.data, { 'extra-value': 20 }); 441cb0ef41Sopenharmony_ci 451cb0ef41Sopenharmony_ci assert.strictEqual(traces[1].pid, proc.pid); 461cb0ef41Sopenharmony_ci assert.strictEqual(traces[1].ph, 'b'); 471cb0ef41Sopenharmony_ci assert.strictEqual(traces[1].cat, 'custom'); 481cb0ef41Sopenharmony_ci assert.strictEqual(traces[1].name, 'type-value'); 491cb0ef41Sopenharmony_ci assert.strictEqual(traces[1].id, '0x14'); 501cb0ef41Sopenharmony_ci assert.deepStrictEqual(traces[1].args.data, { 511cb0ef41Sopenharmony_ci 'first-value': 20, 521cb0ef41Sopenharmony_ci 'second-value': 30 531cb0ef41Sopenharmony_ci }); 541cb0ef41Sopenharmony_ci 551cb0ef41Sopenharmony_ci assert.strictEqual(traces[2].pid, proc.pid); 561cb0ef41Sopenharmony_ci assert.strictEqual(traces[2].ph, 'b'); 571cb0ef41Sopenharmony_ci assert.strictEqual(traces[2].cat, 'custom'); 581cb0ef41Sopenharmony_ci assert.strictEqual(traces[2].name, 'type-value'); 591cb0ef41Sopenharmony_ci assert.strictEqual(traces[2].id, '0x1e'); 601cb0ef41Sopenharmony_ci assert.deepStrictEqual(traces[2].args, { }); 611cb0ef41Sopenharmony_ci })); 621cb0ef41Sopenharmony_ci})); 63