Skip to content

Conversation

@link04
Copy link
Contributor

@link04 link04 commented Oct 14, 2025

Summary of changes

Making use of the dd-apm-test-agent container to enable OTLP metrics support for GRPC and HTTP, then gets then as JSON the container for snapshot validation.

Reason for change

To easily and more reliably test GRPC and ongoing OTLP support and validation in the .NET tracer without needing to build GRPC servers or change our agent for each new signal we plan to support.

Implementation details

Added the container to run for the integrations tests in the corresponding host name making use of either port 4317 or 4318`:

  1. Pings test/session/clear to clear the session at the start of the tests
  2. Pings /test/session/metrics endpoint for the generated metrics

Test coverage

Updated the snapshots format but the same 4 should pass even for GRPC now that added to run for OTEL.

Other details

APMAPI-1678

@link04 link04 requested review from a team as code owners October 14, 2025 23:29
@link04 link04 requested a review from anna-git October 14, 2025 23:29
@github-actions
Copy link
Contributor

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 :

-    Resource: {
-      Attributes: [
-        {
-          Key: telemetry.sdk.name,
-          Value: {
-            StringValue: sdk-name,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.language,
-          Value: {
-            StringValue: dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.version,
-          Value: {
-            StringValue: sdk-version,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: service.name,
-          Value: {
-            StringValue: unknown_service:dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        }
-      ]
-    },
-    ScopeMetrics: [
+    "resource_metrics": [
[...]
-        Scope: {
-          Name: OpenTelemetryMetricsMeter,
-          Version: 1.0,
-          Attributes: [
+        "resource": {
+          "attributes": [
+            {
+              "key": "telemetry.sdk.name",
+              "value": {
+                "string_value": "sdk-name"
+              }
+            },
+            {
+              "key": "telemetry.sdk.language",
+              "value": {
+                "string_value": "dotnet"
+              }
+            },
+            {
+              "key": "telemetry.sdk.version",
+              "value": {
+                "string_value": "sdk-version"
+              }
+            },
[...]
-              Key: MeterTagKey,
-              Value: {
-                StringValue: MeterTagValue,
-                HasStringValue: true,
-                BytesValue: [],
-                ValueCase: StringValue
+              "key": "service.name",
+              "value": {
+                "string_value": "unknown_service:dotnet"
[...]
-        Metrics: [
-          {
-            Name: example.async.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 22,
-                  HasAsInt: true,
-                  ValueCase: AsInt
-                }
-              ],
-              AggregationTemporality: Delta,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
+        "scope_metrics": [
[...]
-            Name: example.async.gauge,
-            Description: ,
-            Unit: ,
-            Gauge: {
-              DataPoints: [
+            "scope": {
+              "name": "OpenTelemetryMetricsMeter",
+              "version": "1.0",
+              "attributes": [
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsDouble: 88.0,
-                  HasAsDouble: true,
-                  ValueCase: AsDouble
+                  "key": "MeterTagKey",
+                  "value": {
+                    "string_value": "MeterTagValue"
+                  }
[...]
-            DataCase: Gauge
-          },
-          {
-            Name: example.async.upDownCounter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 66,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+            "metrics": [
+              {
+                "name": "example.async.counter",
+                "sum": {
+                  "data_points": [
+                    {
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "22"
+                    }
+                  ],
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_DELTA",
+                  "is_monotonic": true
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.async.gauge",
+                "gauge": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_double": 88.0
+                    }
+                  ]
+                }
+              },
+              {
+                "name": "example.async.upDownCounter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "66"
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 11,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
[...]
-              ],
-              AggregationTemporality: Delta,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.gauge,
-            Description: ,
-            Unit: ,
-            Gauge: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
-                    {
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "11",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsDouble: 77.0,
-                  HasAsDouble: true,
-                  ValueCase: AsDouble
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_DELTA",
+                  "is_monotonic": true
[...]
-              ]
-            },
-            DataCase: Gauge
-          },
-          {
-            Name: example.histogram,
-            Description: ,
-            Unit: ,
-            Histogram: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.gauge",
+                "gauge": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_double": 77.0,
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
+                    }
+                  ]
+                }
+              },
+              {
+                "name": "example.histogram",
+                "histogram": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "count": "1",
+                      "sum": 33.0,
+                      "bucket_counts": [
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "1",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0"
+                      ],
+                      "explicit_bounds": [
+                        0.0,
+                        5.0,
+                        10.0,
+                        25.0,
+                        50.0,
+                        75.0,
+                        100.0,
+                        250.0,
+                        500.0,
+                        750.0,
+                        1000.0,
+                        2500.0,
+                        5000.0,
+                        7500.0,
+                        10000.0
+                      ],
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ],
+                      "min": 33.0,
+                      "max": 33.0
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  Count: 1,
-                  Sum: 33.0,
-                  HasSum: true,
-                  BucketCounts: [
-                    0,
-                    0,
-                    0,
-                    0,
-                    1,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0
-                  ],
-                  ExplicitBounds: [
-                    0.0,
-                    5.0,
-                    10.0,
-                    25.0,
-                    50.0,
-                    75.0,
-                    100.0,
-                    250.0,
-                    500.0,
-                    750.0,
-                    1000.0,
-                    2500.0,
-                    5000.0,
-                    7500.0,
-                    10000.0
-                  ],
-                  Min: 33.0,
-                  HasMin: true,
-                  Max: 33.0,
-                  HasMax: true
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_DELTA"
[...]
-              ],
-              AggregationTemporality: Delta
-            },
-            DataCase: Histogram
-          },
-          {
-            Name: example.upDownCounter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.upDownCounter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
-                    {
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "55",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 55,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Sum
+              }
+            ]
[...]
-        ],
-        SchemaUrl: 
+        ]
[...]
-    ],
-    SchemaUrl: 
+    ]

1 occurrences of :

-    Resource: {
-      Attributes: [
-        {
-          Key: telemetry.sdk.name,
-          Value: {
-            StringValue: sdk-name,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.language,
-          Value: {
-            StringValue: dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.version,
-          Value: {
-            StringValue: sdk-version,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: service.name,
-          Value: {
-            StringValue: unknown_service:dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        }
-      ]
-    },
-    ScopeMetrics: [
+    "resource_metrics": [
[...]
-        Scope: {
-          Name: OpenTelemetryMetricsMeter,
-          Version: 1.0
-        },
-        Metrics: [
-          {
-            Name: example.async.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 22,
-                  HasAsInt: true,
-                  ValueCase: AsInt
-                }
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
+        "resource": {
+          "attributes": [
+            {
+              "key": "telemetry.sdk.name",
+              "value": {
+                "string_value": "sdk-name"
+              }
[...]
-            DataCase: Sum
-          },
-          {
-            Name: example.async.gauge,
-            Description: ,
-            Unit: ,
-            Gauge: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsDouble: 88.0,
-                  HasAsDouble: true,
-                  ValueCase: AsDouble
-                }
-              ]
+            {
+              "key": "telemetry.sdk.language",
+              "value": {
+                "string_value": "dotnet"
+              }
+            },
+            {
+              "key": "telemetry.sdk.version",
+              "value": {
+                "string_value": "sdk-version"
+              }
[...]
-            DataCase: Gauge
-          },
+            {
+              "key": "service.name",
+              "value": {
+                "string_value": "unknown_service:dotnet"
+              }
+            }
+          ]
+        },
+        "scope_metrics": [
[...]
-            Name: example.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
-                    {
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+            "scope": {
+              "name": "OpenTelemetryMetricsMeter",
+              "version": "1.0"
+            },
+            "metrics": [
+              {
+                "name": "example.async.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "22"
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 11,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
[...]
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.histogram,
-            Description: ,
-            Unit: ,
-            Histogram: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.async.gauge",
+                "gauge": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_double": 88.0
+                    }
+                  ]
+                }
+              },
+              {
+                "name": "example.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "11",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  Count: 1,
-                  Sum: 33.0,
-                  HasSum: true,
-                  BucketCounts: [
-                    0,
-                    0,
-                    0,
-                    0,
-                    1,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0
-                  ],
-                  ExplicitBounds: [
-                    0.0,
-                    5.0,
-                    10.0,
-                    25.0,
-                    50.0,
-                    75.0,
-                    100.0,
-                    250.0,
-                    500.0,
-                    750.0,
-                    1000.0,
-                    2500.0,
-                    5000.0,
-                    7500.0,
-                    10000.0
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
+                }
+              },
+              {
+                "name": "example.histogram",
+                "histogram": {
+                  "data_points": [
+                    {
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "count": "1",
+                      "sum": 33.0,
+                      "bucket_counts": [
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "1",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0"
+                      ],
+                      "explicit_bounds": [
+                        0.0,
+                        5.0,
+                        10.0,
+                        25.0,
+                        50.0,
+                        75.0,
+                        100.0,
+                        250.0,
+                        500.0,
+                        750.0,
+                        1000.0,
+                        2500.0,
+                        5000.0,
+                        7500.0,
+                        10000.0
+                      ],
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ],
+                      "min": 33.0,
+                      "max": 33.0
+                    }
[...]
-                  Min: 33.0,
-                  HasMin: true,
-                  Max: 33.0,
-                  HasMax: true
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Histogram
+              }
+            ]
[...]
-        ],
-        SchemaUrl: 
+        ]
[...]
-    ],
-    SchemaUrl: 
+    ]

1 occurrences of :

-    Resource: {
-      Attributes: [
-        {
-          Key: service.name,
-          Value: {
-            StringValue: unknown_service:dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        }
-      ]
-    },
-    ScopeMetrics: [
+    "resource_metrics": [
[...]
-        Scope: {
-          Name: OpenTelemetryMetricsMeter,
-          Version: 1.0
+        "resource": {
+          "attributes": [
+            {
+              "key": "service.name",
+              "value": {
+                "string_value": "unknown_service:dotnet"
+              }
+            }
+          ]
[...]
-        Metrics: [
+        "scope_metrics": [
[...]
-            Name: example.async.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 22,
-                  HasAsInt: true,
-                  ValueCase: AsInt
-                }
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.async.gauge,
-            Description: ,
-            Unit: ,
-            Gauge: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsDouble: 88.0,
-                  HasAsDouble: true,
-                  ValueCase: AsDouble
-                }
-              ]
+            "scope": {
+              "name": "OpenTelemetryMetricsMeter",
+              "version": "1.0"
[...]
-            DataCase: Gauge
-          },
-          {
-            Name: example.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
-                    {
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+            "metrics": [
+              {
+                "name": "example.async.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "22"
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 11,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
[...]
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.histogram,
-            Description: ,
-            Unit: ,
-            Histogram: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.async.gauge",
+                "gauge": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_double": 88.0
+                    }
+                  ]
+                }
+              },
+              {
+                "name": "example.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "11",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  Count: 1,
-                  Sum: 33.0,
-                  HasSum: true,
-                  BucketCounts: [
-                    0,
-                    0,
-                    0,
-                    0,
-                    1,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
+                }
+              },
+              {
+                "name": "example.histogram",
+                "histogram": {
+                  "data_points": [
+                    {
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "count": "1",
+                      "sum": 33.0,
+                      "bucket_counts": [
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "1",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0"
+                      ],
+                      "explicit_bounds": [
+                        0.0,
+                        5.0,
+                        10.0,
+                        25.0,
+                        50.0,
+                        75.0,
+                        100.0,
+                        250.0,
+                        500.0,
+                        1000.0
+                      ],
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
+                    }
[...]
-                  ExplicitBounds: [
-                    0.0,
-                    5.0,
-                    10.0,
-                    25.0,
-                    50.0,
-                    75.0,
-                    100.0,
-                    250.0,
-                    500.0,
-                    1000.0
-                  ]
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Histogram
+              }
+            ]
[...]
-        ],
-        SchemaUrl: 
+        ]
[...]
-    ],
-    SchemaUrl: 
+    ]

1 occurrences of :

-    Resource: {
-      Attributes: [
-        {
-          Key: telemetry.sdk.name,
-          Value: {
-            StringValue: sdk-name,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.language,
-          Value: {
-            StringValue: dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: telemetry.sdk.version,
-          Value: {
-            StringValue: sdk-version,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        },
-        {
-          Key: service.name,
-          Value: {
-            StringValue: unknown_service:dotnet,
-            HasStringValue: true,
-            BytesValue: [],
-            ValueCase: StringValue
-          }
-        }
-      ]
-    },
-    ScopeMetrics: [
+    "resource_metrics": [
[...]
-        Scope: {
-          Name: OpenTelemetryMetricsMeter,
-          Version: 1.0
-        },
-        Metrics: [
-          {
-            Name: example.async.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 22,
-                  HasAsInt: true,
-                  ValueCase: AsInt
-                }
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
+        "resource": {
+          "attributes": [
+            {
+              "key": "telemetry.sdk.name",
+              "value": {
+                "string_value": "sdk-name"
+              }
[...]
-            DataCase: Sum
-          },
-          {
-            Name: example.async.gauge,
-            Description: ,
-            Unit: ,
-            Gauge: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsDouble: 88.0,
-                  HasAsDouble: true,
-                  ValueCase: AsDouble
-                }
-              ]
+            {
+              "key": "telemetry.sdk.language",
+              "value": {
+                "string_value": "dotnet"
+              }
[...]
-            DataCase: Gauge
-          },
-          {
-            Name: example.async.upDownCounter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 66,
-                  HasAsInt: true,
-                  ValueCase: AsInt
-                }
-              ],
-              AggregationTemporality: Cumulative
+            {
+              "key": "telemetry.sdk.version",
+              "value": {
+                "string_value": "sdk-version"
+              }
[...]
-            DataCase: Sum
-          },
+            {
+              "key": "service.name",
+              "value": {
+                "string_value": "unknown_service:dotnet"
+              }
+            }
+          ]
+        },
+        "scope_metrics": [
[...]
-            Name: example.counter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
-                    {
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+            "scope": {
+              "name": "OpenTelemetryMetricsMeter",
+              "version": "1.0"
+            },
+            "metrics": [
+              {
+                "name": "example.async.counter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "22"
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 11,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
[...]
-              ],
-              AggregationTemporality: Cumulative,
-              IsMonotonic: true
-            },
-            DataCase: Sum
-          },
-          {
-            Name: example.histogram,
-            Description: ,
-            Unit: ,
-            Histogram: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.async.gauge",
+                "gauge": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_double": 88.0
+                    }
+                  ]
+                }
+              },
+              {
+                "name": "example.async.upDownCounter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "66"
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  Count: 1,
-                  Sum: 33.0,
-                  HasSum: true,
-                  BucketCounts: [
-                    0,
-                    0,
-                    0,
-                    0,
-                    1,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0,
-                    0
-                  ],
-                  ExplicitBounds: [
-                    0.0,
-                    5.0,
-                    10.0,
-                    25.0,
-                    50.0,
-                    75.0,
-                    100.0,
-                    250.0,
-                    500.0,
-                    750.0,
-                    1000.0,
-                    2500.0,
-                    5000.0,
-                    7500.0,
-                    10000.0
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
+                }
+              },
+              {
+                "name": "example.counter",
+                "sum": {
+                  "data_points": [
+                    {
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "11",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
+                    }
[...]
-                  Min: 33.0,
-                  HasMin: true,
-                  Max: 33.0,
-                  HasMax: true
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE",
+                  "is_monotonic": true
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Histogram
-          },
-          {
-            Name: example.upDownCounter,
-            Description: ,
-            Unit: ,
-            Sum: {
-              DataPoints: [
-                {
-                  Attributes: [
+              },
+              {
+                "name": "example.histogram",
+                "histogram": {
+                  "data_points": [
[...]
-                      Key: http.method,
-                      Value: {
-                        StringValue: GET,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
-                    },
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "count": "1",
+                      "sum": 33.0,
+                      "bucket_counts": [
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "1",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0",
+                        "0"
+                      ],
+                      "explicit_bounds": [
+                        0.0,
+                        5.0,
+                        10.0,
+                        25.0,
+                        50.0,
+                        75.0,
+                        100.0,
+                        250.0,
+                        500.0,
+                        750.0,
+                        1000.0,
+                        2500.0,
+                        5000.0,
+                        7500.0,
+                        10000.0
+                      ],
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ],
+                      "min": 33.0,
+                      "max": 33.0
+                    }
+                  ],
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
+                }
+              },
+              {
+                "name": "example.upDownCounter",
+                "sum": {
+                  "data_points": [
[...]
-                      Key: rid,
-                      Value: {
-                        StringValue: 1234567890,
-                        HasStringValue: true,
-                        BytesValue: [],
-                        ValueCase: StringValue
-                      }
+                      "start_time_unix_nano": "0",
+                      "time_unix_nano": "0",
+                      "as_int": "55",
+                      "attributes": [
+                        {
+                          "key": "http.method",
+                          "value": {
+                            "string_value": "GET"
+                          }
+                        },
+                        {
+                          "key": "rid",
+                          "value": {
+                            "string_value": "1234567890"
+                          }
+                        }
+                      ]
[...]
-                  StartTimeUnixNano": <DateTimeOffset.Now>,
-                  TimeUnixNano": <DateTimeOffset.Now>,
-                  AsInt: 55,
-                  HasAsInt: true,
-                  ValueCase: AsInt
+                  "aggregation_temporality": "AGGREGATION_TEMPORALITY_CUMULATIVE"
[...]
-              ],
-              AggregationTemporality: Cumulative
-            },
-            DataCase: Sum
+              }
+            ]
[...]
-        ],
-        SchemaUrl: 
+        ]
[...]
-    ],
-    SchemaUrl: 
+    ]

Copy link
Contributor

@zacharycmontoya zacharycmontoya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Oct 15, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (72ms)  : 71, 73
     .   : milestone, 72,
    master - mean (72ms)  : 71, 73
     .   : milestone, 72,

    section Baseline
    This PR (7656) - mean (68ms)  : 67, 69
     .   : milestone, 68,
    master - mean (68ms)  : 66, 69
     .   : milestone, 68,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (1,052ms)  : 988, 1116
     .   : milestone, 1052,
    master - mean (1,049ms)  : 992, 1105
     .   : milestone, 1049,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (106ms)  : 105, 107
     .   : milestone, 106,
    master - mean (106ms)  : 105, 107
     .   : milestone, 106,

    section Baseline
    This PR (7656) - mean (105ms)  : 103, 108
     .   : milestone, 105,
    master - mean (105ms)  : 103, 108
     .   : milestone, 105,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (743ms)  : 723, 763
     .   : milestone, 743,
    master - mean (743ms)  : 722, 764
     .   : milestone, 743,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (94ms)  : 93, 95
     .   : milestone, 94,
    master - mean (94ms)  : 93, 95
     .   : milestone, 94,

    section Baseline
    This PR (7656) - mean (93ms)  : 91, 95
     .   : milestone, 93,
    master - mean (94ms)  : 91, 96
     .   : milestone, 94,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (698ms)  : 677, 718
     .   : milestone, 698,
    master - mean (702ms)  : 679, 725
     .   : milestone, 702,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (93ms)  : 92, 94
     .   : milestone, 93,
    master - mean (92ms)  : 91, 93
     .   : milestone, 92,

    section Baseline
    This PR (7656) - mean (92ms)  : 89, 95
     .   : milestone, 92,
    master - mean (92ms)  : 91, 94
     .   : milestone, 92,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (657ms)  : 641, 673
     .   : milestone, 657,
    master - mean (662ms)  : 649, 675
     .   : milestone, 662,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (196ms)  : 193, 199
     .   : milestone, 196,
    master - mean (197ms)  : 193, 201
     .   : milestone, 197,

    section Baseline
    This PR (7656) - mean (192ms)  : 189, 195
     .   : milestone, 192,
    master - mean (194ms)  : 188, 200
     .   : milestone, 194,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (1,165ms)  : 1097, 1232
     .   : milestone, 1165,
    master - mean (1,166ms)  : 1108, 1224
     .   : milestone, 1166,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (276ms)  : 273, 280
     .   : milestone, 276,
    master - mean (278ms)  : 274, 282
     .   : milestone, 278,

    section Baseline
    This PR (7656) - mean (276ms)  : 272, 280
     .   : milestone, 276,
    master - mean (276ms)  : 271, 281
     .   : milestone, 276,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (938ms)  : 897, 979
     .   : milestone, 938,
    master - mean (943ms)  : 897, 989
     .   : milestone, 943,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (270ms)  : 266, 273
     .   : milestone, 270,
    master - mean (271ms)  : 266, 275
     .   : milestone, 271,

    section Baseline
    This PR (7656) - mean (269ms)  : 265, 273
     .   : milestone, 269,
    master - mean (270ms)  : 266, 275
     .   : milestone, 270,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (922ms)  : 878, 966
     .   : milestone, 922,
    master - mean (936ms)  : 881, 991
     .   : milestone, 936,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7656) - mean (268ms)  : 266, 271
     .   : milestone, 268,
    master - mean (272ms)  : 268, 276
     .   : milestone, 272,

    section Baseline
    This PR (7656) - mean (268ms)  : 264, 273
     .   : milestone, 268,
    master - mean (270ms)  : 266, 274
     .   : milestone, 270,

    section CallTarget+Inlining+NGEN
    This PR (7656) - mean (848ms)  : 829, 866
     .   : milestone, 848,
    master - mean (861ms)  : 842, 879
     .   : milestone, 861,

Loading

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Oct 15, 2025

⚠️ Tests

⚠️ Warnings

❄️ 1 New flaky test detected

SubmitsTraces from Datadog.Trace.ClrProfiler.IntegrationTests.StackExchangeRedisTests (Datadog)
Results do not match.
Differences:
Received: StackExchangeRedisTests.Latest.SchemaV0.received.txt
Verified: StackExchangeRedisTests.Latest.SchemaV0.verified.txt
Compare Result:
  [
    {
      TraceId: Id_1,
      SpanId: Id_2,
      Name: redis.command,
...

ℹ️ Info

🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 32d3303 | Docs | Was this helpful? Give us feedback!

<!-- https://andrewlock.net/stop-lying-about-netstandard-2-support/-->
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
<ApiVersion Condition="'$(ApiVersion)' == ''">1.12.0</ApiVersion>
<ApiVersion Condition="'$(ApiVersion)' == ''">1.13.1</ApiVersion>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now these tests need a Docker dependency in order to run

Suggested change
<ApiVersion Condition="'$(ApiVersion)' == ''">1.13.1</ApiVersion>
<RequiresDockerDependency>true</RequiresDockerDependency>
<ApiVersion Condition="'$(ApiVersion)' == ''">1.13.1</ApiVersion>

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And then you'll need to re-run the GeneratePackageVersions target to update the matrix of sample apps with this

@pr-commenter
Copy link

pr-commenter bot commented Oct 16, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7656 compared to master:

  • 4 benchmarks are faster, with geometric mean 1.412
  • 2 benchmarks are slower, with geometric mean 1.551
  • 8 benchmarks have fewer allocations
  • 4 benchmarks have more 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.ActivityBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.01 KB 6.12 KB 102 B 1.70%

Fewer allocations 🎉 in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑netcoreapp3.1 5.74 KB 5.7 KB -42 B -0.73%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.6μs 57.1ns 323ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 13.7μs 65.8ns 263ns 0 0 0 5.74 KB
master StartStopWithChild net472 22μs 115ns 565ns 0.992 0.331 0.11 6.01 KB
#7656 StartStopWithChild net6.0 10.9μs 59.5ns 331ns 0 0 0 5.53 KB
#7656 StartStopWithChild netcoreapp3.1 13μs 68ns 319ns 0 0 0 5.7 KB
#7656 StartStopWithChild net472 22.3μs 108ns 460ns 0.968 0.215 0 6.12 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.31 KB 3.35 KB 46 B 1.39%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 936μs 67.9ns 235ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 98.4ns 368ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 101ns 379ns 0 0 0 3.31 KB
#7656 WriteAndFlushEnrichedTraces net6.0 918μs 126ns 455ns 0 0 0 2.71 KB
#7656 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 168ns 630ns 0 0 0 2.7 KB
#7656 WriteAndFlushEnrichedTraces net472 1.2ms 1.64μs 5.67μs 0 0 0 3.35 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody‑netcoreapp3.1 189.23 KB 187.44 KB -1.79 KB -0.95%
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody‑net6.0 183.53 KB 181.77 KB -1.76 KB -0.96%
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody‑netcoreapp3.1 185.8 KB 184.01 KB -1.79 KB -0.96%
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody‑net6.0 180.01 KB 178.25 KB -1.76 KB -0.98%
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody‑net472 209.83 KB 207.5 KB -2.33 KB -1.11%
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody‑net472 206.3 KB 203.96 KB -2.34 KB -1.14%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 356μs 197ns 738ns 0 0 0 180.01 KB
master AllCycleSimpleBody netcoreapp3.1 512μs 2.35μs 9.12μs 0 0 0 185.8 KB
master AllCycleSimpleBody net472 469μs 143ns 553ns 32.4 0 0 206.3 KB
master AllCycleMoreComplexBody net6.0 362μs 1.43μs 5.53μs 0 0 0 183.53 KB
master AllCycleMoreComplexBody netcoreapp3.1 539μs 1.77μs 6.86μs 0 0 0 189.23 KB
master AllCycleMoreComplexBody net472 480μs 118ns 457ns 32.4 0 0 209.83 KB
master ObjectExtractorSimpleBody net6.0 319ns 1.6ns 7.34ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 398ns 2.04ns 9.8ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 298ns 0.0428ns 0.166ns 0.0436 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.37μs 32.5ns 149ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.85μs 36ns 139ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.68μs 3.58ns 13.9ns 0.602 0 0 3.8 KB
#7656 AllCycleSimpleBody net6.0 346μs 270ns 1.01μs 0 0 0 178.25 KB
#7656 AllCycleSimpleBody netcoreapp3.1 479μs 1.22μs 4.71μs 0 0 0 184.01 KB
#7656 AllCycleSimpleBody net472 458μs 91.1ns 353ns 31.2 0 0 203.96 KB
#7656 AllCycleMoreComplexBody net6.0 358μs 997ns 3.86μs 0 0 0 181.77 KB
#7656 AllCycleMoreComplexBody netcoreapp3.1 496μs 2.19μs 8.46μs 0 0 0 187.44 KB
#7656 AllCycleMoreComplexBody net472 467μs 107ns 416ns 32.4 0 0 207.5 KB
#7656 ObjectExtractorSimpleBody net6.0 318ns 1.81ns 12.9ns 0 0 0 280 B
#7656 ObjectExtractorSimpleBody netcoreapp3.1 403ns 1.18ns 4.57ns 0 0 0 272 B
#7656 ObjectExtractorSimpleBody net472 302ns 0.0162ns 0.0585ns 0.044 0 0 281 B
#7656 ObjectExtractorMoreComplexBody net6.0 6.32μs 32.4ns 148ns 0 0 0 3.78 KB
#7656 ObjectExtractorMoreComplexBody netcoreapp3.1 7.78μs 38.7ns 160ns 0 0 0 3.69 KB
#7656 ObjectExtractorMoreComplexBody net472 6.7μs 6.85ns 25.6ns 0.602 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.7μs 107ns 386ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.1μs 206ns 796ns 0 0 0 32.4 KB
master EncodeArgs net472 109μs 12.5ns 43.3ns 4.9 0 0 32.51 KB
master EncodeLegacyArgs net6.0 145μs 219ns 847ns 0 0 0 2.14 KB
master EncodeLegacyArgs netcoreapp3.1 196μs 210ns 814ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 262μs 49.7ns 192ns 0 0 0 2.17 KB
#7656 EncodeArgs net6.0 76.6μs 311ns 1.2μs 0 0 0 32.4 KB
#7656 EncodeArgs netcoreapp3.1 96.8μs 159ns 617ns 0 0 0 32.4 KB
#7656 EncodeArgs net472 110μs 46.9ns 182ns 4.95 0 0 32.51 KB
#7656 EncodeLegacyArgs net6.0 148μs 42.1ns 163ns 0 0 0 2.14 KB
#7656 EncodeLegacyArgs netcoreapp3.1 200μs 574ns 2.22μs 0 0 0 2.14 KB
#7656 EncodeLegacyArgs net472 264μs 18.2ns 68.1ns 0 0 0 2.17 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7656

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.084 409,979.58 854,515.42

Faster 🎉 in #7656

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.455 728,218.82 296,612.35

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 392μs 41ns 153ns 0 0 0 4.56 KB
master RunWafRealisticBenchmark netcoreapp3.1 410μs 43.3ns 156ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 429μs 62.6ns 234ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 290μs 33.5ns 130ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 715μs 5.02μs 50.2μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 311μs 30.7ns 119ns 0 0 0 2.29 KB
#7656 RunWafRealisticBenchmark net6.0 394μs 66ns 247ns 0 0 0 4.55 KB
#7656 RunWafRealisticBenchmark netcoreapp3.1 798μs 13.3μs 133μs 0 0 0 4.48 KB
#7656 RunWafRealisticBenchmark net472 428μs 57.3ns 206ns 0 0 0 4.66 KB
#7656 RunWafRealisticBenchmarkWithAttack net6.0 286μs 97.2ns 364ns 0 0 0 2.24 KB
#7656 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 297μs 222ns 800ns 0 0 0 2.22 KB
#7656 RunWafRealisticBenchmarkWithAttack net472 309μs 21.9ns 84.7ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 60.7μs 68.7ns 266ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 69.9μs 97.5ns 338ns 0 0 0 17.42 KB
master SendRequest net472 0.00231ns 0.00151ns 0.00584ns 0 0 0 0 b
#7656 SendRequest net6.0 60.7μs 80.4ns 290ns 0 0 0 14.52 KB
#7656 SendRequest netcoreapp3.1 71.8μs 305ns 1.18μs 0 0 0 17.42 KB
#7656 SendRequest net472 0.000734ns 0.000525ns 0.00203ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Faster 🎉 More allocations ⚠️

Faster 🎉 in #7656

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1.150 915,649.52 796,241.41

More allocations ⚠️ in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 0 b 1 B 1 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1 B 4 B 3 B 300.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.94ms 6.49μs 25.2μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.13ms 8.84μs 30.6μs 0 0 0 640 KB
master OriginalCharSlice net472 2.67ms 635ns 2.37μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.41ms 203ns 786ns 0 0 0 4 B
master OptimizedCharSlice netcoreapp3.1 1.71ms 366ns 1.42μs 0 0 0 1 B
master OptimizedCharSlice net472 1.94ms 184ns 687ns 0 0 0 73 B
master OptimizedCharSliceWithPool net6.0 916μs 88.3ns 342ns 0 0 0 1 B
master OptimizedCharSliceWithPool netcoreapp3.1 835μs 221ns 857ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.15ms 150ns 582ns 0 0 0 47 B
#7656 OriginalCharSlice net6.0 1.87ms 2.35μs 8.81μs 0 0 0 640.01 KB
#7656 OriginalCharSlice netcoreapp3.1 2.16ms 3.14μs 10.9μs 0 0 0 640 KB
#7656 OriginalCharSlice net472 2.72ms 783ns 2.82μs 100 0 0 641.95 KB
#7656 OptimizedCharSlice net6.0 1.41ms 99.2ns 384ns 0 0 0 4 B
#7656 OptimizedCharSlice netcoreapp3.1 1.65ms 262ns 979ns 0 0 0 1 B
#7656 OptimizedCharSlice net472 1.9ms 286ns 1.11μs 0 0 0 73 B
#7656 OptimizedCharSliceWithPool net6.0 796μs 47.4ns 184ns 0 0 0 4 B
#7656 OptimizedCharSliceWithPool netcoreapp3.1 815μs 284ns 1.1μs 0 0 0 1 B
#7656 OptimizedCharSliceWithPool net472 1.15ms 75.2ns 291ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7656

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.154 655,059.86 755,799.78

Faster 🎉 in #7656

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.124 959,090.42 853,322.71

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 689μs 3.51μs 17.5μs 0 0 0 41.98 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 664μs 3.45μs 16.9μs 0 0 0 42.08 KB
master WriteAndFlushEnrichedTraces net472 955μs 5.04μs 24.7μs 8.33 0 0 56.36 KB
#7656 WriteAndFlushEnrichedTraces net6.0 663μs 1.29μs 5.61μs 0 0 0 41.77 KB
#7656 WriteAndFlushEnrichedTraces netcoreapp3.1 768μs 4.39μs 34.9μs 0 0 0 41.94 KB
#7656 WriteAndFlushEnrichedTraces net472 855μs 2.66μs 9.95μs 8.33 0 0 56.42 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.84μs 8.61ns 33.3ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.51μs 0.76ns 2.84ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.87μs 6.68ns 25.9ns 0.143 0.0143 0 987 B
#7656 ExecuteNonQuery net6.0 1.9μs 0.694ns 2.6ns 0 0 0 1.02 KB
#7656 ExecuteNonQuery netcoreapp3.1 2.71μs 10.4ns 40.3ns 0 0 0 1.02 KB
#7656 ExecuteNonQuery net472 2.72μs 2.62ns 10.2ns 0.148 0.0134 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.83μs 1.51ns 5.85ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.27μs 10.2ns 39.6ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.59μs 2.09ns 8.08ns 0.162 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.89μs 0.897ns 3.36ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.57μs 7.57ns 29.3ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.71μs 2.18ns 8.44ns 0.166 0 0 1.1 KB
#7656 CallElasticsearch net6.0 1.79μs 5.4ns 20.2ns 0 0 0 1.03 KB
#7656 CallElasticsearch netcoreapp3.1 2.34μs 2.22ns 8.3ns 0 0 0 1.03 KB
#7656 CallElasticsearch net472 3.52μs 4.41ns 17.1ns 0.159 0 0 1.04 KB
#7656 CallElasticsearchAsync net6.0 1.92μs 4.44ns 17.2ns 0 0 0 1.01 KB
#7656 CallElasticsearchAsync netcoreapp3.1 2.5μs 10.6ns 41ns 0 0 0 1.08 KB
#7656 CallElasticsearchAsync net472 3.78μs 2.53ns 9.48ns 0.171 0 0 1.1 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.91μs 1.19ns 4.6ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.39μs 1.34ns 5ns 0 0 0 952 B
master ExecuteAsync net472 2.6μs 5.55ns 21.5ns 0.142 0 0 915 B
#7656 ExecuteAsync net6.0 2.03μs 5.51ns 21.3ns 0 0 0 952 B
#7656 ExecuteAsync netcoreapp3.1 2.32μs 9.18ns 35.6ns 0 0 0 952 B
#7656 ExecuteAsync net472 2.51μs 1.57ns 5.88ns 0.138 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.82μs 4.35ns 16.9ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.36μs 20.2ns 75.4ns 0 0 0 2.9 KB
master SendAsync net472 12.5μs 5.15ns 18.6ns 0.499 0 0 3.18 KB
#7656 SendAsync net6.0 6.91μs 15ns 54ns 0 0 0 2.36 KB
#7656 SendAsync netcoreapp3.1 8.46μs 19.9ns 77.2ns 0 0 0 2.9 KB
#7656 SendAsync net472 12.2μs 7.99ns 29.9ns 0.488 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Faster 🎉 Fewer allocations 🎉

Faster 🎉 in #7656

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 1.251 519,200.00 414,900.00

Fewer allocations 🎉 in #7656

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 277.58 KB 273.29 KB -4.3 KB -1.55%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 45μs 264ns 2.41μs 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 50μs 291ns 2.31μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 57.2μs 223ns 865ns 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 464μs 1.58μs 5.49μs 0 0 0 277.58 KB
master StringConcatAspectBenchmark netcoreapp3.1 519μs 1.31μs 4.55μs 0 0 0 275.62 KB
master StringConcatAspectBenchmark net472 405μs 2.27μs 14.4μs 0 0 0 278.53 KB
#7656 StringConcatBenchmark net6.0 41.3μs 194ns 698ns 0 0 0 43.46 KB
#7656 StringConcatBenchmark netcoreapp3.1 51.6μs 685ns 6.64μs 0 0 0 42.81 KB
#7656 StringConcatBenchmark net472 56.4μs 252ns 1.04μs 0 0 0 57.34 KB
#7656 StringConcatAspectBenchmark net6.0 476μs 1.51μs 5.45μs 0 0 0 273.29 KB
#7656 StringConcatAspectBenchmark netcoreapp3.1 440μs 5.08μs 49.5μs 0 0 0 274.55 KB
#7656 StringConcatAspectBenchmark net472 401μs 2.28μs 16.9μs 0 0 0 278.53 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.65μs 5.63ns 21.8ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.63μs 13ns 50.3ns 0 0 0 1.7 KB
master EnrichedLog net472 3.76μs 3.58ns 13.9ns 0.243 0 0 1.64 KB
#7656 EnrichedLog net6.0 2.5μs 3.5ns 13.6ns 0 0 0 1.7 KB
#7656 EnrichedLog netcoreapp3.1 3.46μs 2.52ns 9.77ns 0 0 0 1.7 KB
#7656 EnrichedLog net472 3.82μs 4.53ns 17.5ns 0.247 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 122μs 32.4ns 121ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 126μs 135ns 488ns 0 0 0 4.31 KB
master EnrichedLog net472 166μs 42.9ns 155ns 0 0 0 4.52 KB
#7656 EnrichedLog net6.0 121μs 117ns 451ns 0 0 0 4.31 KB
#7656 EnrichedLog netcoreapp3.1 128μs 363ns 1.36μs 0 0 0 4.31 KB
#7656 EnrichedLog net472 165μs 57ns 206ns 0 0 0 4.51 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.09μs 5.95ns 23ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.7μs 21.4ns 80.2ns 0 0 0 2.26 KB
master EnrichedLog net472 7.53μs 4.72ns 17ns 0.3 0 0 2.08 KB
#7656 EnrichedLog net6.0 4.89μs 5.38ns 20.1ns 0 0 0 2.26 KB
#7656 EnrichedLog netcoreapp3.1 6.81μs 15.5ns 59.9ns 0 0 0 2.26 KB
#7656 EnrichedLog net472 7.7μs 8.55ns 33.1ns 0.307 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2μs 8.74ns 33.9ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.64μs 7.26ns 28.1ns 0 0 0 1.2 KB
master SendReceive net472 3.12μs 4.59ns 17.8ns 0.187 0 0 1.2 KB
#7656 SendReceive net6.0 2.09μs 6.27ns 24.3ns 0 0 0 1.2 KB
#7656 SendReceive netcoreapp3.1 2.56μs 13ns 56.9ns 0 0 0 1.2 KB
#7656 SendReceive net472 3μs 1.34ns 5.21ns 0.181 0 0 1.2 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.32μs 8.51ns 31.8ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.58μs 15.8ns 56.8ns 0 0 0 1.63 KB
master EnrichedLog net472 6.44μs 9.1ns 35.2ns 0.322 0 0 2.03 KB
#7656 EnrichedLog net6.0 4.12μs 15.2ns 57ns 0 0 0 1.58 KB
#7656 EnrichedLog netcoreapp3.1 5.33μs 12.4ns 48.2ns 0 0 0 1.63 KB
#7656 EnrichedLog net472 6.4μs 4.66ns 17.4ns 0.319 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 758ns 2.3ns 8.91ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 948ns 3.97ns 15.4ns 0 0 0 576 B
master StartFinishSpan net472 894ns 0.427ns 1.66ns 0.09 0 0 578 B
master StartFinishScope net6.0 905ns 4.84ns 26.1ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.18μs 6ns 27.5ns 0 0 0 696 B
master StartFinishScope net472 1.11μs 1.07ns 4.13ns 0.104 0 0 658 B
#7656 StartFinishSpan net6.0 752ns 0.255ns 0.987ns 0 0 0 576 B
#7656 StartFinishSpan netcoreapp3.1 943ns 2.43ns 9.41ns 0 0 0 576 B
#7656 StartFinishSpan net472 871ns 0.394ns 1.47ns 0.0877 0 0 578 B
#7656 StartFinishScope net6.0 889ns 0.237ns 0.916ns 0 0 0 696 B
#7656 StartFinishScope netcoreapp3.1 1.16μs 5.07ns 19.6ns 0 0 0 696 B
#7656 StartFinishScope net472 1.05μs 0.426ns 1.65ns 0.1 0 0 658 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.09μs 5.69ns 29.6ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.48μs 6.54ns 24.5ns 0 0 0 696 B
master RunOnMethodBegin net472 1.41μs 3.39ns 13.1ns 0.0992 0 0 658 B
#7656 RunOnMethodBegin net6.0 1.04μs 5.48ns 27.4ns 0 0 0 696 B
#7656 RunOnMethodBegin netcoreapp3.1 1.38μs 6.78ns 28.8ns 0 0 0 696 B
#7656 RunOnMethodBegin net472 1.42μs 2.18ns 8.43ns 0.0993 0 0 658 B

@link04 link04 merged commit 9090025 into master Oct 17, 2025
154 checks passed
@link04 link04 deleted the maximo/testing-otlp-with-apm-test-agent branch October 17, 2025 00:45
@github-actions github-actions bot added this to the vNext-v3 milestone Oct 17, 2025
@bouwkast
Copy link
Collaborator

As we are seeing flake on the Windows tests related to the docker image I've made https://datadoghq.atlassian.net/browse/APMLP-559

@link04 has this https://datadoghq.atlassian.net/browse/APMAPI-1688 to get the tests re-enabled

@bouwkast bouwkast added area:tests unit tests, integration tests area:test-apps apps used to test integrations labels Oct 21, 2025
bouwkast added a commit that referenced this pull request Oct 21, 2025
## Summary of changes

Comments out the start / stop test agent as we are hitting
unauthenticated Docker rate limits as it pulls in a later version that
the VM doesn't yet have generalized on it.

The tests do not yet run on Windows due to flake we were seeing, so
should be no harm.

## Reason for change

This is to get CI green again sooner rather than later

```
Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                 
d-----        10/21/2025   6:15 PM                snapshots                                                            
 test-agent.windows Pulling 
 test-agent.windows Warning 
