Skip to content

Commit 375112c

Browse files
committed
add unit tests
1 parent e0259a0 commit 375112c

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

src/index.spec.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
sendDistributionMetric,
99
sendDistributionMetricWithDate,
1010
_metricsQueue,
11+
emitTelemetryOnErrorOutsideHandler,
1112
} from "./index";
1213
import { incrementErrorsMetric, incrementInvocationsMetric } from "./metrics/enhanced-metrics";
1314
import { LogLevel, setLogLevel } from "./utils";
@@ -17,6 +18,8 @@ import { DatadogTraceHeaders } from "./trace/context/extractor";
1718
import { SpanContextWrapper } from "./trace/span-context-wrapper";
1819
import { TraceSource } from "./trace/trace-context-service";
1920
import { inflateSync } from "zlib";
21+
import { MetricsListener } from "./metrics/listener";
22+
import { SpanOptions, TracerWrapper } from "./trace/tracer-wrapper";
2023

2124
jest.mock("./metrics/enhanced-metrics");
2225

@@ -469,3 +472,58 @@ describe("sendDistributionMetricWithDate", () => {
469472
expect(_metricsQueue.length).toBe(1);
470473
});
471474
});
475+
476+
describe("emitTelemetryOnErrorOutsideHandler", () => {
477+
let mockedStartSpan = jest.spyOn(TracerWrapper.prototype, "startSpan");
478+
beforeEach(() => {
479+
jest.spyOn(MetricsListener.prototype, "onStartInvocation").mockImplementation();
480+
jest.spyOn(TracerWrapper.prototype, "isTracerAvailable", "get").mockImplementation(() => true);
481+
});
482+
afterEach(() => {
483+
mockedIncrementErrors.mockClear();
484+
mockedStartSpan.mockClear();
485+
});
486+
it("emits a metric when enhanced metrics are enabled", async () => {
487+
process.env.DD_ENHANCED_METRICS = "true";
488+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
489+
expect(mockedIncrementErrors).toBeCalledTimes(1);
490+
});
491+
492+
it("does not emit a metric when enhanced metrics are disabled", async () => {
493+
process.env.DD_ENHANCED_METRICS = "false";
494+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
495+
expect(mockedIncrementErrors).toBeCalledTimes(0);
496+
});
497+
498+
it("creates a span when tracing is enabled", async () => {
499+
process.env.DD_TRACE_ENABLED = "true";
500+
const functionName = "myFunction";
501+
const startTime = Date.now();
502+
const fakeError = new ReferenceError("some error");
503+
const spanName = "aws.lambda";
504+
505+
await emitTelemetryOnErrorOutsideHandler(fakeError, functionName, startTime);
506+
507+
const options: SpanOptions = {
508+
tags: {
509+
service: spanName,
510+
operation_name: spanName,
511+
resource_names: functionName,
512+
"resource.name": functionName,
513+
"span.type": "serverless",
514+
"error.status": 500,
515+
"error.type": fakeError.name,
516+
"error.message": fakeError.message,
517+
"error.stack": fakeError.stack,
518+
},
519+
startTime,
520+
};
521+
expect(mockedStartSpan).toBeCalledWith(spanName, options);
522+
});
523+
524+
it("does not create a span when tracing is disabled", async () => {
525+
process.env.DD_TRACE_ENABLED = "false";
526+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
527+
expect(mockedStartSpan).toBeCalledTimes(0);
528+
});
529+
});

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,6 @@ export async function emitTelemetryOnErrorOutsideHandler(
429429
"error.type": error.name,
430430
"error.message": error.message,
431431
"error.stack": error.stack,
432-
status: error,
433432
},
434433
startTime,
435434
};

0 commit comments

Comments
 (0)