1'use strict'; 2 3const common = require('../common'); 4const dc = require('diagnostics_channel'); 5const assert = require('assert'); 6 7const channel = dc.tracingChannel('test'); 8 9const expectedResult = { foo: 'bar' }; 10const input = { foo: 'bar' }; 11const thisArg = { baz: 'buz' }; 12const arg = { baz: 'buz' }; 13 14function check(found) { 15 assert.strictEqual(found, input); 16} 17 18const handlers = { 19 start: common.mustCall(check), 20 end: common.mustCall((found) => { 21 check(found); 22 assert.strictEqual(found.result, expectedResult); 23 }), 24 asyncStart: common.mustNotCall(), 25 asyncEnd: common.mustNotCall(), 26 error: common.mustNotCall() 27}; 28 29assert.strictEqual(channel.start.hasSubscribers, false); 30channel.subscribe(handlers); 31assert.strictEqual(channel.start.hasSubscribers, true); 32const result1 = channel.traceSync(function(arg1) { 33 assert.strictEqual(arg1, arg); 34 assert.strictEqual(this, thisArg); 35 return expectedResult; 36}, input, thisArg, arg); 37assert.strictEqual(result1, expectedResult); 38 39channel.unsubscribe(handlers); 40assert.strictEqual(channel.start.hasSubscribers, false); 41const result2 = channel.traceSync(function(arg1) { 42 assert.strictEqual(arg1, arg); 43 assert.strictEqual(this, thisArg); 44 return expectedResult; 45}, input, thisArg, arg); 46assert.strictEqual(result2, expectedResult); 47