dd-trace-dotnet icon indicating copy to clipboard operation
dd-trace-dotnet copied to clipboard

Update Samples.AWS.Lambda and tests

Open andrewlock opened this issue 3 years ago • 3 comments

Summary of changes

  • Refactor tests, and add some explainers about how it all works
  • Added custom instrumentation to the serverless tests
  • Don't fail with "unknown address" in all tests

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, 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, this is now what the implementation looks like. The only real change I made was to add the dummy API (previously it was always sending requests to an API that doesn't exist) and the manual span.

sequenceDiagram
    participant xunit
    participant MockTracerAgent
    participant Samples.Aws.Lambda
    participant Handler
    participant Tracer
    participant ContextContainer
    participant Dummy API
    autonumber
    
    xunit->>+MockTracerAgent: MockTracerAgent.Create()
    xunit->>+Samples.Aws.Lambda: StartProcessAndWaitForExit()
    
    loop For every handler container
        Samples.Aws.Lambda->>+Handler : Post()
        Handler->>+ContextContainer: GetContext() (not instrumented)
        ContextContainer-->>-Handler: Context/null
        Handler->>+Tracer: CreateScope() (manual instrumentation)
        Handler->>+Dummy API: GET() (instrumented)
        Dummy API-->>-Handler: 200 OK
        Tracer-->>-Handler: Dispose() (manual instrumentation)
        Handler-->>-Samples.Aws.Lambda : 200 OK
    end
    
    Samples.Aws.Lambda-->>xunit: exit 0
    deactivate Samples.Aws.Lambda
    MockTracerAgent-->>xunit: exit 0
    deactivate MockTracerAgent
    
    Note over xunit,Samples.Aws.Lambda: Integration Test container
    Note over Handler,Tracer: Handler container
    Note over ContextContainer: Context container
    Note over Dummy API: Dummy API container

I 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, apart from the "with context" handlers, which all share a parent trace. There's one exception, as noted after the screenshot: ui perfetto dev_

Other details

The lambda instrumentation automatically creates a span when a handler method is called, so all the "manual" spans created in the handler have a parent ID set to this span. This "handler method span" is not in the received span list.

Warning This seems wrong to me, I think we should receive those handler spans. I'm going to investigate in a future PR.

The one exception is the generic dictionary parameter which currently fails to instrument, due to a limitation in LambdaHandler. Therefore, it has no parent span. I will address this issue in a subsequent PR.

andrewlock avatar Oct 14 '22 17:10 andrewlock

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer. The diff is simplistic, so please check some files anyway while we improve it.

1 occurrences of :

+    Name: manual.BaseHandlerNoParamSync,
+    Resource: manual.BaseHandlerNoParamSync,
+    Service: Bootstrap,
+    ParentId: Id_3,
+    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_1,
+    SpanId: Id_4,
[...]
-    Resource: GET localhost/function/BaseHandlerNoParamSync,
+    Resource: GET serverless-dummy-api:9005/function/BaseHandlerNoParamSync,
[...]
-    ParentId: Id_3,
-    Error: 1,
+    ParentId: Id_2,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/BaseHandlerNoParamSync,
+      runtime-id: Guid_1,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_5,
+    SpanId: Id_6,
+    Name: manual.BaseHandlerOneParamAsync,
+    Resource: manual.BaseHandlerOneParamAsync,
+    Service: Bootstrap,
+    ParentId: Id_7,
+    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_8,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/BaseHandlerOneParamAsync,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_6,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/BaseHandlerOneParamAsync,
+      runtime-id: Guid_2,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_9,
+    SpanId: Id_10,
+    Name: manual.BaseHandlerOneParamSyncWithContext,
+    Resource: manual.BaseHandlerOneParamSyncWithContext,
+    Service: Bootstrap,
+    ParentId: Id_11,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_3
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_9,
+    SpanId: Id_12,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/BaseHandlerOneParamSyncWithContext,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_10,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/BaseHandlerOneParamSyncWithContext,
+      runtime-id: Guid_3,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_13,
+    SpanId: Id_14,
+    Name: manual.BaseHandlerTwoParamsSync,
+    Resource: manual.BaseHandlerTwoParamsSync,
+    Service: Bootstrap,
+    ParentId: Id_15,
+    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_13,
+    SpanId: Id_16,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/BaseHandlerTwoParamsSync,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_14,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/BaseHandlerTwoParamsSync,
+      runtime-id: Guid_4,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_17,
+    SpanId: Id_18,
+    Name: manual.BaseHandlerTwoParamsVoid,
+    Resource: manual.BaseHandlerTwoParamsVoid,
+    Service: Bootstrap,
+    ParentId: Id_19,
+    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_17,
+    SpanId: Id_20,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/BaseHandlerTwoParamsVoid,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_18,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/BaseHandlerTwoParamsVoid,
+      runtime-id: Guid_5,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_21,
+    SpanId: Id_22,
+    Name: manual.HandlerGenericDictionaryParam,
+    Resource: manual.HandlerGenericDictionaryParam,
+    Service: Bootstrap,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_6,
+      _dd.p.dm: -0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.agent_psr: 1.0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_21,
+    SpanId: Id_23,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerGenericDictionaryParam,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_22,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerGenericDictionaryParam,
+      runtime-id: Guid_6,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_24,
+    SpanId: Id_25,
+    Name: manual.HandlerNestedClassParam,
+    Resource: manual.HandlerNestedClassParam,
+    Service: Bootstrap,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_7,
+      _dd.p.dm: -0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.agent_psr: 1.0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_24,
+    SpanId: Id_26,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNestedClassParam,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_25,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNestedClassParam,
+      runtime-id: Guid_7,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_27,
+    SpanId: Id_28,
+    Name: manual.HandlerNestedStructParam,
+    Resource: manual.HandlerNestedStructParam,
+    Service: Bootstrap,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_8,
+      _dd.p.dm: -0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.agent_psr: 1.0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_27,
+    SpanId: Id_29,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNestedStructParam,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_28,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNestedStructParam,
+      runtime-id: Guid_8,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_30,
+    SpanId: Id_31,
+    Name: manual.HandlerNoParamAsync,
+    Resource: manual.HandlerNoParamAsync,
+    Service: Bootstrap,
+    ParentId: Id_32,
+    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_30,
+    SpanId: Id_33,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNoParamAsync,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_31,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNoParamAsync,
+      runtime-id: Guid_9,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_34,
+    SpanId: Id_35,
+    Name: manual.HandlerNoParamSync,
+    Resource: manual.HandlerNoParamSync,
+    Service: Bootstrap,
+    ParentId: Id_36,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_10,
+      _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_34,
+    SpanId: Id_37,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNoParamSync,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_35,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNoParamSync,
+      runtime-id: Guid_10,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_9,
+    SpanId: Id_38,
+    Name: manual.HandlerNoParamSyncWithContext,
+    Resource: manual.HandlerNoParamSyncWithContext,
+    Service: Bootstrap,
+    ParentId: Id_39,
+    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_9,
+    SpanId: Id_40,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNoParamSyncWithContext,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_38,
+    Tags: {
+      component: WebRequest,
+      http.method: GET,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNoParamSyncWithContext,
+      runtime-id: Guid_11,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_41,
+    SpanId: Id_42,
+    Name: manual.HandlerNoParamVoid,
+    Resource: manual.HandlerNoParamVoid,
+    Service: Bootstrap,
+    ParentId: Id_43,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_12,
+      _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_44,
+    Name: http.request,
+    Resource: GET serverless-dummy-api:9005/function/HandlerNoParamVoid,
+    Service: Bootstrap-http-client,
+    Type: http,
+    ParentId: Id_42,
[...]
-      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,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerNoParamVoid,
+      runtime-id: Guid_12,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_45,
+    SpanId: Id_46,
+    Name: manual.HandlerOneParamAsync,
+    Resource: manual.HandlerOneParamAsync,
+    Service: Bootstrap,
+    ParentId: Id_47,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_13,

1 occurrences of :

-    TraceId: Id_4,
-    SpanId: Id_5,
+    TraceId: Id_45,
+    SpanId: Id_48,
[...]
-    Resource: GET localhost/function/BaseHandlerOneParamAsync,
+    Resource: GET serverless-dummy-api:9005/function/HandlerOneParamAsync,
[...]
-    ParentId: Id_6,
-    Error: 1,
+    ParentId: Id_46,
[...]
-      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,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerOneParamAsync,
+      runtime-id: Guid_13,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_49,
+    SpanId: Id_50,
+    Name: manual.HandlerOneParamSync,
+    Resource: manual.HandlerOneParamSync,
+    Service: Bootstrap,
+    ParentId: Id_51,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_14,

1 occurrences of :

-    TraceId: Id_7,
-    SpanId: Id_8,
+    TraceId: Id_49,
+    SpanId: Id_52,
[...]
-    Resource: GET localhost/function/BaseHandlerOneParamSyncWithContext,
+    Resource: GET serverless-dummy-api:9005/function/HandlerOneParamSync,
[...]
-    ParentId: Id_9,
-    Error: 1,
+    ParentId: Id_50,
[...]
-      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/HandlerOneParamSync,
+      runtime-id: Guid_14,
[...]
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_9,
+    SpanId: Id_53,
+    Name: manual.HandlerOneParamSyncWithContext,
+    Resource: manual.HandlerOneParamSyncWithContext,
+    Service: Bootstrap,
+    ParentId: Id_54,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_15
+    },

1 occurrences of :

-    TraceId: Id_10,
-    SpanId: Id_11,
+    TraceId: Id_9,
+    SpanId: Id_55,
[...]
-    Resource: GET localhost/function/BaseHandlerTwoParamsSync,
+    Resource: GET serverless-dummy-api:9005/function/HandlerOneParamSyncWithContext,
[...]
-    ParentId: Id_12,
-    Error: 1,
+    ParentId: Id_53,
[...]
-      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,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerOneParamSyncWithContext,
+      runtime-id: Guid_15,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_56,
+    SpanId: Id_57,
+    Name: manual.HandlerOneParamVoid,
+    Resource: manual.HandlerOneParamVoid,
+    Service: Bootstrap,
+    ParentId: Id_58,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_16,

1 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_14,
+    TraceId: Id_56,
+    SpanId: Id_59,
[...]
-    Resource: GET localhost/function/BaseHandlerTwoParamsVoid,
+    Resource: GET serverless-dummy-api:9005/function/HandlerOneParamVoid,
[...]
-    ParentId: Id_15,
-    Error: 1,
+    ParentId: Id_57,
[...]
-      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,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerOneParamVoid,
+      runtime-id: Guid_16,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_60,
+    SpanId: Id_61,
+    Name: manual.HandlerStructParam,
+    Resource: manual.HandlerStructParam,
+    Service: Bootstrap,
+    ParentId: Id_62,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_17,

1 occurrences of :

-    TraceId: Id_16,
-    SpanId: Id_17,
+    TraceId: Id_60,
+    SpanId: Id_63,
[...]
-    Resource: GET localhost/function/HandlerNoParamAsync,
+    Resource: GET serverless-dummy-api:9005/function/HandlerStructParam,
[...]
-    ParentId: Id_18,
-    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/HandlerNoParamAsync,
-      runtime-id: Guid_6,
-      span.kind: client,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerStructParam,
+      runtime-id: Guid_17,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_64,
+    SpanId: Id_65,
+    Name: manual.HandlerTwoParamsAsync,
+    Resource: manual.HandlerTwoParamsAsync,
+    Service: Bootstrap,
+    ParentId: Id_66,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_18,

1 occurrences of :

-    TraceId: Id_19,
-    SpanId: Id_20,
+    TraceId: Id_64,
+    SpanId: Id_67,
[...]
-    Resource: GET localhost/function/HandlerNoParamSync,
+    Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsAsync,
[...]
-    ParentId: Id_21,
-    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/HandlerNoParamSync,
-      runtime-id: Guid_7,
-      span.kind: client,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsAsync,
+      runtime-id: Guid_18,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_68,
+    SpanId: Id_69,
+    Name: manual.HandlerTwoParamsSync,
+    Resource: manual.HandlerTwoParamsSync,
+    Service: Bootstrap,
+    ParentId: Id_70,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_19,

1 occurrences of :

-    TraceId: Id_7,
-    SpanId: Id_22,
+    TraceId: Id_68,
+    SpanId: Id_71,
[...]
-    Resource: GET localhost/function/HandlerNoParamSyncWithContext,
+    Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsSync,
[...]
-    ParentId: Id_23,
-    Error: 1,
+    ParentId: Id_69,
[...]
-      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/HandlerTwoParamsSync,
+      runtime-id: Guid_19,
[...]
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_9,
+    SpanId: Id_72,
+    Name: manual.HandlerTwoParamsSyncWithContext,
+    Resource: manual.HandlerTwoParamsSyncWithContext,
+    Service: Bootstrap,
+    ParentId: Id_73,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_20
+    },

