diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 245b310b..48675762 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: strategy: max-parallel: 4 matrix: - node-version: [16.14, 18.12, 20.9] + node-version: [16.14, 18.12, 20.9, 22.11] steps: - name: Checkout uses: actions/checkout@v3 @@ -67,7 +67,7 @@ jobs: restore-keys: | ${{ runner.os }}-yarn- - name: Install NodeGYP - if: matrix.node-version == '20.9' + if: matrix.node-version == '20.9' || matrix.node-version == '22.11' run: yarn global add node-gyp - name: Install dependencies diff --git a/.gitlab/datasources/runtimes.yaml b/.gitlab/datasources/runtimes.yaml index b15e029f..4e5b96ec 100644 --- a/.gitlab/datasources/runtimes.yaml +++ b/.gitlab/datasources/runtimes.yaml @@ -8,3 +8,6 @@ runtimes: - name: "node20" node_version: "20.9" node_major_version: "20" + - name: "node22" + node_version: "22.11" + node_major_version: "22" diff --git a/.gitlab/scripts/publish_layers.sh b/.gitlab/scripts/publish_layers.sh index 3387e97f..940187e7 100755 --- a/.gitlab/scripts/publish_layers.sh +++ b/.gitlab/scripts/publish_layers.sh @@ -10,10 +10,10 @@ set -e # Available runtimes: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html -AWS_CLI_NODE_VERSIONS=("nodejs16.x" "nodejs18.x" "nodejs20.x") -LAYER_PATHS=(".layers/datadog_lambda_node16.14.zip" ".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.9.zip") -LAYERS=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x") -NODE_VERSIONS=("16.14" "18.12" "20.9") +AWS_CLI_NODE_VERSIONS=("nodejs16.x" "nodejs18.x" "nodejs20.x" "nodejs22.x") +LAYER_PATHS=(".layers/datadog_lambda_node16.14.zip" ".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.9.zip" ".layers/datadog_lambda_node22.11.zip") +LAYERS=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x" "Datadog-Node22-x") +NODE_VERSIONS=("16.14" "18.12" "20.9" "22.11") STAGES=('prod', 'sandbox', 'staging') printf "Starting script...\n\n" diff --git a/integration_tests/snapshots/logs/async-metrics_node22.log b/integration_tests/snapshots/logs/async-metrics_node22.log new file mode 100644 index 00000000..0a1e5518 --- /dev/null +++ b/integration_tests/snapshots/logs/async-metrics_node22.log @@ -0,0 +1,125 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-async-metrics_node22", + "resource:integration-tests-js-XXXX-async-metrics_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.outside_handler", + "t": [ + "tagkey:tagvalue", + "eventsource:outside_handler", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "tagkey:tagvalue", + "eventsource:APIGateway", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed APIGateway request +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-async-metrics_node22", + "resource:integration-tests-js-XXXX-async-metrics_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SNS request +{ + "e": XXXX, + "m": "serverless.integration_test.records_processed", + "t": [ + "tagkey:tagvalue", + "eventsource:SNS", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "tagkey:tagvalue", + "eventsource:SNS", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-async-metrics_node22", + "resource:integration-tests-js-XXXX-async-metrics_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.records_processed", + "t": [ + "tagkey:tagvalue", + "eventsource:SQS", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.records_processed", + "t": [ + "tagkey:tagvalue", + "eventsource:SQS", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SQS request +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "tagkey:tagvalue", + "eventsource:SQS", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/esm_node22.log b/integration_tests/snapshots/logs/esm_node22.log new file mode 100644 index 00000000..938b073d --- /dev/null +++ b/integration_tests/snapshots/logs/esm_node22.log @@ -0,0 +1,52 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-esm_node22", + "resource:integration-tests-js-XXXX-esm_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-esm_node22", + "resource:integration-tests-js-XXXX-esm_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-esm_node22", + "resource:integration-tests-js-XXXX-esm_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/http-requests_node22.log b/integration_tests/snapshots/logs/http-requests_node22.log new file mode 100644 index 00000000..64226638 --- /dev/null +++ b/integration_tests/snapshots/logs/http-requests_node22.log @@ -0,0 +1,64 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-http-requests_node22", + "resource:integration-tests-js-XXXX-http-requests_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +HTTP GET https://ip-ranges.datadoghq.com/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +HTTP GET https://ip-ranges.datadoghq.eu/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Snapshot test http requests successfully made to URLs: https://ip-ranges.datadoghq.com,https://ip-ranges.datadoghq.eu +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-http-requests_node22", + "resource:integration-tests-js-XXXX-http-requests_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +HTTP GET https://ip-ranges.datadoghq.com/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +HTTP GET https://ip-ranges.datadoghq.eu/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Snapshot test http requests successfully made to URLs: https://ip-ranges.datadoghq.com,https://ip-ranges.datadoghq.eu +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-http-requests_node22", + "resource:integration-tests-js-XXXX-http-requests_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +HTTP GET https://ip-ranges.datadoghq.com/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +HTTP GET https://ip-ranges.datadoghq.eu/ TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Snapshot test http requests successfully made to URLs: https://ip-ranges.datadoghq.com,https://ip-ranges.datadoghq.eu +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/process-input-traced_node22.log b/integration_tests/snapshots/logs/process-input-traced_node22.log new file mode 100644 index 00000000..b20c0dc4 --- /dev/null +++ b/integration_tests/snapshots/logs/process-input-traced_node22.log @@ -0,0 +1,416 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-process-input-traced_node22", + "resource:integration-tests-js-XXXX-process-input-traced_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "function:process-input-traced", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.apigateway", + "resource": "GET /{proxy+}", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedApiGatewayServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.apigateway", + "http.url": "undefined", + "resource_names": "GET /{proxy+}", + "request_id":"XXXX", + "apiid":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "sync", + "http.method": "GET", + "stage": "test", + "http.status_code": "200", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedApiGatewayServiceName", + "type": "http" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-process-input-traced_node22", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-process-input-traced_node22", + "functionname": "integration-tests-js-XXXX-process-input-traced_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "arn:aws:apigateway:eu-west-1::/restapis/wt6mne2s9k/stages/test", + "http.method": "GET", + "http.route": "/{proxy+}", + "api_gateway_request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9", + "event_type": "APIGateway", + "http.status_code": "200", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 1, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "getRecordIds", + "resource": "getRecordIds", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "language": "javascript" + }, + "metrics": { + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "integration-tests-js-XXXX-process-input-traced_node22" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "getAPIGatewayRequestId", + "resource": "getAPIGatewayRequestId", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "api_gateway_request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9", + "event_type": "APIGateway", + "language": "javascript" + }, + "metrics": { + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "integration-tests-js-XXXX-process-input-traced_node22" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-process-input-traced_node22", + "resource:integration-tests-js-XXXX-process-input-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "function:process-input-traced", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.sns", + "resource": "sns-lambda", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedSnsServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "request_id":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "async", + "type": "Notification", + "subject": "TestInvoke", + "message_id": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda", + "event_subscription_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedSnsServiceName", + "type": "sns" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-process-input-traced_node22", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-process-input-traced_node22", + "functionname": "integration-tests-js-XXXX-process-input-traced_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda", + "event_type": "SNS", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 0, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "getRecordIds", + "resource": "getRecordIds", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "record_event_type": "SNS", + "record_ids":"XXXX", + "language": "javascript" + }, + "metrics": { + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "integration-tests-js-XXXX-process-input-traced_node22" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-process-input-traced_node22", + "resource:integration-tests-js-XXXX-process-input-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "serverless.integration_test.execution", + "t": [ + "function:process-input-traced", + "dd_lambda_layer:datadog-nodev22.XX.X" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.sqs", + "resource": "my-queue", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedSqsServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "request_id":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "async", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "retry_count": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedSqsServiceName", + "type": "web" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-process-input-traced_node22", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-process-input-traced_node22", + "functionname": "integration-tests-js-XXXX-process-input-traced_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "event_type": "SQS", + "_dd.base_service": "integration-tests-js-XXXX-process-input-traced_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 0, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "getRecordIds", + "resource": "getRecordIds", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-process-input-traced_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "record_event_type": "SQS", + "record_ids":"XXXX,2e1424d4-f796-459a-8184-9c92662be6da", + "language": "javascript" + }, + "metrics": { + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "integration-tests-js-XXXX-process-input-traced_node22" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/status-code-500s_node22.log b/integration_tests/snapshots/logs/status-code-500s_node22.log new file mode 100644 index 00000000..06d6b80b --- /dev/null +++ b/integration_tests/snapshots/logs/status-code-500s_node22.log @@ -0,0 +1,302 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-status-code-500s_node22", + "resource:integration-tests-js-XXXX-status-code-500s_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "aws.lambda.enhanced.errors", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-status-code-500s_node22", + "resource:integration-tests-js-XXXX-status-code-500s_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.apigateway", + "resource": "GET /{proxy+}", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedApiGatewayServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.apigateway", + "http.url": "undefined", + "resource_names": "GET /{proxy+}", + "request_id":"XXXX", + "apiid":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "sync", + "http.method": "GET", + "stage": "test", + "http.status_code": "500", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedApiGatewayServiceName", + "type": "http" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-status-code-500s_node22", + "error": 1, + "meta": { + "service": "integration-tests-js-XXXX-status-code-500s_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-status-code-500s_node22", + "functionname": "integration-tests-js-XXXX-status-code-500s_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "arn:aws:apigateway:eu-west-1::/restapis/wt6mne2s9k/stages/test", + "http.method": "GET", + "http.route": "/{proxy+}", + "http.status_code": "500", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 1, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-status-code-500s_node22", + "resource:integration-tests-js-XXXX-status-code-500s_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.sns", + "resource": "sns-lambda", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedSnsServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "request_id":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "async", + "type": "Notification", + "subject": "TestInvoke", + "message_id": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda", + "event_subscription_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedSnsServiceName", + "type": "sns" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-status-code-500s_node22", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-status-code-500s_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-status-code-500s_node22", + "functionname": "integration-tests-js-XXXX-status-code-500s_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "arn:aws:sns:us-east-2:123456789012:sns-lambda", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 0, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-status-code-500s_node22", + "resource:integration-tests-js-XXXX-status-code-500s_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "traces": [ + [ + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.sqs", + "resource": "my-queue", + "error": 0, + "meta": { + "_dd.p.tid": "XXXX", + "_dd.p.dm": "-0", + "service": "remappedSqsServiceName", + "runtime-id":"XXXX", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "request_id":"XXXX", + "_inferred_span.tag_source": "self", + "_inferred_span.synchronicity": "async", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "retry_count": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "remappedSqsServiceName", + "type": "web" + }, + { + "trace_id":"XXXX", + "span_id":"XXXX", + "parent_id":"XXXX", + "name": "aws.lambda", + "resource": "integration-tests-js-XXXX-status-code-500s_node22", + "error": 0, + "meta": { + "service": "integration-tests-js-XXXX-status-code-500s_node22", + "version": "1.0.0", + "runtime-id":"XXXX", + "function_arn":"XXXX_node22", + "function_version": "$LATEST", + "request_id":"XXXX", + "resource_names": "integration-tests-js-XXXX-status-code-500s_node22", + "functionname": "integration-tests-js-XXXX-status-code-500s_node22", + "datadog_lambda":"XXXX", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "_dd.base_service": "integration-tests-js-XXXX-status-code-500s_node22", + "language": "javascript" + }, + "metrics": { + "cold_start": 0, + "_dd.measured": 1, + "process_id":XXXX, + "_sampling_priority_v1": 1 + }, + "start":XXXX, + "duration":XXXX, + "links": [], + "service": "aws.lambda", + "type": "serverless" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/sync-metrics_node22.log b/integration_tests/snapshots/logs/sync-metrics_node22.log new file mode 100644 index 00000000..04a15556 --- /dev/null +++ b/integration_tests/snapshots/logs/sync-metrics_node22.log @@ -0,0 +1,58 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-sync-metrics_node22", + "resource:integration-tests-js-XXXX-sync-metrics_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed APIGateway request +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-sync-metrics_node22", + "resource:integration-tests-js-XXXX-sync-metrics_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SNS request +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms Memory Used: XXXX MB +START +XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SQS request +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-sync-metrics_node22", + "resource:integration-tests-js-XXXX-sync-metrics_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX TraceHeaders: ["x-datadog-parent-id:XXXX","x-datadog-sampling-priority:-1","x-datadog-trace-id:XXXX"] +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/logs/throw-error-traced_node22.log b/integration_tests/snapshots/logs/throw-error-traced_node22.log new file mode 100644 index 00000000..2177c009 --- /dev/null +++ b/integration_tests/snapshots/logs/throw-error-traced_node22.log @@ -0,0 +1,100 @@ + +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "aws.lambda.enhanced.errors", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:true", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX ERROR [dd.trace_id=XXXX dd.span_id=XXXX] Invoke Error {"errorType":"Error","errorMessage":"Hello","stack":["Error: Hello"," at handle (/var/task/throw-error-traced.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/utils/handler.js:XXX:XXX"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at step (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at Object.next (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at new Promise ()"," at __awaiter (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at traceListenerOnWrap (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"]} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +XXXX-XX-XX XX:XX:XX.XXX ERROR [dd.trace_id=XXXX dd.span_id=XXXX] Invoke Error {"errorType":"Error","errorMessage":"Hello","stack":["Error: Hello"," at handle (/var/task/throw-error-traced.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/utils/handler.js:XXX:XXX"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at step (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at Object.next (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at new Promise ()"," at __awaiter (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at traceListenerOnWrap (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"]} +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +{ + "e": XXXX, + "m": "aws.lambda.enhanced.errors", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "e": XXXX, + "m": "aws.lambda.enhanced.invocations", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +XXXX-XX-XX XX:XX:XX.XXX ERROR [dd.trace_id=XXXX dd.span_id=XXXX] Invoke Error {"errorType":"Error","errorMessage":"Hello","stack":["Error: Hello"," at handle (/var/task/throw-error-traced.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/utils/handler.js:XXX:XXX"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at step (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at Object.next (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"," at new Promise ()"," at __awaiter (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at traceListenerOnWrap (/opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX)"," at /opt/nodejs/node_modules/datadog-lambda-js/index.js:XXX:XXX"]} +{ + "e": XXXX, + "m": "aws.lambda.enhanced.errors", + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-js-XXXX-throw-error-traced_node22", + "resource:integration-tests-js-XXXX-throw-error-traced_node22", + "memorysize:1024", + "cold_start:false", + "datadog_lambda:vX.X.X", + "runtime:nodejs22.x" + ], + "v": 1 +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/integration_tests/snapshots/return_values/async-metrics_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/async-metrics_node22_api-gateway-get.json new file mode 100644 index 00000000..6f453e96 --- /dev/null +++ b/integration_tests/snapshots/return_values/async-metrics_node22_api-gateway-get.json @@ -0,0 +1,5 @@ +{ + "message": "hello, dog!", + "eventType": "APIGateway", + "requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" +} diff --git a/integration_tests/snapshots/return_values/async-metrics_node22_sns.json b/integration_tests/snapshots/return_values/async-metrics_node22_sns.json new file mode 100644 index 00000000..50064b8d --- /dev/null +++ b/integration_tests/snapshots/return_values/async-metrics_node22_sns.json @@ -0,0 +1,7 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "95df01b4-ee98-5cb9-9903-4c221d41eb5e" + ], + "eventType": "SNS" +} diff --git a/integration_tests/snapshots/return_values/async-metrics_node22_sqs.json b/integration_tests/snapshots/return_values/async-metrics_node22_sqs.json new file mode 100644 index 00000000..c1ccfcb2 --- /dev/null +++ b/integration_tests/snapshots/return_values/async-metrics_node22_sqs.json @@ -0,0 +1,8 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "059f36b4-87a3-44ab-83d2-661975830a7d", + "2e1424d4-f796-459a-8184-9c92662be6da" + ], + "eventType": "SQS" +} diff --git a/integration_tests/snapshots/return_values/esm_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/esm_node22_api-gateway-get.json new file mode 100644 index 00000000..19765bd5 --- /dev/null +++ b/integration_tests/snapshots/return_values/esm_node22_api-gateway-get.json @@ -0,0 +1 @@ +null diff --git a/integration_tests/snapshots/return_values/esm_node22_sns.json b/integration_tests/snapshots/return_values/esm_node22_sns.json new file mode 100644 index 00000000..19765bd5 --- /dev/null +++ b/integration_tests/snapshots/return_values/esm_node22_sns.json @@ -0,0 +1 @@ +null diff --git a/integration_tests/snapshots/return_values/esm_node22_sqs.json b/integration_tests/snapshots/return_values/esm_node22_sqs.json new file mode 100644 index 00000000..19765bd5 --- /dev/null +++ b/integration_tests/snapshots/return_values/esm_node22_sqs.json @@ -0,0 +1 @@ +null diff --git a/integration_tests/snapshots/return_values/http-requests_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/http-requests_node22_api-gateway-get.json new file mode 100644 index 00000000..eb1e9d31 --- /dev/null +++ b/integration_tests/snapshots/return_values/http-requests_node22_api-gateway-get.json @@ -0,0 +1,3 @@ +{ + "message": "hello, dog!" +} diff --git a/integration_tests/snapshots/return_values/http-requests_node22_sns.json b/integration_tests/snapshots/return_values/http-requests_node22_sns.json new file mode 100644 index 00000000..eb1e9d31 --- /dev/null +++ b/integration_tests/snapshots/return_values/http-requests_node22_sns.json @@ -0,0 +1,3 @@ +{ + "message": "hello, dog!" +} diff --git a/integration_tests/snapshots/return_values/http-requests_node22_sqs.json b/integration_tests/snapshots/return_values/http-requests_node22_sqs.json new file mode 100644 index 00000000..eb1e9d31 --- /dev/null +++ b/integration_tests/snapshots/return_values/http-requests_node22_sqs.json @@ -0,0 +1,3 @@ +{ + "message": "hello, dog!" +} diff --git a/integration_tests/snapshots/return_values/process-input-traced_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/process-input-traced_node22_api-gateway-get.json new file mode 100644 index 00000000..12d7e1a1 --- /dev/null +++ b/integration_tests/snapshots/return_values/process-input-traced_node22_api-gateway-get.json @@ -0,0 +1,5 @@ +{ + "message": "hello, dog!", + "recordIds": [], + "eventType": "APIGateway" +} diff --git a/integration_tests/snapshots/return_values/process-input-traced_node22_sns.json b/integration_tests/snapshots/return_values/process-input-traced_node22_sns.json new file mode 100644 index 00000000..50064b8d --- /dev/null +++ b/integration_tests/snapshots/return_values/process-input-traced_node22_sns.json @@ -0,0 +1,7 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "95df01b4-ee98-5cb9-9903-4c221d41eb5e" + ], + "eventType": "SNS" +} diff --git a/integration_tests/snapshots/return_values/process-input-traced_node22_sqs.json b/integration_tests/snapshots/return_values/process-input-traced_node22_sqs.json new file mode 100644 index 00000000..c1ccfcb2 --- /dev/null +++ b/integration_tests/snapshots/return_values/process-input-traced_node22_sqs.json @@ -0,0 +1,8 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "059f36b4-87a3-44ab-83d2-661975830a7d", + "2e1424d4-f796-459a-8184-9c92662be6da" + ], + "eventType": "SQS" +} diff --git a/integration_tests/snapshots/return_values/status-code-500s_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/status-code-500s_node22_api-gateway-get.json new file mode 100644 index 00000000..3a476177 --- /dev/null +++ b/integration_tests/snapshots/return_values/status-code-500s_node22_api-gateway-get.json @@ -0,0 +1,4 @@ +{ + "statusCode": 500, + "body": {} +} diff --git a/integration_tests/snapshots/return_values/status-code-500s_node22_sns.json b/integration_tests/snapshots/return_values/status-code-500s_node22_sns.json new file mode 100644 index 00000000..3a476177 --- /dev/null +++ b/integration_tests/snapshots/return_values/status-code-500s_node22_sns.json @@ -0,0 +1,4 @@ +{ + "statusCode": 500, + "body": {} +} diff --git a/integration_tests/snapshots/return_values/status-code-500s_node22_sqs.json b/integration_tests/snapshots/return_values/status-code-500s_node22_sqs.json new file mode 100644 index 00000000..3a476177 --- /dev/null +++ b/integration_tests/snapshots/return_values/status-code-500s_node22_sqs.json @@ -0,0 +1,4 @@ +{ + "statusCode": 500, + "body": {} +} diff --git a/integration_tests/snapshots/return_values/sync-metrics_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/sync-metrics_node22_api-gateway-get.json new file mode 100644 index 00000000..6f453e96 --- /dev/null +++ b/integration_tests/snapshots/return_values/sync-metrics_node22_api-gateway-get.json @@ -0,0 +1,5 @@ +{ + "message": "hello, dog!", + "eventType": "APIGateway", + "requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" +} diff --git a/integration_tests/snapshots/return_values/sync-metrics_node22_sns.json b/integration_tests/snapshots/return_values/sync-metrics_node22_sns.json new file mode 100644 index 00000000..50064b8d --- /dev/null +++ b/integration_tests/snapshots/return_values/sync-metrics_node22_sns.json @@ -0,0 +1,7 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "95df01b4-ee98-5cb9-9903-4c221d41eb5e" + ], + "eventType": "SNS" +} diff --git a/integration_tests/snapshots/return_values/sync-metrics_node22_sqs.json b/integration_tests/snapshots/return_values/sync-metrics_node22_sqs.json new file mode 100644 index 00000000..c1ccfcb2 --- /dev/null +++ b/integration_tests/snapshots/return_values/sync-metrics_node22_sqs.json @@ -0,0 +1,8 @@ +{ + "message": "hello, dog!", + "recordIds": [ + "059f36b4-87a3-44ab-83d2-661975830a7d", + "2e1424d4-f796-459a-8184-9c92662be6da" + ], + "eventType": "SQS" +} diff --git a/integration_tests/snapshots/return_values/throw-error-traced_node22_api-gateway-get.json b/integration_tests/snapshots/return_values/throw-error-traced_node22_api-gateway-get.json new file mode 100644 index 00000000..7147cafa --- /dev/null +++ b/integration_tests/snapshots/return_values/throw-error-traced_node22_api-gateway-get.json @@ -0,0 +1 @@ +Invocation failed diff --git a/integration_tests/snapshots/return_values/throw-error-traced_node22_sns.json b/integration_tests/snapshots/return_values/throw-error-traced_node22_sns.json new file mode 100644 index 00000000..7147cafa --- /dev/null +++ b/integration_tests/snapshots/return_values/throw-error-traced_node22_sns.json @@ -0,0 +1 @@ +Invocation failed diff --git a/integration_tests/snapshots/return_values/throw-error-traced_node22_sqs.json b/integration_tests/snapshots/return_values/throw-error-traced_node22_sqs.json new file mode 100644 index 00000000..7147cafa --- /dev/null +++ b/integration_tests/snapshots/return_values/throw-error-traced_node22_sqs.json @@ -0,0 +1 @@ +Invocation failed diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 17b06fd8..4d1a4795 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -2,8 +2,8 @@ OLD_REGION='us-east-1' -LAYER_NAMES=("Datadog-Node16-x" "Datadog-Node18-x", "Datadog-Node20-x") -NODE_VERSIONS_FOR_AWS_CLI=("nodejs16.x" "nodejs18.x" "nodejs20.x") +LAYER_NAMES=("Datadog-Node16-x" "Datadog-Node18-x", "Datadog-Node20-x" "Datadog-Node22-x") +NODE_VERSIONS_FOR_AWS_CLI=("nodejs16.x" "nodejs18.x" "nodejs20.x" "nodejs22.x") NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 2e83ec69..d2ff9eea 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -11,7 +11,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_node" -export NODE_VERSIONS=("16.14" "18.12" "20.9") +export NODE_VERSIONS=("16.14" "18.12" "20.9" "22.11") if [ -z "$NODE_VERSION" ]; then echo "Node version not specified, running for all node versions." diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 965f4553..1d385150 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x") +LAYER_NAMES=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x" "Datadog-Node22-x") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 8a633d84..f150ebb7 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -10,9 +10,9 @@ # VERSION is required. set -e -NODE_VERSIONS_FOR_AWS_CLI=("nodejs16.x" "nodejs18.x" "nodejs20.x") -LAYER_PATHS=(".layers/datadog_lambda_node16.14.zip" ".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.9.zip") -AVAILABLE_LAYERS=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x") +NODE_VERSIONS_FOR_AWS_CLI=("nodejs16.x" "nodejs18.x" "nodejs20.x" "nodejs22.x") +LAYER_PATHS=(".layers/datadog_lambda_node16.14.zip" ".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.9.zip" ".layers/datadog_lambda_node22.11.zip") +AVAILABLE_LAYERS=("Datadog-Node16-x" "Datadog-Node18-x" "Datadog-Node20-x" "Datadog-Node22-x") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') BATCH_SIZE=60 PIDS=() diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 57d943b8..b8f508bb 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -32,8 +32,9 @@ mismatch_found=false node16=("nodejs16.x" "16.14" $(xxd -l 4 -c 4 -p < /dev/random)) node18=("nodejs18.x" "18.12" $(xxd -l 4 -c 4 -p < /dev/random)) node20=("nodejs20.x" "20.9" $(xxd -l 4 -c 4 -p < /dev/random)) +node22=("nodejs22.x" "22.11" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("node16" "node18" "node20") +PARAMETERS_SETS=("node16" "node18" "node20" "node22") if [ -z "$RUNTIME_PARAM" ]; then echo "Node version not specified, running for all node versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 0395da63..fa2cf409 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -9,7 +9,7 @@ # For local use only set -e -NODE_VERSIONS=("16.14" "18.12" "20.9") +NODE_VERSIONS=("16.14" "18.12" "20.9" "22.11") for node_version in "${NODE_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index c28c2889..50c76eb2 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -8,7 +8,7 @@ set -e LAYER_DIR=".layers" -LAYER_FILES=("datadog_lambda_node16.14.zip" "datadog_lambda_node18.12.zip" "datadog_lambda_node20.9.zip") +LAYER_FILES=("datadog_lambda_node16.14.zip" "datadog_lambda_node18.12.zip" "datadog_lambda_node20.9.zip" "datadog_lambda_node22.11.zip") SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" if [ -z "$LAYER_FILE" ]; then diff --git a/src/metrics/enhanced-metrics.spec.ts b/src/metrics/enhanced-metrics.spec.ts index 230852b3..a2d4be4c 100644 --- a/src/metrics/enhanced-metrics.spec.ts +++ b/src/metrics/enhanced-metrics.spec.ts @@ -38,6 +38,11 @@ describe("getRuntimeTag", () => { mockedGetProcessVersion.mockReturnValue("v20.9.0"); expect(getRuntimeTag()).toBe("runtime:nodejs20.x"); }); + + it("returns the right tag for v22.11.0", () => { + mockedGetProcessVersion.mockReturnValue("v22.11.0"); + expect(getRuntimeTag()).toBe("runtime:nodejs22.x"); + }); }); describe("getEnhancedMetricTags", () => { diff --git a/src/metrics/enhanced-metrics.ts b/src/metrics/enhanced-metrics.ts index 36eeb8da..7b736c58 100644 --- a/src/metrics/enhanced-metrics.ts +++ b/src/metrics/enhanced-metrics.ts @@ -15,6 +15,7 @@ enum RuntimeTagValues { Node16 = "nodejs16.x", Node18 = "nodejs18.x", Node20 = "nodejs20.x", + Node22 = "nodejs22.x", } export function getVersionTag(): string { @@ -42,6 +43,10 @@ export function getRuntimeTag(): string | null { processVersionTagString = RuntimeTagValues.Node20; } + if (processVersion.startsWith("v22")) { + processVersionTagString = RuntimeTagValues.Node22; + } + if (!processVersionTagString) { return null; }