simple.tap.js 1.2 KB

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