1 occurrences of :

-    TraceId: Id_24,
-    SpanId: Id_25,
+    TraceId: Id_9,
+    SpanId: Id_74,
[...]
-    Resource: GET localhost/function/HandlerNoParamVoid,
+    Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsSyncWithContext,
[...]
-    ParentId: Id_26,
-    Error: 1,
+    ParentId: Id_72,
[...]
-      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,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsSyncWithContext,
+      runtime-id: Guid_20,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_75,
+    SpanId: Id_76,
+    Name: manual.HandlerTwoParamsVoid,
+    Resource: manual.HandlerTwoParamsVoid,
+    Service: Bootstrap,
+    ParentId: Id_77,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_21,

1 occurrences of :

-    TraceId: Id_27,
-    SpanId: Id_28,
+    TraceId: Id_75,
+    SpanId: Id_78,
[...]
-    Resource: GET localhost/function/HandlerOneParamAsync,
+    Resource: GET serverless-dummy-api:9005/function/HandlerTwoParamsVoid,
[...]
-    ParentId: Id_29,
-    Error: 1,
+    ParentId: Id_76,
[...]
-      error.msg: Cannot assign requested address Cannot assign requested address,
-      error.stack:
[...]
-      error.type: System.Net.WebException,
[...]
-      http.url: http://localhost/function/HandlerOneParamAsync,
-      runtime-id: Guid_10,
-      span.kind: client,
+      http.status_code: 200,
+      http.url: http://serverless-dummy-api:9005/function/HandlerTwoParamsVoid,
+      runtime-id: Guid_21,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_79,
+    SpanId: Id_80,
+    Name: manual.ThrowingHandler,
+    Resource: manual.ThrowingHandler,
+    Service: Bootstrap,
+    ParentId: Id_81,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_22,

