Skip to content

Commit 4d89d7f

Browse files
committed
add test and extensionEnabled method
1 parent 0d29440 commit 4d89d7f

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

src/index.spec.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from "./index";
1212
import { incrementErrorsMetric, incrementInvocationsMetric } from "./metrics/enhanced-metrics";
1313
import { LogLevel, setLogLevel } from "./utils";
14+
import mock from "mock-fs";
1415

1516
jest.mock("./metrics/enhanced-metrics");
1617

@@ -319,6 +320,27 @@ describe("datadog", () => {
319320
expect(mockedIncrementErrors).toBeCalledTimes(0);
320321
});
321322

323+
it("doesn't increment enhanced metrics when using extension", async () => {
324+
process.env.DD_ENHANCED_METRICS = "false";
325+
mock({
326+
"/opt/extensions/datadog-agent": Buffer.from([0]),
327+
});
328+
329+
const handlerError: Handler = (event, context, callback) => {
330+
throw Error("Some error");
331+
};
332+
333+
const wrappedHandler = datadog(handlerError, { forceWrap: true });
334+
335+
const result = wrappedHandler({}, mockContext, () => {});
336+
await expect(result).rejects.toEqual(Error("Some error"));
337+
338+
expect(mockedIncrementInvocations).toBeCalledTimes(0);
339+
expect(mockedIncrementErrors).toBeCalledTimes(0);
340+
341+
mock.restore();
342+
});
343+
322344
it("use custom logger to log debug messages", async () => {
323345
const logger = {
324346
debug: jest.fn(),

src/index.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Context, Handler } from "aws-lambda";
2-
import { existsSync } from "fs";
32
import { MetricsConfig } from "./metrics";
43
import type { MetricsListener as MetricsListenerType } from "./metrics";
54

@@ -14,6 +13,7 @@ import {
1413
setLogger,
1514
setLogLevel,
1615
} from "./utils";
16+
import { extensionEnabled } from "./utils/extension-enabled";
1717

1818
export { TraceHeaders } from "./trace";
1919

@@ -31,7 +31,6 @@ export const lambdaTaskRootEnvVar = "LAMBDA_TASK_ROOT";
3131
export const mergeXrayTracesEnvVar = "DD_MERGE_XRAY_TRACES";
3232
export const traceExtractorEnvVar = "DD_TRACE_EXTRACTOR";
3333
export const defaultSiteURL = "datadoghq.com";
34-
const EXTENSION_PATH = "/opt/extensions/datadog-agent";
3534

3635
interface GlobalConfig {
3736
/**
@@ -154,7 +153,6 @@ export function datadog<TEvent, TResult>(
154153
finalConfig.captureLambdaPayload,
155154
);
156155
if (responseIs5xxError && !isExtensionEnabled()) {
157-
// TODO [ASTUYVE] - verify this behavior is modeled in extension
158156
incrementErrorsMetric(metricsListener, context);
159157
}
160158
}
@@ -303,6 +301,6 @@ function isExtensionEnabled(): boolean {
303301
if (isExtension !== undefined) {
304302
return isExtension;
305303
}
306-
isExtension = existsSync(EXTENSION_PATH);
304+
isExtension = extensionEnabled();
307305
return isExtension;
308306
}

src/metrics/extension.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { URL } from "url";
22
import { get, post, logDebug, logError } from "../utils";
3-
import fs from "fs";
3+
import { extensionEnabled } from "../utils/extension-enabled";
44

55
export const AGENT_URL = "http://127.0.0.1:8124";
66
const HELLO_PATH = "/lambda/hello";
77
const FLUSH_PATH = "/lambda/flush";
8-
const EXTENSION_PATH = "/opt/extensions/datadog-agent";
98
const AGENT_TIMEOUT_MS = 100;
109

1110
export async function isAgentRunning() {
12-
const extensionExists = await fileExists(EXTENSION_PATH);
11+
const extensionExists = extensionEnabled();
1312
if (!extensionExists) {
1413
logDebug(`Agent isn't present in sandbox`);
1514
return false;
@@ -33,10 +32,3 @@ export async function flushExtension(): Promise<boolean> {
3332
}
3433
return true;
3534
}
36-
37-
function fileExists(filename: string): Promise<boolean> {
38-
return fs.promises
39-
.access(filename, fs.constants.F_OK)
40-
.then(() => true)
41-
.catch(() => false);
42-
}

src/utils/extension-enabled.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { existsSync } from "fs";
2+
3+
const EXTENSION_PATH = "/opt/extensions/datadog-agent";
4+
5+
export function extensionEnabled() {
6+
return existsSync(EXTENSION_PATH);
7+
}

0 commit comments

Comments
 (0)