hawkly
Version:
An OpenTracing compatible tracer for hawkly.io
109 lines • 11 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const sinon = require("sinon");
const index_1 = require("./index");
const ava_1 = require("ava");
// Helper function to generate a random integer
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// This file contains tests for the public interface
ava_1.test('Single Span', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const recordCallback = sinon.spy();
const operationName = 'test1';
const tracer = new index_1.Tracer({
accessToken: 'testAccessToken',
componentName: 'indexSpec/singleSpan',
recordCallback,
});
const x = getRandomInt(2, 50);
const y = getRandomInt(2, 50);
const span = tracer.startSpan(operationName);
span.logEvent('receivedInput', { x, y });
const result = x + y;
span.logEvent('finishedCalculation');
span.finish();
t.true(result === x + y);
t.true(recordCallback.calledOnce);
// Check the report object is intact O_O
t.true(recordCallback.args[0][0].operationName === operationName);
t.true(typeof recordCallback.args[0][0].traceId === 'string', 'traceId is not a string');
t.true(typeof recordCallback.args[0][0].spanId === 'string', 'spanId is not a string');
}));
ava_1.test('Span with single childOf', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const recordCallback = sinon.spy();
const operationName = 'test2';
const tracer = new index_1.Tracer({
accessToken: 'testAccessToken',
componentName: 'indexSpec/SpanWithSingleChild',
recordCallback,
});
const x = getRandomInt(2, 50);
const y = getRandomInt(2, 50);
const z = getRandomInt(2, 50);
// create the first span
const parentSpan = tracer.startSpan(operationName);
parentSpan.logEvent('receivedInput', { x, y });
const result = x + y;
// Run our second operation in an async function
function childFunction(parentSpan, result) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const childSpan = tracer.startSpan('childOf2', { childOf: parentSpan });
const _childResult = result * z;
childSpan.logEvent('completed math');
childSpan.finish();
return _childResult;
});
}
const childResult = yield childFunction(parentSpan, result);
parentSpan.logEvent('finishedCalculation', { childResult });
parentSpan.finish();
// t.true(result === x + y);
t.true(recordCallback.calledTwice);
}));
ava_1.test('Span with single followsFrom', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const operationName = 'test3';
const recordCallback = sinon.spy();
const tracer = new index_1.Tracer({
accessToken: 'testAccessToken',
componentName: 'indexSpec/SpanWithSingleFollowsFrom',
recordCallback,
});
// create the first span
const parentSpan = tracer.startSpan(operationName);
const childSpan = tracer.startSpan('followsFrom', { followsFrom: parentSpan });
childSpan.logEvent('created the child span');
parentSpan.finish();
childSpan.finish();
// t.true(result === x + y);
t.true(recordCallback.calledTwice);
t.is(parentSpan.context().referenceType, 'root');
t.is(childSpan.context().referenceType, 'followsFrom');
t.is(childSpan.context().parentId, parentSpan.context().spanId);
t.is(childSpan.context().traceId, parentSpan.context().traceId);
}));
ava_1.test('Span with single followsFrom and childOf', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const operationName = 'test3';
const recordCallback = sinon.spy();
const tracer = new index_1.Tracer({
accessToken: 'testAccessToken',
componentName: 'indexSpec/SpanWithSingleFollowsFrom',
recordCallback,
});
// create the first span
const grandParentSpan = tracer.startSpan(operationName);
const parentSpan = tracer.startSpan(operationName, { childOf: grandParentSpan });
const childSpan = tracer.startSpan('followsFrom', { followsFrom: parentSpan });
parentSpan.finish();
grandParentSpan.finish();
childSpan.finish();
t.true(recordCallback.calledThrice);
t.is(grandParentSpan.context().referenceType, 'root');
t.is(parentSpan.context().referenceType, 'childOf');
t.is(parentSpan.context().parentId, grandParentSpan.context().spanId);
t.is(childSpan.context().referenceType, 'followsFrom');
t.is(childSpan.context().parentId, parentSpan.context().spanId);
t.is(childSpan.context().traceId, parentSpan.context().traceId, grandParentSpan.context().traceId);
}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQixtQ0FBaUM7QUFDakMsNkJBQTJCO0FBRTNCLCtDQUErQztBQUMvQyxzQkFBc0IsR0FBVyxFQUFFLEdBQVc7SUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzRCxDQUFDO0FBRUQsb0RBQW9EO0FBRXBELFVBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBTyxDQUFNO0lBQy9CLE1BQU0sY0FBYyxHQUFRLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxNQUFNLGFBQWEsR0FBVyxPQUFPLENBQUM7SUFFdEMsTUFBTSxNQUFNLEdBQVEsSUFBSSxjQUFNLENBQUM7UUFDN0IsV0FBVyxFQUFFLGlCQUFpQjtRQUM5QixhQUFhLEVBQUUsc0JBQXNCO1FBQ3JDLGNBQWM7S0FDZixDQUFDLENBQUM7SUFHSCxNQUFNLENBQUMsR0FBVyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sQ0FBQyxHQUFXLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFdEMsTUFBTSxJQUFJLEdBQVEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxNQUFNLEVB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