1 occurrences of :

-    TraceId: Id_30,
-    SpanId: Id_31,
-    Name: http.request,
-    Resource: GET localhost/function/HandlerOneParamSync,
-    Service: Bootstrap-http-client,
-    Type: http,
-    ParentId: Id_32,
-    Error: 1,
+    TraceId: Id_9,
+    SpanId: Id_82,
+    Name: manual.ThrowingHandler,
+    Resource: manual.ThrowingHandler,
+    Service: Bootstrap,
+    ParentId: Id_83,
[...]
-      component: WebRequest,
-      error.msg: Cannot assign requested address Cannot assign requested address,
-      error.stack:
[...]
-      error.type: System.Net.WebException,
-      http.method: GET,
-      http.url: http://localhost/function/HandlerOneParamSync,
-      runtime-id: Guid_11,
-      span.kind: client,
-      _dd.p.dm: -0
+      language: dotnet,
+      runtime-id: Guid_23

1 occurrences of :

-    TraceId: Id_7,
-    SpanId: Id_33,
+    TraceId: Id_79,
+    SpanId: Id_84,
[...]
-    Resource: GET localhost/function/HandlerOneParamSyncWithContext,
+    Resource: GET localhost/function/ThrowingHandler,
[...]
-    ParentId: Id_34,
+    ParentId: Id_80,