Sending build context to Docker daemon  9.166kB

Step 1/5 : FROM python:3.10.5-windowsservercore-ltsc2022
toomanyrequests: You have reached your unauthenticated pull rate limit. https://www.docker.com/increase-rate-limit
```

## Implementation details

Commented out the docker steps in the pipeline.

## Test coverage

The tests run on Linux only at the moment, so we should have the same
level of testing.
Have not tested this, will see if this resolves it hopefully.

## Other details
<!-- Fixes #{issue} -->

I thought that #7656
would just cause the tests to be a bit slower as they'd need to pull
from Docker for a bit as we worked on updating the VMs, but didn't
realize we'd hit an unauthenticated rate limit.

Will prioritize updating the VMs with this image to get this working
again.

**EDIT** I forgot that we skipped running on Windows for the above
reason and for other flake we were attempting to address as well, so we
don't have as much of a push
<!--  ⚠️ Note:

Where possible, please obtain 2 approvals prior to merging. Unless
CODEOWNERS specifies otherwise, for external teams it is typically best
to have one review from a team member, and one review from apm-dotnet.
Trivial changes do not require 2 reviews.

MergeQueue is NOT enabled in this repository. If you have write access
to the repo, the PR has 1-2 approvals (see above), and all of the
required checks have passed, you can use the Squash and Merge button to
merge the PR. If you don't have write access, or you need help, reach
out in the #apm-dotnet channel in Slack.
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:test-apps apps used to test integrations area:tests unit tests, integration tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants