UNPKG

heroku-debug

Version:
144 lines (129 loc) 3.65 kB
'use strict' var test = require('tape') var mockInstrumentation = require('./_instrumentation') var Transaction = require('../../lib/instrumentation/transaction') var Trace = require('../../lib/instrumentation/trace') test('init', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent, 'name', 'type', 'result') t.equal(trans.name, 'name') t.equal(trans.type, 'type') t.equal(trans.result, 'result') t.equal(trans.ended, false) t.deepEqual(trans.traces, []) t.end() }) test('#end() - no traces', function (t) { var ins = mockInstrumentation(function (added) { t.equal(added.ended, true) t.equal(added, trans) t.equal(trans.traces.length, 1) t.deepEqual(trans.traces, [trans._rootTrace]) t.end() }) var trans = new Transaction(ins._agent) trans.end() }) test('#end() - with traces', function (t) { var ins = mockInstrumentation(function (added) { t.equal(added.ended, true) t.equal(added, trans) t.equal(trans.traces.length, 2) t.deepEqual(trans.traces, [trace, trans._rootTrace]) t.end() }) var trans = new Transaction(ins._agent) var trace = new Trace(trans) trace.start() trace.end() trans.end() }) test('#duration()', function (t) { var ins = mockInstrumentation(function (added) { t.ok(added.duration() > 24) t.ok(added.duration() < 35) t.end() }) var trans = new Transaction(ins._agent) setTimeout(function () { trans.end() }, 25) }) test('#duration() - un-ended transaction', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent) t.equal(trans.duration(), null) t.end() }) test('#setDefaultName() - with initial value', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent, 'default-1') t.equal(trans.name, 'default-1') trans.setDefaultName('default-2') t.equal(trans.name, 'default-2') t.end() }) test('#setDefaultName() - no initial value', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent) t.equal(trans.name, '') trans.setDefaultName('default') t.equal(trans.name, 'default') t.end() }) test('name - custom first, then default', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent) trans.name = 'custom' trans.setDefaultName('default') t.equal(trans.name, 'custom') t.end() }) test('name - default first, then custom', function (t) { var ins = mockInstrumentation(function (added) { t.ok(false) }) var trans = new Transaction(ins._agent) trans.setDefaultName('default') trans.name = 'custom' t.equal(trans.name, 'custom') t.end() }) test('parallel transactions', function (t) { var calls = 0 var ins = mockInstrumentation(function (added) { t.equal(added._rootTrace.signature, 'transaction') t.equal(added.traces.length, 1, added.name + ' should have 1 trace') t.equal(added.traces[0], added._rootTrace) calls++ if (calls === 1) { t.equal(added.name, 'second') } else if (calls === 2) { t.equal(added.name, 'first') t.end() } }) ins.currentTransaction = null setImmediate(function () { var t1 = new Transaction(ins._agent, 'first') setTimeout(function () { t1.end() }, 100) }) setTimeout(function () { var t2 = new Transaction(ins._agent, 'second') setTimeout(function () { t2.end() }, 25) }, 25) })