1 occurrences of :

-      http.url: http://localhost/function/HandlerOneParamSyncWithContext,
-      runtime-id: Guid_12,
+      http.url: http://localhost/function/ThrowingHandler,
+      runtime-id: Guid_22,
[...]
-      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_9,
+    SpanId: Id_85,
[...]
-    Resource: GET localhost/function/HandlerOneParamVoid,
+    Resource: GET localhost/function/ThrowingHandler,
[...]
-    ParentId: Id_37,
+    ParentId: Id_82,

1 occurrences of :

-      http.url: http://localhost/function/HandlerOneParamVoid,
-      runtime-id: Guid_13,
-      span.kind: client,
+      http.url: http://localhost/function/ThrowingHandler,
+      runtime-id: Guid_23,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_86,
+    SpanId: Id_87,
+    Name: manual.ThrowingHandlerAsync,
+    Resource: manual.ThrowingHandlerAsync,
+    Service: Bootstrap,
+    ParentId: Id_88,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_24,

1 occurrences of :

-    TraceId: Id_38,
-    SpanId: Id_39,
+    TraceId: Id_9,
+    SpanId: Id_89,
+    Name: manual.ThrowingHandlerAsync,
+    Resource: manual.ThrowingHandlerAsync,
+    Service: Bootstrap,
+    ParentId: Id_90,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_25
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_86,
+    SpanId: Id_91,
[...]
-    Resource: GET localhost/function/HandlerTwoParamsAsync,
+    Resource: GET localhost/function/ThrowingHandlerAsync,
[...]
-    ParentId: Id_40,
+    ParentId: Id_87,

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_24,
+      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_9,
+    SpanId: Id_92,
[...]
-    Resource: GET localhost/function/HandlerTwoParamsSync,
+    Resource: GET localhost/function/ThrowingHandlerAsync,
[...]
-    ParentId: Id_43,
+    ParentId: Id_89,

1 occurrences of :

-      http.url: http://localhost/function/HandlerTwoParamsSync,
-      runtime-id: Guid_15,
-      span.kind: client,
+      http.url: http://localhost/function/ThrowingHandlerAsync,
+      runtime-id: Guid_25,
+      span.kind: client
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_93,
+    SpanId: Id_94,
+    Name: manual.ThrowingHandlerAsyncTask,
+    Resource: manual.ThrowingHandlerAsyncTask,
+    Service: Bootstrap,
+    ParentId: Id_95,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_26,

1 occurrences of :

