nestjs-otel
Version:
NestJS OpenTelemetry Library
47 lines (46 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const api_1 = require("@opentelemetry/api");
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
const wide_event_span_processor_1 = require("./wide-event.span-processor");
describe("WideEventSpanProcessor", () => {
let processor;
let provider;
beforeAll(() => {
provider = new sdk_trace_node_1.NodeTracerProvider();
provider.register();
});
beforeEach(() => {
processor = new wide_event_span_processor_1.WideEventSpanProcessor();
});
afterAll(async () => {
await provider.shutdown();
});
const startSpan = (name) => api_1.trace.getTracer("test").startSpan(name);
it("should register a parentless span as the local root for its trace", () => {
const root = startSpan("GET /test");
processor.onStart(root, api_1.context.active());
expect((0, wide_event_span_processor_1.getLocalRootSpan)(root.spanContext().traceId)).toBe(root);
root.end();
});
it("should not register a span whose parent is local", () => {
const root = startSpan("GET /test");
processor.onStart(root, api_1.context.active());
const child = api_1.trace
.getTracer("test")
.startSpan("child", undefined, api_1.trace.setSpan(api_1.context.active(), root));
processor.onStart(child, api_1.context.active());
// local root for the trace is still the root, not the child
expect((0, wide_event_span_processor_1.getLocalRootSpan)(root.spanContext().traceId)).toBe(root);
child.end();
root.end();
});
it("should drop the local root from the registry when it ends", () => {
const root = startSpan("GET /test");
const traceId = root.spanContext().traceId;
processor.onStart(root, api_1.context.active());
processor.onEnd(root);
expect((0, wide_event_span_processor_1.getLocalRootSpan)(traceId)).toBeUndefined();
root.end();
});
});