UNPKG

1.22 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 (handler) {
19 var trace = tracer.run(handler);
20 this.harvester.emit('finished', trace.transaction);
21};
22
23
24test("simple tracer built on contexts", function (t) {
25 t.plan(6);
26
27 var harvester = new EventEmitter();
28 var trace = new Trace(harvester);
29
30 harvester.on('finished', function (transaction) {
31 t.ok(transaction, "transaction should have been passed in");
32 t.equal(transaction.status, 'ok', "transaction should have finished OK");
33 t.equal(Object.keys(process.namespaces).length, 1, "Should only have one namespace.");
34 });
35
36 trace.runHandler(function inScope() {
37 t.ok(tracer.active, "tracer should have an active context");
38 tracer.set('transaction', {status : 'ok'});
39 t.ok(tracer.get('transaction'), "can retrieve newly-set value");
40 t.equal(tracer.get('transaction').status, 'ok', "value should be correct");
41 });
42});