-    TraceId: Id_7,
-    SpanId: Id_44,
+    TraceId: Id_9,
+    SpanId: Id_96,
+    Name: manual.ThrowingHandlerAsyncTask,
+    Resource: manual.ThrowingHandlerAsyncTask,
+    Service: Bootstrap,
+    ParentId: Id_97,
+    Tags: {
+      language: dotnet,
+      runtime-id: Guid_27
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_93,
+    SpanId: Id_98,
[...]
-    Resource: GET localhost/function/HandlerTwoParamsSyncWithContext,
+    Resource: GET localhost/function/ThrowingHandlerAsyncTask,
[...]
-    ParentId: Id_45,
+    ParentId: Id_94,

1 occurrences of :

-      http.url: http://localhost/function/HandlerTwoParamsSyncWithContext,
-      runtime-id: Guid_16,
+      http.url: http://localhost/function/ThrowingHandlerAsyncTask,
+      runtime-id: Guid_26,
[...]
-      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_46,
-    SpanId: Id_47,
+    TraceId: Id_9,
+    SpanId: Id_99,
[...]
-    Resource: GET localhost/function/HandlerTwoParamsVoid,
+    Resource: GET localhost/function/ThrowingHandlerAsyncTask,
[...]
-    ParentId: Id_48,
+    ParentId: Id_96,

1 occurrences of :

-      http.url: http://localhost/function/HandlerTwoParamsVoid,
-      runtime-id: Guid_17,
-      span.kind: client,
-      _dd.p.dm: -0
+      http.url: http://localhost/function/ThrowingHandlerAsyncTask,
+      runtime-id: Guid_27,
+      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

github-actions[bot] avatar Oct 14 '22 17:10 github-actions[bot]

Benchmarks Report :snail:

Benchmarks for #3359 compared to master:

  • All benchmarks have the same speed
  • All benchmarks have the same allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net472 778μs 693ns 2.69μs 0.388 0 0 3.22 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 534μs 237ns 888ns 0 0 0 2.63 KB
#3359 WriteAndFlushEnrichedTraces net472 786μs 593ns 2.22μs 0.388 0 0 3.22 KB
#3359 WriteAndFlushEnrichedTraces netcoreapp3.1 537μs 228ns 853ns 0 0 0 2.63 KB
Benchmarks.Trace.AppSecBodyBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net472 198ns 0.169ns 0.656ns 0.0727 0 0 457 B
master AllCycleSimpleBody netcoreapp3.1 268ns 0.139ns 0.537ns 0.00619 0 0 456 B
master AllCycleMoreComplexBody net472 226ns 0.318ns 1.19ns 0.0688 0 0 433 B
master AllCycleMoreComplexBody netcoreapp3.1 253ns 0.133ns 0.499ns 0.00592 0 0 432 B
master BodyExtractorSimpleBody net472 276ns 0.317ns 1.23ns 0.0574 0 0 361 B
master BodyExtractorSimpleBody netcoreapp3.1 245ns 0.147ns 0.55ns 0.0037 0 0 272 B
master BodyExtractorMoreComplexBody net472 15.6μs 8.36ns 30.2ns 1.21 0.0157 0 7.62 KB
master BodyExtractorMoreComplexBody netcoreapp3.1 12.5μs 4.78ns 18.5ns 0.087 0 0 6.75 KB
#3359 AllCycleSimpleBody net472 197ns 0.0429ns 0.16ns 0.0726 0 0 457 B
#3359 AllCycleSimpleBody netcoreapp3.1 255ns 0.226ns 0.845ns 0.00614 0 0 456 B
#3359 AllCycleMoreComplexBody net472 206ns 0.189ns 0.732ns 0.0688 0 0 433 B
#3359 AllCycleMoreComplexBody netcoreapp3.1 252ns 0.316ns 1.23ns 0.00596 0 0 432 B
#3359 BodyExtractorSimpleBody net472 270ns 0.262ns 0.982ns 0.0573 0 0 361 B
#3359 BodyExtractorSimpleBody netcoreapp3.1 243ns 0.18ns 0.673ns 0.00364 0 0 272 B
#3359 BodyExtractorMoreComplexBody net472 15.7μs 11.7ns 45.3ns 1.2 0.0156 0 7.62 KB
#3359 BodyExtractorMoreComplexBody netcoreapp3.1 13.1μs 3.95ns 15.3ns 0.0913 0 0 6.75 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
master SendRequest netcoreapp3.1 180μs 157ns 608ns 0.27 0 0 20.68 KB
#3359 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#3359 SendRequest netcoreapp3.1 181μs 271ns 1.05μs 0.271 0 0 20.69 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net472 1.85μs 0.917ns 3.18ns 0.155 0.000923 0 979 B
master ExecuteNonQuery netcoreapp3.1 1.45μs 0.697ns 2.7ns 0.0131 0 0 968 B
#3359 ExecuteNonQuery net472 1.79μs 0.328ns 1.23ns 0.155 0.000898 0 979 B
#3359 ExecuteNonQuery netcoreapp3.1 1.44μs 0.84ns 2.91ns 0.0129 0 0 968 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net472 2.61μs 0.936ns 3.5ns 0.188 0 0 1.19 KB
master CallElasticsearch netcoreapp3.1 1.54μs 0.646ns 2.42ns 0.0154 0 0 1.13 KB
master CallElasticsearchAsync net472 2.62μs 1.52ns 5.87ns 0.21 0 0 1.32 KB
master CallElasticsearchAsync netcoreapp3.1 1.61μs 0.474ns 1.84ns 0.0169 0 0 1.25 KB
#3359 CallElasticsearch net472 2.53μs 1.12ns 4.34ns 0.189 0 0 1.19 KB
#3359 CallElasticsearch netcoreapp3.1 1.55μs 0.609ns 2.36ns 0.0148 0 0 1.13 KB
#3359 CallElasticsearchAsync net472 2.65μs 1.3ns 4.86ns 0.21 0 0 1.32 KB
#3359 CallElasticsearchAsync netcoreapp3.1 1.65μs 1.04ns 3.88ns 0.0173 0 0 1.25 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net472 2.79μs 1.35ns 5.23ns 0.23 0 0 1.45 KB
master ExecuteAsync netcoreapp3.1 1.77μs 0.593ns 2.22ns 0.0186 0 0 1.38 KB
#3359 ExecuteAsync net472 2.8μs 2.22ns 8.32ns 0.231 0 0 1.45 KB
#3359 ExecuteAsync netcoreapp3.1 1.83μs 2.56ns 9.58ns 0.0179 0 0 1.38 KB
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net472 5.87μs 1.86ns 6.98ns 0.443 0 0 2.8 KB
master SendAsync netcoreapp3.1 3.62μs 2.54ns 9.51ns 0.0345 0 0 2.63 KB
#3359 SendAsync net472 5.95μs 3.5ns 13.5ns 0.445 0 0 2.8 KB
#3359 SendAsync netcoreapp3.1 3.69μs 2.01ns 7.54ns 0.0353 0 0 2.63 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 3.1μs 4ns 15.5ns 0.298 0 0 1.88 KB
master EnrichedLog netcoreapp3.1 2.47μs 1.13ns 4.39ns 0.0259 0 0 1.91 KB
#3359 EnrichedLog net472 3.22μs 2.47ns 9.57ns 0.298 0 0 1.88 KB
#3359 EnrichedLog netcoreapp3.1 2.43μs 1.33ns 4.99ns 0.0254 0 0 1.91 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 152μs 141ns 547ns 0.678 0.226 0 4.72 KB
master EnrichedLog netcoreapp3.1 120μs 253ns 979ns 0.0603 0 0 4.55 KB
#3359 EnrichedLog net472 151μs 130ns 505ns 0.678 0.226 0 4.72 KB
#3359 EnrichedLog netcoreapp3.1 121μs 239ns 927ns 0.0598 0 0 4.55 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.86μs 2.77ns 10.7ns 0.578 0.00292 0 3.65 KB
master EnrichedLog netcoreapp3.1 4.46μs 8.48ns 32.8ns 0.0555 0 0 3.98 KB
#3359 EnrichedLog net472 5.73μs 0.8ns 2.88ns 0.58 0.00286 0 3.65 KB
#3359 EnrichedLog netcoreapp3.1 4.64μs 2.84ns 11ns 0.0533 0 0 3.98 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net472 2.37μs 2.36ns 8.52ns 0.223 0 0 1.4 KB
master SendReceive netcoreapp3.1 1.8μs 0.709ns 2.75ns 0.018 0 0 1.35 KB
#3359 SendReceive net472 2.31μs 3.72ns 14.4ns 0.223 0 0 1.4 KB
#3359 SendReceive netcoreapp3.1 1.83μs 0.74ns 2.77ns 0.0183 0 0 1.35 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.03μs 4.05ns 15.7ns 0.364 0 0 2.3 KB
master EnrichedLog netcoreapp3.1 4.41μs 1.73ns 6.23ns 0.0242 0 0 1.86 KB
#3359 EnrichedLog net472 5.05μs 2.34ns 9.05ns 0.363 0 0 2.3 KB
#3359 EnrichedLog netcoreapp3.1 4.3μs 1.78ns 6.88ns 0.0237 0 0 1.86 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net472 1.17μs 0.369ns 1.38ns 0.134 0 0 842 B
master StartFinishSpan netcoreapp3.1 944ns 0.311ns 1.12ns 0.0108 0 0 792 B
master StartFinishScope net472 1.45μs 0.481ns 1.8ns 0.146 0 0 923 B
master StartFinishScope netcoreapp3.1 1.05μs 0.225ns 0.811ns 0.0121 0 0 912 B
#3359 StartFinishSpan net472 1.24μs 0.476ns 1.78ns 0.134 0 0 842 B
#3359 StartFinishSpan netcoreapp3.1 959ns 0.363ns 1.41ns 0.0104 0 0 792 B
#3359 StartFinishScope net472 1.43μs 0.46ns 1.78ns 0.146 0 0 923 B
#3359 StartFinishScope netcoreapp3.1 1.08μs 0.403ns 1.51ns 0.0124 0 0 912 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net472 1.51μs 0.391ns 1.51ns 0.147 0 0 923 B
master RunOnMethodBegin netcoreapp3.1 1.14μs 0.92ns 3.44ns 0.0124 0 0 912 B
#3359 RunOnMethodBegin net472 1.54μs 0.379ns 1.42ns 0.146 0 0 923 B
#3359 RunOnMethodBegin netcoreapp3.1 1.16μs 2.18ns 8.15ns 0.0123 0 0 912 B

andrewlock avatar Oct 14 '22 17:10 andrewlock

Code Coverage Report :bar_chart:

:heavy_check_mark: Merging #3359 into master will not change line coverage :heavy_check_mark: Merging #3359 into master will not change branch coverage :heavy_check_mark: Merging #3359 into master will will decrease complexity by 6

master #3359 Change
Lines 19528 / 26976 19530 / 26971
Lines % 72% 72% 0% :heavy_check_mark:
Branches 11605 / 16776 11612 / 16770
Branches % 69% 69% 0% :heavy_check_mark:
Complexity 18148 18142 -6 :heavy_check_mark:

View the full report for further details:

Datadog.Trace Breakdown :heavy_check_mark:

master #3359 Change
Lines % 72% 72% 0% :heavy_check_mark:
Branches % 69% 69% 0% :heavy_check_mark:
Complexity 18148 18142 -6 :heavy_check_mark:

The following classes have significant coverage changes.

File Line coverage change Branch coverage change Complexity change
Datadog.Trace.Ci.GitInfo -17% :no_entry: -11% :no_entry: 0 :heavy_check_mark:

View the full reports for further details:

andrewlock avatar Oct 14 '22 20:10 andrewlock

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer. The diff is simplistic, so please check some files anyway while we improve it.

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
+    }

