Update Samples.AWS.Lambda and tests#3359
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
- Don't auto-throw on every span, call a real API instead - Add manual spans in each handler - Create a `MockLambdaExtension` (based on the `MockTracerAgent`) to give easier control (and testing) of context responses (replaces the "context" containers) - Add additional parameter types (currently unsupported) - Update the snapshots to include the "implicit" spans created by the extension endpoints
b0b7875 to
063ac4b
Compare
Snapshots difference summaryThe following differences have been observed in committed snapshots. It is meant to help the reviewer. 1 occurrences of : + Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_3,
+ SpanId: Id_4,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_5,
+ SpanId: Id_6,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_7,
+ SpanId: Id_8,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_9,
+ SpanId: Id_10,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_11,
+ SpanId: Id_12,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_13,
+ SpanId: Id_14,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_15,
+ SpanId: Id_16,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_17,
+ SpanId: Id_18,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_19,
+ SpanId: Id_20,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_21,
+ SpanId: Id_22,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_23,
+ SpanId: Id_24,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_25,
+ SpanId: Id_26,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_27,
+ SpanId: Id_28,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_29,
+ SpanId: Id_30,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_31,
+ SpanId: Id_32,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_33,
+ SpanId: Id_34,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_35,
+ SpanId: Id_36,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_37,
+ SpanId: Id_38,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_39,
+ SpanId: Id_40,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_41,
+ SpanId: Id_42,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_43,
+ SpanId: Id_44,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_45,
+ SpanId: Id_46,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_47,
+ SpanId: Id_48,
+ Name: lambda.invocation,
+ Resource: /lambda/end-invocation,
+ Service: LambdaExtension,
+ Error: 1,
+ Tags: {
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_1,
+ SpanId: Id_49,
+ Name: manual.HandlerNoParamSync,
+ Resource: manual.HandlerNoParamSync,
+ Service: Bootstrap,
+ ParentId: Id_2,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_1,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_3,
+ SpanId: Id_50,
+ Name: manual.HandlerOneParamSync,
+ Resource: manual.HandlerOneParamSync,
+ Service: Bootstrap,
+ ParentId: Id_4,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_2,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_5,
+ SpanId: Id_51,
+ Name: manual.HandlerTwoParamsSync,
+ Resource: manual.HandlerTwoParamsSync,
+ Service: Bootstrap,
+ ParentId: Id_6,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_3,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_7,
+ SpanId: Id_52,
+ Name: manual.HandlerNoParamAsync,
+ Resource: manual.HandlerNoParamAsync,
+ Service: Bootstrap,
+ ParentId: Id_8,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_4,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_9,
+ SpanId: Id_53,
+ Name: manual.HandlerOneParamAsync,
+ Resource: manual.HandlerOneParamAsync,
+ Service: Bootstrap,
+ ParentId: Id_10,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_5,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_11,
+ SpanId: Id_54,
+ Name: manual.HandlerTwoParamsAsync,
+ Resource: manual.HandlerTwoParamsAsync,
+ Service: Bootstrap,
+ ParentId: Id_12,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_6,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_13,
+ SpanId: Id_55,
+ Name: manual.HandlerNoParamVoid,
+ Resource: manual.HandlerNoParamVoid,
+ Service: Bootstrap,
+ ParentId: Id_14,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_7,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_15,
+ SpanId: Id_56,
+ Name: manual.HandlerOneParamVoid,
+ Resource: manual.HandlerOneParamVoid,
+ Service: Bootstrap,
+ ParentId: Id_16,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_8,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_17,
+ SpanId: Id_57,
+ Name: manual.HandlerTwoParamsVoid,
+ Resource: manual.HandlerTwoParamsVoid,
+ Service: Bootstrap,
+ ParentId: Id_18,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_9,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_19,
+ SpanId: Id_58,
+ Name: manual.HandlerNoParamSyncWithContext,
+ Resource: manual.HandlerNoParamSyncWithContext,
+ Service: Bootstrap,
+ ParentId: Id_20,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_10
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_21,
+ SpanId: Id_59,
+ Name: manual.HandlerOneParamSyncWithContext,
+ Resource: manual.HandlerOneParamSyncWithContext,
+ Service: Bootstrap,
+ ParentId: Id_22,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_11
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_23,
+ SpanId: Id_60,
+ Name: manual.HandlerTwoParamsSyncWithContext,
+ Resource: manual.HandlerTwoParamsSyncWithContext,
+ Service: Bootstrap,
+ ParentId: Id_24,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_12
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_25,
+ SpanId: Id_61,
+ Name: manual.BaseHandlerNoParamSync,
+ Resource: manual.BaseHandlerNoParamSync,
+ Service: Bootstrap,
+ ParentId: Id_26,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_13,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_27,
+ SpanId: Id_62,
+ Name: manual.BaseHandlerTwoParamsSync,
+ Resource: manual.BaseHandlerTwoParamsSync,
+ Service: Bootstrap,
+ ParentId: Id_28,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_14,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_29,
+ SpanId: Id_63,
+ Name: manual.BaseHandlerOneParamSyncWithContext,
+ Resource: manual.BaseHandlerOneParamSyncWithContext,
+ Service: Bootstrap,
+ ParentId: Id_30,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_15
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_31,
+ SpanId: Id_64,
+ Name: manual.BaseHandlerOneParamAsync,
+ Resource: manual.BaseHandlerOneParamAsync,
+ Service: Bootstrap,
+ ParentId: Id_32,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_16,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_33,
+ SpanId: Id_65,
+ Name: manual.BaseHandlerTwoParamsVoid,
+ Resource: manual.BaseHandlerTwoParamsVoid,
+ Service: Bootstrap,
+ ParentId: Id_34,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_17,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_35,
+ SpanId: Id_66,
+ Name: manual.HandlerStructParam,
+ Resource: manual.HandlerStructParam,
+ Service: Bootstrap,
+ ParentId: Id_36,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_18,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_37,
+ SpanId: Id_67,
+ Name: manual.ThrowingHandler,
+ Resource: manual.ThrowingHandler,
+ Service: Bootstrap,
+ ParentId: Id_38,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_19,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_39,
+ SpanId: Id_68,
+ Name: manual.ThrowingHandlerAsync,
+ Resource: manual.ThrowingHandlerAsync,
+ Service: Bootstrap,
+ ParentId: Id_40,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_20,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_41,
+ SpanId: Id_69,
+ Name: manual.ThrowingHandlerAsyncTask,
+ Resource: manual.ThrowingHandlerAsyncTask,
+ Service: Bootstrap,
+ ParentId: Id_42,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_21,
+ _dd.p.dm: -0
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_43,
+ SpanId: Id_70,
+ Name: manual.ThrowingHandler,
+ Resource: manual.ThrowingHandler,
+ Service: Bootstrap,
+ ParentId: Id_44,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_22
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_45,
+ SpanId: Id_71,
+ Name: manual.ThrowingHandlerAsync,
+ Resource: manual.ThrowingHandlerAsync,
+ Service: Bootstrap,
+ ParentId: Id_46,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_23
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_47,
+ SpanId: Id_72,
+ Name: manual.ThrowingHandlerAsyncTask,
+ Resource: manual.ThrowingHandlerAsyncTask,
+ Service: Bootstrap,
+ ParentId: Id_48,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_24
+ },
+ Metrics: {
+ process_id: 0,
+ _dd.top_level: 1.0,
+ _dd.tracer_kr: 1.0,
+ _sampling_priority_v1: 1.0
+ }
+ },
+ {
+ TraceId: Id_1,
+ SpanId: Id_73,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNoParamSync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_49,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNoParamSync,
+ runtime-id: Guid_1,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_3,
+ SpanId: Id_74,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerOneParamSync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_50,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerOneParamSync,
+ runtime-id: Guid_2,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_5,
+ SpanId: Id_75,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsSync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_51,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsSync,
+ runtime-id: Guid_3,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_7,
+ SpanId: Id_76,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNoParamAsync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_52,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNoParamAsync,
+ runtime-id: Guid_4,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_9,
+ SpanId: Id_77,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerOneParamAsync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_53,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerOneParamAsync,
+ runtime-id: Guid_5,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_11,
+ SpanId: Id_78,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsAsync,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_54,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsAsync,
+ runtime-id: Guid_6,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_13,
+ SpanId: Id_79,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNoParamVoid,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_55,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNoParamVoid,
+ runtime-id: Guid_7,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_15,
+ SpanId: Id_80,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerOneParamVoid,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_56,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerOneParamVoid,
+ runtime-id: Guid_8,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_17,
+ SpanId: Id_81,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsVoid,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_57,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsVoid,
+ runtime-id: Guid_9,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_19,
+ SpanId: Id_82,
[...]
- Resource: GET localhost/function/BaseHandlerNoParamSync,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNoParamSyncWithContext,
[...]
- ParentId: Id_3,
- Error: 1,
+ ParentId: Id_58,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/BaseHandlerNoParamSync,
- runtime-id: Guid_1,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNoParamSyncWithContext,
+ runtime-id: Guid_10,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_4,
- SpanId: Id_5,
+ TraceId: Id_21,
+ SpanId: Id_83,
[...]
- Resource: GET localhost/function/BaseHandlerOneParamAsync,
+ Resource: GET serverless-dummy-api:9005/function/HandlerOneParamSyncWithContext,
[...]
- ParentId: Id_6,
- Error: 1,
+ ParentId: Id_59,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/BaseHandlerOneParamAsync,
- runtime-id: Guid_2,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerOneParamSyncWithContext,
+ runtime-id: Guid_11,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_7,
- SpanId: Id_8,
+ TraceId: Id_23,
+ SpanId: Id_84,
[...]
- Resource: GET localhost/function/BaseHandlerOneParamSyncWithContext,
+ Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsSyncWithContext,
[...]
- ParentId: Id_9,
- Error: 1,
+ ParentId: Id_60,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/BaseHandlerOneParamSyncWithContext,
- runtime-id: Guid_3,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsSyncWithContext,
+ runtime-id: Guid_12,
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_10,
- SpanId: Id_11,
+ TraceId: Id_25,
+ SpanId: Id_85,
[...]
- Resource: GET localhost/function/BaseHandlerTwoParamsSync,
+ Resource: GET serverless-dummy-api:9005/function/BaseHandlerNoParamSync,
[...]
- ParentId: Id_12,
- Error: 1,
+ ParentId: Id_61,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/BaseHandlerTwoParamsSync,
- runtime-id: Guid_4,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/BaseHandlerNoParamSync,
+ runtime-id: Guid_13,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_13,
- SpanId: Id_14,
+ TraceId: Id_27,
+ SpanId: Id_86,
[...]
- Resource: GET localhost/function/BaseHandlerTwoParamsVoid,
+ Resource: GET serverless-dummy-api:9005/function/BaseHandlerTwoParamsSync,
[...]
- ParentId: Id_15,
- Error: 1,
+ ParentId: Id_62,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/BaseHandlerTwoParamsVoid,
- runtime-id: Guid_5,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/BaseHandlerTwoParamsSync,
+ runtime-id: Guid_14,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_16,
- SpanId: Id_17,
+ TraceId: Id_29,
+ SpanId: Id_87,
[...]
- Resource: GET localhost/function/HandlerNoParamAsync,
+ Resource: GET serverless-dummy-api:9005/function/BaseHandlerOneParamSyncWithContext,
[...]
- ParentId: Id_18,
- Error: 1,
+ ParentId: Id_63,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerNoParamAsync,
- runtime-id: Guid_6,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/BaseHandlerOneParamSyncWithContext,
+ runtime-id: Guid_15,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_19,
- SpanId: Id_20,
+ TraceId: Id_31,
+ SpanId: Id_88,
[...]
- Resource: GET localhost/function/HandlerNoParamSync,
+ Resource: GET serverless-dummy-api:9005/function/BaseHandlerOneParamAsync,
[...]
- ParentId: Id_21,
- Error: 1,
+ ParentId: Id_64,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerNoParamSync,
- runtime-id: Guid_7,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/BaseHandlerOneParamAsync,
+ runtime-id: Guid_16,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_7,
- SpanId: Id_22,
+ TraceId: Id_33,
+ SpanId: Id_89,
[...]
- Resource: GET localhost/function/HandlerNoParamSyncWithContext,
+ Resource: GET serverless-dummy-api:9005/function/BaseHandlerTwoParamsVoid,
[...]
- ParentId: Id_23,
- Error: 1,
+ ParentId: Id_65,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerNoParamSyncWithContext,
- runtime-id: Guid_8,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/BaseHandlerTwoParamsVoid,
+ runtime-id: Guid_17,
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_24,
- SpanId: Id_25,
+ TraceId: Id_35,
+ SpanId: Id_90,
[...]
- Resource: GET localhost/function/HandlerNoParamVoid,
+ Resource: GET serverless-dummy-api:9005/function/HandlerStructParam,
[...]
- ParentId: Id_26,
- Error: 1,
+ ParentId: Id_66,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerNoParamVoid,
- runtime-id: Guid_9,
- span.kind: client,
- _dd.p.dm: -0
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerStructParam,
+ runtime-id: Guid_18,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_27,
- SpanId: Id_28,
+ TraceId: Id_37,
+ SpanId: Id_91,
[...]
- Resource: GET localhost/function/HandlerOneParamAsync,
+ Resource: GET localhost/function/ThrowingHandler,
[...]
- ParentId: Id_29,
+ ParentId: Id_67,
1 occurrences of : - http.url: http://localhost/function/HandlerOneParamAsync,
- runtime-id: Guid_10,
- span.kind: client,
- _dd.p.dm: -0
+ http.url: http://localhost/function/ThrowingHandler,
+ runtime-id: Guid_19,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_30,
- SpanId: Id_31,
+ TraceId: Id_39,
+ SpanId: Id_92,
[...]
- Resource: GET localhost/function/HandlerOneParamSync,
+ Resource: GET localhost/function/ThrowingHandlerAsync,
[...]
- ParentId: Id_32,
+ ParentId: Id_68,
1 occurrences of : - http.url: http://localhost/function/HandlerOneParamSync,
- runtime-id: Guid_11,
- span.kind: client,
- _dd.p.dm: -0
+ http.url: http://localhost/function/ThrowingHandlerAsync,
+ runtime-id: Guid_20,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_7,
- SpanId: Id_33,
+ TraceId: Id_41,
+ SpanId: Id_93,
[...]
- Resource: GET localhost/function/HandlerOneParamSyncWithContext,
+ Resource: GET localhost/function/ThrowingHandlerAsyncTask,
[...]
- ParentId: Id_34,
+ ParentId: Id_69,
1 occurrences of : - http.url: http://localhost/function/HandlerOneParamSyncWithContext,
- runtime-id: Guid_12,
+ http.url: http://localhost/function/ThrowingHandlerAsyncTask,
+ runtime-id: Guid_21,
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_35,
- SpanId: Id_36,
+ TraceId: Id_43,
+ SpanId: Id_94,
[...]
- Resource: GET localhost/function/HandlerOneParamVoid,
+ Resource: GET localhost/function/ThrowingHandler,
[...]
- ParentId: Id_37,
+ ParentId: Id_70,
1 occurrences of : - http.url: http://localhost/function/HandlerOneParamVoid,
- runtime-id: Guid_13,
- span.kind: client,
- _dd.p.dm: -0
+ http.url: http://localhost/function/ThrowingHandler,
+ runtime-id: Guid_22,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_38,
- SpanId: Id_39,
+ TraceId: Id_45,
+ SpanId: Id_95,
[...]
- Resource: GET localhost/function/HandlerTwoParamsAsync,
+ Resource: GET localhost/function/ThrowingHandlerAsync,
[...]
- ParentId: Id_40,
+ ParentId: Id_71,
1 occurrences of : - http.url: http://localhost/function/HandlerTwoParamsAsync,
- runtime-id: Guid_14,
- span.kind: client,
- _dd.p.dm: -0
+ http.url: http://localhost/function/ThrowingHandlerAsync,
+ runtime-id: Guid_23,
+ span.kind: client
[...]
- process_id: 0,
- _dd.top_level: 1.0,
- _dd.tracer_kr: 1.0,
- _sampling_priority_v1: 1.0
+ _dd.top_level: 1.0
[...]
- TraceId: Id_41,
- SpanId: Id_42,
+ TraceId: Id_47,
+ SpanId: Id_96,
[...]
- Resource: GET localhost/function/HandlerTwoParamsSync,
+ Resource: GET localhost/function/ThrowingHandlerAsyncTask,
[...]
- ParentId: Id_43,
+ ParentId: Id_72,
1 occurrences of : - http.url: http://localhost/function/HandlerTwoParamsSync,
- runtime-id: Guid_15,
- span.kind: client,
+ http.url: http://localhost/function/ThrowingHandlerAsyncTask,
+ runtime-id: Guid_24,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_97,
+ SpanId: Id_98,
+ Name: manual.HandlerGenericDictionaryParam,
+ Resource: manual.HandlerGenericDictionaryParam,
+ Service: Bootstrap,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_25,
[...]
+ _dd.agent_psr: 1.0,
[...]
- TraceId: Id_7,
- SpanId: Id_44,
+ TraceId: Id_97,
+ SpanId: Id_99,
[...]
- Resource: GET localhost/function/HandlerTwoParamsSyncWithContext,
+ Resource: GET serverless-dummy-api:9005/function/HandlerGenericDictionaryParam,
[...]
- ParentId: Id_45,
- Error: 1,
+ ParentId: Id_98,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerTwoParamsSyncWithContext,
- runtime-id: Guid_16,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerGenericDictionaryParam,
+ runtime-id: Guid_25,
[...]
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_100,
+ SpanId: Id_101,
+ Name: manual.HandlerNestedClassParam,
+ Resource: manual.HandlerNestedClassParam,
+ Service: Bootstrap,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_26,
+ _dd.p.dm: -0
+ },
[...]
+ _dd.agent_psr: 1.0,
[...]
- TraceId: Id_46,
- SpanId: Id_47,
+ TraceId: Id_100,
+ SpanId: Id_102,
[...]
- Resource: GET localhost/function/HandlerTwoParamsVoid,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNestedClassParam,
[...]
- ParentId: Id_48,
- Error: 1,
+ ParentId: Id_101,
[...]
- error.msg: Cannot assign requested address Cannot assign requested address,
- error.stack:
[...]
- error.type: System.Net.WebException,
[...]
- http.url: http://localhost/function/HandlerTwoParamsVoid,
- runtime-id: Guid_17,
- span.kind: client,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNestedClassParam,
+ runtime-id: Guid_26,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
+ },
+ {
+ TraceId: Id_103,
+ SpanId: Id_104,
+ Name: manual.HandlerNestedStructParam,
+ Resource: manual.HandlerNestedStructParam,
+ Service: Bootstrap,
+ Tags: {
+ language: dotnet,
+ runtime-id: Guid_27,
[...]
+ _dd.agent_psr: 1.0,
[...]
+ },
+ {
+ TraceId: Id_103,
+ SpanId: Id_105,
+ Name: http.request,
+ Resource: GET serverless-dummy-api:9005/function/HandlerNestedStructParam,
+ Service: Bootstrap-http-client,
+ Type: http,
+ ParentId: Id_104,
+ Tags: {
+ component: WebRequest,
+ http.method: GET,
+ http.status_code: 200,
+ http.url: http://serverless-dummy-api:9005/function/HandlerNestedStructParam,
+ runtime-id: Guid_27,
+ span.kind: client
+ },
+ Metrics: {
+ _dd.top_level: 1.0
+ }
|
Benchmarks Report 🐌Benchmarks for #3359 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AspNetCoreBenchmark - Unknown 🤷 Same allocations ✔️Raw results
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️Raw results
|
Code Coverage Report 📊✔️ Merging #3359 into master will not change line coverage
View the full report for further details: Datadog.Trace Breakdown ✔️
The following classes have significant coverage changes.
View the full reports for further details: |
bouwkast
left a comment
There was a problem hiding this comment.
Looks good to me
The diagram, images, and comments were all very helpful 👍
Summary of changes
Reason for change
I need to work on the serverless implementation, and I was finding the serverless tests quite confusing as there's a lot of containers and a lot of back and forth. The changes in this PR add documentation, move the "dummy" lambda extension into the integration test (instead of using separate containers), make the behaviour more "realistic", and add manual instrumentation in for good measure. This PR updates the snapshots as appropriate.
Implementation details
From the docs (added in this PR), this is now what the implementation looks like. The main changes I made were to add the dummy API (previously it was always sending requests to an API that doesn't exist), add the manual span, and to make the "context container" a part of the test fixture.
sequenceDiagram participant xunit participant Samples.Aws.Lambda participant MockLambdaExtension participant MockTracerAgent participant Handler participant Tracer participant Dummy API autonumber xunit->>+Samples.Aws.Lambda: StartProcessAndWaitForExit() loop For every handler container Samples.Aws.Lambda->>+Handler : Post() Handler->>+MockLambdaExtension: /lambda/start-invocation() MockLambdaExtension-->>-Handler: Context/null Handler->>+Tracer : Start dummy Span Handler->>+Tracer : Start manual span() Handler->>+Dummy API: GET() (instrumented) activate Tracer Dummy API-->>-Handler: 200 OK deactivate Tracer Tracer-->>-Handler: Stop manual span() Handler->>+MockLambdaExtension: /lambda/end-invocation() MockLambdaExtension-->>-Handler: Handler-->>-Samples.Aws.Lambda : 200 OK Tracer-->-Handler : Dummy Span ends end Samples.Aws.Lambda-->>xunit: exit 0 deactivate Samples.Aws.Lambda Note over xunit,MockTracerAgent: Integration Test container Note over Handler,Tracer: Handler container Note over Dummy API: Dummy API containerI also added extra tests for handlers that explicitly generate an error, and for several different type of handler arguments.
Test coverage
Coverage is basically the same, should be a little better. The snapshot file looks a bit like the following, where there's lot of independent traces. These new snapshots highlight a couple of problematic cases where we're not instrumenting the handlers correctly
Other details
The lambda instrumentation automatically creates a span when a handler method is called. The traces in the snapshots highlight the (new) test cases I added where we're not correctly creating the handler trace because we're failing to instrument in the
LambdaHandler:I'll add support for these in a subsequent PR