UNPKG

1.28 kBJavaScriptView Raw
1'use strict';
2
3// stdlib
4var tap = require('tap');
5var test = tap.test;
6var EventEmitter = require('events').EventEmitter;
7
8// module under test
9var context = require('../context.js');
10
11// multiple contexts in use
12var tracer = context.createNamespace('tracer');
13
14function Trace(harvester) {
15 this.harvester = harvester;
16}
17
18Trace.prototype.runHandler = function (callback) {
19 var wrapped = tracer.bind(function () {
20 callback();
21 this.harvester.emit('finished', tracer.get('transaction'));
22 }.bind(this));
23 wrapped();
24};
25
26
27test("simple tracer built on contexts", function (t) {
28 t.plan(6);
29
30 var harvester = new EventEmitter();
31 var trace = new Trace(harvester);
32
33 harvester.on('finished', function (transaction) {
34 t.ok(transaction, "transaction should have been passed in");
35 t.equal(transaction.status, 'ok', "transaction should have finished OK");
36 t.equal(Object.keys(process.namespaces).length, 1, "Should only have one namespace.");
37 });
38
39 trace.runHandler(function inScope() {
40 t.ok(tracer.active, "tracer should have an active context");
41 tracer.set('transaction', {status : 'ok'});
42 t.ok(tracer.get('transaction'), "can retrieve newly-set value");
43 t.equal(tracer.get('transaction').status, 'ok', "value should be correct");
44 });
45});