github-actions[bot] avatar Oct 18 '22 11:10 github-actions[bot]

Benchmarks Report :snail:

Benchmarks for #3359 compared to master:

  • All benchmarks have the same speed
  • All benchmarks have the same allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net472 825μs 467ns 1.75μs 0.408 0 0 3.22 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 572μs 146ns 566ns 0 0 0 2.63 KB
#3359 WriteAndFlushEnrichedTraces net472 812μs 460ns 1.72μs 0.398 0 0 3.22 KB
#3359 WriteAndFlushEnrichedTraces netcoreapp3.1 564μs 351ns 1.36μs 0 0 0 2.63 KB
Benchmarks.Trace.AppSecBodyBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net472 196ns 0.202ns 0.727ns 0.0701 0 0 441 B
master AllCycleSimpleBody netcoreapp3.1 254ns 0.265ns 1.03ns 0.00587 0 0 440 B
master AllCycleMoreComplexBody net472 194ns 0.0749ns 0.27ns 0.0662 0 0 417 B
master AllCycleMoreComplexBody netcoreapp3.1 251ns 0.132ns 0.494ns 0.00568 0 0 416 B
master BodyExtractorSimpleBody net472 298ns 0.355ns 1.33ns 0.0573 0 0 361 B
master BodyExtractorSimpleBody netcoreapp3.1 241ns 0.171ns 0.638ns 0.00374 0 0 272 B
master BodyExtractorMoreComplexBody net472 15.7μs 17.2ns 64.3ns 1.21 0.0157 0 7.62 KB
master BodyExtractorMoreComplexBody netcoreapp3.1 13μs 11.5ns 44.4ns 0.09 0 0 6.75 KB
#3359 AllCycleSimpleBody net472 203ns 0.0535ns 0.193ns 0.0701 0 0 441 B
#3359 AllCycleSimpleBody netcoreapp3.1 252ns 0.196ns 0.733ns 0.00598 0 0 440 B
#3359 AllCycleMoreComplexBody net472 194ns 0.057ns 0.205ns 0.0662 0 0 417 B
#3359 AllCycleMoreComplexBody netcoreapp3.1 251ns 0.189ns 0.733ns 0.0058 0 0 416 B
#3359 BodyExtractorSimpleBody net472 289ns 0.161ns 0.601ns 0.0573 0 0 361 B
#3359 BodyExtractorSimpleBody netcoreapp3.1 241ns 0.191ns 0.714ns 0.00364 0 0 272 B
#3359 BodyExtractorMoreComplexBody net472 15.8μs 16.4ns 61.4ns 1.21 0.0157 0 7.62 KB
#3359 BodyExtractorMoreComplexBody netcoreapp3.1 12.9μs 6.2ns 23.2ns 0.0899 0 0 6.75 KB
Benchmarks.Trace.AspNetCoreBenchmark - Unknown :shrug: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
master SendRequest netcoreapp3.1 182μs 249ns 966ns 0.181 0 0 20.66 KB
#3359 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#3359 SendRequest netcoreapp3.1 182μs 237ns 919ns 0.274 0 0 20.67 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net472 1.84μs 1.02ns 3.97ns 0.158 0.000923 0 995 B
master ExecuteNonQuery netcoreapp3.1 1.39μs 0.813ns 3.15ns 0.0133 0 0 984 B
#3359 ExecuteNonQuery net472 1.88μs 0.57ns 2.13ns 0.158 0.000945 0 995 B
#3359 ExecuteNonQuery netcoreapp3.1 1.51μs 0.633ns 2.37ns 0.013 0 0 984 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net472 2.43μs 0.758ns 2.84ns 0.191 0 0 1.2 KB
master CallElasticsearch netcoreapp3.1 1.53μs 0.529ns 2.05ns 0.0153 0 0 1.14 KB
master CallElasticsearchAsync net472 2.68μs 1.43ns 5.55ns 0.212 0 0 1.34 KB
master CallElasticsearchAsync netcoreapp3.1 1.64μs 0.533ns 2ns 0.0172 0 0 1.26 KB
#3359 CallElasticsearch net472 2.6μs 0.794ns 2.97ns 0.191 0 0 1.2 KB
#3359 CallElasticsearch netcoreapp3.1 1.54μs 1.1ns 4.25ns 0.0154 0 0 1.14 KB
#3359 CallElasticsearchAsync net472 2.68μs 0.998ns 3.73ns 0.213 0 0 1.34 KB
#3359 CallElasticsearchAsync netcoreapp3.1 1.59μs 0.41ns 1.48ns 0.0174 0 0 1.26 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net472 2.62μs 1.64ns 6.13ns 0.232 0 0 1.47 KB
master ExecuteAsync netcoreapp3.1 1.79μs 1.11ns 4.15ns 0.0187 0 0 1.39 KB
#3359 ExecuteAsync net472 2.71μs 1.9ns 7.1ns 0.233 0 0 1.47 KB
#3359 ExecuteAsync netcoreapp3.1 1.78μs 0.674ns 2.52ns 0.0186 0 0 1.39 KB
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net472 5.91μs 2.51ns 9.73ns 0.445 0 0 2.82 KB
master SendAsync netcoreapp3.1 3.71μs 1.31ns 4.9ns 0.0352 0 0 2.65 KB
#3359 SendAsync net472 5.9μs 1.49ns 5.37ns 0.446 0 0 2.82 KB
#3359 SendAsync netcoreapp3.1 3.59μs 1.88ns 7.04ns 0.0358 0 0 2.65 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 3.2μs 3.37ns 12.6ns 0.297 0 0 1.88 KB
master EnrichedLog netcoreapp3.1 2.57μs 1.24ns 4.81ns 0.0256 0 0 1.91 KB
#3359 EnrichedLog net472 3.07μs 2.21ns 8.28ns 0.298 0 0 1.88 KB
#3359 EnrichedLog netcoreapp3.1 2.59μs 1.07ns 4.15ns 0.0258 0 0 1.91 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 152μs 147ns 570ns 0.677 0.226 0 4.72 KB
master EnrichedLog netcoreapp3.1 120μs 93.3ns 361ns 0.06 0 0 4.55 KB
#3359 EnrichedLog net472 151μs 193ns 747ns 0.677 0.226 0 4.72 KB
#3359 EnrichedLog netcoreapp3.1 120μs 274ns 1.06μs 0.0595 0 0 4.55 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.78μs 4.92ns 18.4ns 0.58 0.00287 0 3.65 KB
master EnrichedLog netcoreapp3.1 4.33μs 1.92ns 7.42ns 0.0545 0 0 3.98 KB
#3359 EnrichedLog net472 5.57μs 1.17ns 4.39ns 0.579 0.00278 0 3.65 KB
#3359 EnrichedLog netcoreapp3.1 4.36μs 1.53ns 5.74ns 0.0544 0 0 3.98 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net472 2.3μs 2.72ns 10.2ns 0.225 0 0 1.42 KB
master SendReceive netcoreapp3.1 1.77μs 0.612ns 2.37ns 0.0186 0 0 1.37 KB
#3359 SendReceive net472 2.34μs 1.31ns 5.06ns 0.225 0 0 1.42 KB
#3359 SendReceive netcoreapp3.1 1.82μs 0.678ns 2.54ns 0.0182 0 0 1.37 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net472 5.03μs 2.28ns 8.53ns 0.364 0 0 2.3 KB
master EnrichedLog netcoreapp3.1 4.15μs 1.31ns 4.72ns 0.0248 0 0 1.86 KB
#3359 EnrichedLog net472 5.03μs 2.09ns 8.11ns 0.364 0 0 2.3 KB
#3359 EnrichedLog netcoreapp3.1 4.37μs 1.26ns 4.7ns 0.0241 0 0 1.86 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net472 1.14μs 0.4ns 1.49ns 0.136 0 0 859 B
master StartFinishSpan netcoreapp3.1 935ns 0.34ns 1.27ns 0.0107 0 0 808 B
master StartFinishScope net472 1.35μs 0.996ns 3.73ns 0.149 0 0 939 B
master StartFinishScope netcoreapp3.1 1.07μs 0.46ns 1.78ns 0.0124 0 0 928 B
#3359 StartFinishSpan net472 1.16μs 0.443ns 1.66ns 0.136 0 0 859 B
#3359 StartFinishSpan netcoreapp3.1 904ns 0.34ns 1.27ns 0.0108 0 0 808 B
#3359 StartFinishScope net472 1.38μs 0.564ns 2.11ns 0.149 0 0 939 B
#3359 StartFinishScope netcoreapp3.1 1.06μs 0.453ns 1.69ns 0.0127 0 0 928 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net472 1.48μs 0.451ns 1.75ns 0.149 0 0 939 B
master RunOnMethodBegin netcoreapp3.1 1.12μs 0.576ns 2.23ns 0.0129 0 0 928 B
#3359 RunOnMethodBegin net472 1.49μs 0.414ns 1.55ns 0.148 0 0 939 B
#3359 RunOnMethodBegin netcoreapp3.1 1.22μs 0.33ns 1.23ns 0.0128 0 0 928 B

