• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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