1 | 'use strict';
|
2 |
|
3 |
|
4 | var tap = require('tap');
|
5 | var test = tap.test;
|
6 | var EventEmitter = require('events').EventEmitter;
|
7 |
|
8 |
|
9 | var context = require('../context.js');
|
10 |
|
11 |
|
12 | var tracer = context.createNamespace('tracer');
|
13 |
|
14 | function Trace(harvester) {
|
15 | this.harvester = harvester;
|
16 | }
|
17 |
|
18 | Trace.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 |
|
27 | test("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 | });
|