andrewlock avatar Oct 18 '22 11:10 andrewlock

Code Coverage Report :bar_chart:

:heavy_check_mark: Merging #3359 into master will not change line coverage :heavy_check_mark: Merging #3359 into master will not change branch coverage :heavy_check_mark: Merging #3359 into master will not change complexity

master #3359 Change
Lines 19602 / 27011 19574 / 27011
Lines % 73% 72% 0% :heavy_check_mark:
Branches 11633 / 16784 11613 / 16784
Branches % 69% 69% 0% :heavy_check_mark:
Complexity 18160 18160 0 :heavy_check_mark:

View the full report for further details:

Datadog.Trace Breakdown :heavy_check_mark:

master #3359 Change
Lines % 73% 72% 0% :heavy_check_mark:
Branches % 69% 69% 0% :heavy_check_mark:
Complexity 18160 18160 0 :heavy_check_mark:

The following classes have significant coverage changes.

File Line coverage change Branch coverage change Complexity change
Datadog.Trace.Iast.StackWalker 0% :heavy_check_mark: 6% :heavy_check_mark: 0 :heavy_check_mark:
Datadog.Trace.Debugger.PInvoke.DebuggerNativeMethods 6% :heavy_check_mark: 0% :heavy_check_mark: 0 :heavy_check_mark:
Datadog.Trace.ClrProfiler.AutoInstrumentation.Http.HttpClient.WinHttpHandler.WinHttpHandlerIntegration 100% :heavy_check_mark: 0% :heavy_check_mark: 0 :heavy_check_mark:

View the full reports for further details:

andrewlock avatar Oct 18 '22 15:10 andrewlock