Skip to content

Commit 745bf32

Browse files
Merge pull request #74 from DataDog/darcy.rayner/handler-test
Add default 'handler'
2 parents 89790a6 + 9ccc1f8 commit 745bf32

File tree

3 files changed

+40
-13
lines changed

3 files changed

+40
-13
lines changed

src/handler.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { datadog, datadogHandlerEnvVar, lambdaTaskRootEnvVar, getEnvValue } from "./index";
2+
// We reuse the function loading logic already inside the lambda runtime.
3+
// tslint:disable-next-line:no-var-requires
4+
const { load } = require("/var/runtime/UserFunction") as any;
5+
6+
if (getEnvValue("DD_TRACE_ENABLED", "true").toLowerCase() === "true") {
7+
// tslint:disable-next-line:no-var-requires
8+
require("dd-trace").init();
9+
}
10+
11+
const taskRootEnv = getEnvValue(lambdaTaskRootEnvVar, "");
12+
const handlerEnv = getEnvValue(datadogHandlerEnvVar, "");
13+
export const handler = datadog(load(taskRootEnv, handlerEnv) as any);

src/index.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,19 @@ import {
99
} from "./metrics";
1010
import { TraceConfig, TraceHeaders, TraceListener } from "./trace";
1111
import { logError, LogLevel, Logger, setColdStart, setLogLevel, setLogger, wrap } from "./utils";
12-
1312
export { TraceHeaders } from "./trace";
1413

15-
const apiKeyEnvVar = "DD_API_KEY";
16-
const apiKeyKMSEnvVar = "DD_KMS_API_KEY";
17-
const siteURLEnvVar = "DD_SITE";
18-
const logLevelEnvVar = "DD_LOG_LEVEL";
19-
const logForwardingEnvVar = "DD_FLUSH_TO_LOG";
20-
const logInjectionEnvVar = "DD_LOGS_INJECTION";
21-
const enhancedMetricsEnvVar = "DD_ENHANCED_METRICS";
22-
23-
const defaultSiteURL = "datadoghq.com";
14+
export const apiKeyEnvVar = "DD_API_KEY";
15+
export const apiKeyKMSEnvVar = "DD_KMS_API_KEY";
16+
export const siteURLEnvVar = "DD_SITE";
17+
export const logLevelEnvVar = "DD_LOG_LEVEL";
18+
export const logForwardingEnvVar = "DD_FLUSH_TO_LOG";
19+
export const logInjectionEnvVar = "DD_LOGS_INJECTION";
20+
export const enhancedMetricsEnvVar = "DD_ENHANCED_METRICS";
21+
export const datadogHandlerEnvVar = "DD_LAMBDA_HANDLER";
22+
export const lambdaTaskRootEnvVar = "LAMBDA_TASK_ROOT";
23+
export const mergeXrayTracesEnvVar = "DD_MERGE_XRAY_TRACES";
24+
export const defaultSiteURL = "datadoghq.com";
2425

2526
interface GlobalConfig {
2627
/**
@@ -79,7 +80,8 @@ export function datadog<TEvent, TResult>(
7980
): Handler<TEvent, TResult> {
8081
const finalConfig = getConfig(config);
8182
const metricsListener = new MetricsListener(new KMSService(), finalConfig);
82-
const handlerName = getEnvValue("_HANDLER", "handler");
83+
const handlerName = getEnvValue(datadogHandlerEnvVar, getEnvValue("_HANDLER", "handler"));
84+
8385
const traceListener = new TraceListener(finalConfig, handlerName);
8486
const listeners = [metricsListener, traceListener];
8587

@@ -207,6 +209,10 @@ function getConfig(userConfig?: Partial<Config>): Config {
207209
const result = getEnvValue(enhancedMetricsEnvVar, "true").toLowerCase();
208210
config.enhancedMetrics = result === "true";
209211
}
212+
if (userConfig === undefined || userConfig.mergeDatadogXrayTraces === undefined) {
213+
const result = getEnvValue(mergeXrayTracesEnvVar, "false").toLowerCase();
214+
config.mergeDatadogXrayTraces = result === "true";
215+
}
210216

211217
return config;
212218
}

src/utils/handler.spec.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,11 @@ describe("wrap", () => {
196196

197197
let calledOriginalHandler = false;
198198

199-
const wrappedHandler = wrap(handler, () => {}, async () => {});
199+
const wrappedHandler = wrap(
200+
handler,
201+
() => {},
202+
async () => {},
203+
);
200204

201205
const result = await wrappedHandler({}, mockContext, () => {
202206
calledOriginalHandler = true;
@@ -216,7 +220,11 @@ describe("wrap", () => {
216220

217221
let calledOriginalHandler = false;
218222

219-
const wrappedHandler = wrap(handler, () => {}, async () => {});
223+
const wrappedHandler = wrap(
224+
handler,
225+
() => {},
226+
async () => {},
227+
);
220228

221229
const result = await wrappedHandler({}, mockContext, () => {
222230
calledOriginalHandler = true;

0 commit comments

Comments
 (0)