Skip to content

Conversation

@bouwkast
Copy link
Collaborator

@bouwkast bouwkast commented Oct 29, 2025

Summary of changes

Migrates Postgres/Npgsql integration tests from docker-compose to TestContainers.
Disposes / spins down TestContainers after their tests run.

Reason for change

CI is constantly hitting docker issues which seems to be stemming from how many various containers we are running.
This implements the disposal logic for TestContainers when their tests are finished.
Swapped NpgSql/Postgres to be TestContainers as I thought it would be a good simple test, but it was a pain due to the various IAST tests that seemingly use it 🤷

Implementation details

Test coverage

Other details

Note: generated /assisted with Claude Code

@bouwkast bouwkast added the AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos label Oct 29, 2025
@bouwkast
Copy link
Collaborator Author

@codex review

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bouwkast
Copy link
Collaborator Author

@codex review

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 1320 to 1335
SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
SetEnvironmentVariable(ConfigurationKeys.AppSec.StackTraceEnabled, "false");
UseNativeLibraryAlpineWorkaround();

if (postgresFixture != null)
{
ConfigureContainers(postgresFixture);
}

Choose a reason for hiding this comment

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

P1 Badge Postgres Testcontainer never configured in AspNetCore5 IAST tests

As with the .NET Core 2 suite, the new constructor only configures Postgres when a fixture instance is supplied, but the legacy overload at lines 1311‑1313 still calls the new constructor with null and derived classes were left unchanged. After removing Postgres from docker-compose.yml, the tests spin up a Postgres Testcontainer yet the application keeps the default localhost:5432 settings, so database-dependent IAST tests cannot connect. Inject the PostgresFixture into derived constructors and forward it to ConfigureContainers.

Useful? React with 👍 / 👎.

@pr-commenter
Copy link

pr-commenter bot commented Oct 29, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7741 compared to master:

  • 3 benchmarks are slower, with geometric mean 1.787
  • 4 benchmarks have fewer allocations
  • 5 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 #7741

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 5.99 KB 6.07 KB 84 B 1.40%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.3μs 42.4ns 175ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 13.7μs 65.3ns 269ns 0 0 0 5.71 KB
master StartStopWithChild net472 21.9μs 110ns 517ns 1 0.401 0.1 5.99 KB
#7741 StartStopWithChild net6.0 10.7μs 59.8ns 401ns 0 0 0 5.51 KB
#7741 StartStopWithChild netcoreapp3.1 13.6μs 71.7ns 386ns 0 0 0 5.73 KB
#7741 StartStopWithChild net472 22.1μs 117ns 618ns 0.885 0.221 0 6.07 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7741

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 953μs 425ns 1.59μs 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.05ms 926ns 3.34μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.24ms 505ns 1.96μs 0 0 0 3.31 KB
#7741 WriteAndFlushEnrichedTraces net6.0 925μs 94.5ns 341ns 0 0 0 2.7 KB
#7741 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 58.2ns 201ns 0 0 0 2.7 KB
#7741 WriteAndFlushEnrichedTraces net472 1.2ms 91.5ns 342ns 0 0 0 3.35 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.07μs 5.79ns 32.3ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.41μs 7.44ns 38.7ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.428ns 1.66ns 0.191 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7μs 35.3ns 150ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 8.92μs 33.7ns 131ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.65μs 7.71ns 29.9ns 0.729 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 319ns 0.0645ns 0.25ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 398ns 1.93ns 7.96ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 295ns 0.0671ns 0.26ns 0.0432 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.39μs 19.8ns 76.7ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 38.8ns 165ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.72μs 2.45ns 9.48ns 0.601 0 0 3.8 KB
#7741 AllCycleSimpleBody net6.0 1.06μs 5.82ns 36.8ns 0 0 0 1.22 KB
#7741 AllCycleSimpleBody netcoreapp3.1 1.43μs 7.03ns 30.6ns 0 0 0 1.2 KB
#7741 AllCycleSimpleBody net472 1.04μs 1.24ns 4.81ns 0.193 0 0 1.23 KB
#7741 AllCycleMoreComplexBody net6.0 7.14μs 38.3ns 210ns 0 0 0 4.72 KB
#7741 AllCycleMoreComplexBody netcoreapp3.1 9.3μs 35.9ns 134ns 0 0 0 4.62 KB
#7741 AllCycleMoreComplexBody net472 7.77μs 3.92ns 15.2ns 0.738 0 0 4.74 KB
#7741 ObjectExtractorSimpleBody net6.0 323ns 0.0924ns 0.346ns 0 0 0 280 B
#7741 ObjectExtractorSimpleBody netcoreapp3.1 410ns 1.88ns 7.02ns 0 0 0 272 B
#7741 ObjectExtractorSimpleBody net472 303ns 0.0671ns 0.26ns 0.0443 0 0 281 B
#7741 ObjectExtractorMoreComplexBody net6.0 6.31μs 29.3ns 113ns 0 0 0 3.78 KB
#7741 ObjectExtractorMoreComplexBody netcoreapp3.1 7.82μs 33.9ns 131ns 0 0 0 3.69 KB
#7741 ObjectExtractorMoreComplexBody net472 6.86μs 2.15ns 8.32ns 0.583 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 77μs 20.4ns 76.4ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.7μs 248ns 961ns 0 0 0 32.4 KB
master EncodeArgs net472 113μs 6.99ns 26.2ns 5.07 0 0 32.51 KB
master EncodeLegacyArgs net6.0 146μs 197ns 765ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 197μs 77ns 288ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 125ns 484ns 0 0 0 2.16 KB
#7741 EncodeArgs net6.0 76.9μs 143ns 537ns 0 0 0 32.4 KB
#7741 EncodeArgs netcoreapp3.1 97.4μs 60.8ns 236ns 0 0 0 32.4 KB
#7741 EncodeArgs net472 111μs 10.6ns 39.6ns 5.01 0 0 32.5 KB
#7741 EncodeLegacyArgs net6.0 141μs 7.26ns 26.2ns 0 0 0 2.15 KB
#7741 EncodeLegacyArgs netcoreapp3.1 202μs 186ns 721ns 0 0 0 2.14 KB
#7741 EncodeLegacyArgs net472 267μs 48.8ns 189ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7741

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.451 294,986.01 723,052.23
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.085 410,594.48 856,192.77

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 417μs 63.4ns 237ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 411μs 90.8ns 315ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 441μs 85.1ns 319ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 291μs 79.9ns 288ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 295μs 83ns 299ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 317μs 40.2ns 156ns 0 0 0 2.29 KB
#7741 RunWafRealisticBenchmark net6.0 393μs 79.3ns 307ns 0 0 0 4.56 KB
#7741 RunWafRealisticBenchmark netcoreapp3.1 851μs 4.13μs 16.5μs 0 0 0 4.48 KB
#7741 RunWafRealisticBenchmark net472 427μs 45.9ns 178ns 0 0 0 4.66 KB
#7741 RunWafRealisticBenchmarkWithAttack net6.0 293μs 46.2ns 173ns 0 0 0 2.24 KB
#7741 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 689μs 11.5μs 115μs 0 0 0 2.22 KB
#7741 RunWafRealisticBenchmarkWithAttack net472 310μs 25.6ns 99.2ns 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 61.6μs 27.2ns 106ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.6μs 101ns 379ns 0 0 0 17.42 KB
master SendRequest net472 0.00136ns 0.000796ns 0.00298ns 0 0 0 0 b
#7741 SendRequest net6.0 62μs 73.8ns 266ns 0 0 0 14.52 KB
#7741 SendRequest netcoreapp3.1 71.9μs 73.9ns 267ns 0 0 0 17.42 KB
#7741 SendRequest net472 0.00415ns 0.00145ns 0.00561ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7741

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

Fewer allocations 🎉 in #7741

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 1 B 0 b -1 B -100.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.92ms 1.96μs 7.35μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.21ms 6.9μs 25.8μs 0 0 0 640 KB
master OriginalCharSlice net472 2.55ms 80.9ns 303ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.39ms 182ns 705ns 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.68ms 1.67μs 6.45μs 0 0 0 1 B
master OptimizedCharSlice net472 2.01ms 283ns 1.1μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 857μs 101ns 393ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 808μs 62.5ns 242ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.13ms 91.4ns 354ns 0 0 0 0 b
#7741 OriginalCharSlice net6.0 1.88ms 4.3μs 16.7μs 0 0 0 640.01 KB
#7741 OriginalCharSlice netcoreapp3.1 2.14ms 9.74μs 36.4μs 0 0 0 640 KB
#7741 OriginalCharSlice net472 2.62ms 158ns 612ns 100 0 0 641.95 KB
#7741 OptimizedCharSlice net6.0 1.39ms 250ns 937ns 0 0 0 7 B
#7741 OptimizedCharSlice netcoreapp3.1 1.71ms 676ns 2.62μs 0 0 0 1 B
#7741 OptimizedCharSlice net472 1.97ms 389ns 1.51μs 0 0 0 0 b
#7741 OptimizedCharSliceWithPool net6.0 799μs 49.5ns 185ns 0 0 0 4 B
#7741 OptimizedCharSliceWithPool netcoreapp3.1 797μs 84.2ns 315ns 0 0 0 0 b
#7741 OptimizedCharSliceWithPool net472 1.19ms 117ns 455ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7741

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.116 697,693.33 778,867.77

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 680μs 1.96μs 7.31μs 0 0 0 41.61 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 696μs 1.49μs 5.15μs 0 0 0 41.84 KB
master WriteAndFlushEnrichedTraces net472 869μs 2.97μs 11.5μs 8.33 0 0 56.49 KB
#7741 WriteAndFlushEnrichedTraces net6.0 748μs 4.07μs 21.9μs 0 0 0 41.8 KB
#7741 WriteAndFlushEnrichedTraces netcoreapp3.1 772μs 4.18μs 22.9μs 0 0 0 41.83 KB
#7741 WriteAndFlushEnrichedTraces net472 930μs 3.61μs 14μs 8.33 0 0 56.36 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.91μs 4.03ns 15.6ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.66μs 9.81ns 38ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.9μs 3.07ns 11.9ns 0.145 0.0145 0 987 B
#7741 ExecuteNonQuery net6.0 1.95μs 1.2ns 4.49ns 0 0 0 1.02 KB
#7741 ExecuteNonQuery netcoreapp3.1 2.66μs 2.1ns 8.15ns 0 0 0 1.02 KB
#7741 ExecuteNonQuery net472 2.9μs 2.64ns 9.9ns 0.145 0.0145 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.74μs 8.1ns 31.4ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.2μs 10.5ns 44.4ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.6μs 3ns 11.6ns 0.162 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.84μs 8.73ns 33.8ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.4μs 11.6ns 46.4ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.67μs 4.86ns 18.8ns 0.165 0 0 1.1 KB
#7741 CallElasticsearch net6.0 1.73μs 2.39ns 9.25ns 0 0 0 1.03 KB
#7741 CallElasticsearch netcoreapp3.1 2.22μs 5.11ns 18.4ns 0 0 0 1.03 KB
#7741 CallElasticsearch net472 3.52μs 1.79ns 6.94ns 0.158 0 0 1.04 KB
#7741 CallElasticsearchAsync net6.0 1.83μs 4.09ns 15.3ns 0 0 0 1.01 KB
#7741 CallElasticsearchAsync netcoreapp3.1 2.44μs 11.8ns 47.2ns 0 0 0 1.08 KB
#7741 CallElasticsearchAsync net472 3.63μs 1.64ns 5.93ns 0.163 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.84μs 9.26ns 40.3ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.43μs 11.3ns 45.2ns 0 0 0 952 B
master ExecuteAsync net472 2.54μs 3.55ns 13.8ns 0.14 0 0 915 B
#7741 ExecuteAsync net6.0 1.88μs 2.81ns 10.5ns 0 0 0 952 B
#7741 ExecuteAsync netcoreapp3.1 2.47μs 7.84ns 30.4ns 0 0 0 953 B
#7741 ExecuteAsync net472 2.6μs 2.87ns 11.1ns 0.143 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 7.08μs 8.57ns 33.2ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.87μs 33.1ns 128ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 8.57ns 32.1ns 0.493 0 0 3.18 KB
#7741 SendAsync net6.0 6.76μs 8.22ns 30.7ns 0 0 0 2.36 KB
#7741 SendAsync netcoreapp3.1 8.55μs 24.2ns 93.6ns 0 0 0 2.9 KB
#7741 SendAsync net472 12μs 12.8ns 49.4ns 0.48 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7741

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 255.14 KB 275.42 KB 20.29 KB 7.95%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 278.53 KB 283.58 KB 5.05 KB 1.81%

Fewer allocations 🎉 in #7741

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.59 KB 43.1 KB -488 B -1.12%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 45.5 KB 43.02 KB -2.49 KB -5.47%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 278.42 KB 257.88 KB -20.54 KB -7.38%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 41.7μs 160ns 578ns 0 0 0 43.59 KB
master StringConcatBenchmark netcoreapp3.1 54.9μs 944ns 9.39μs 0 0 0 45.5 KB
master StringConcatBenchmark net472 57.6μs 91.6ns 330ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 474μs 1.52μs 5.28μs 0 0 0 278.42 KB
master StringConcatAspectBenchmark netcoreapp3.1 488μs 2.49μs 10.8μs 0 0 0 255.14 KB
master StringConcatAspectBenchmark net472 409μs 2.31μs 15.5μs 0 0 0 278.53 KB
#7741 StringConcatBenchmark net6.0 46μs 269ns 2.28μs 0 0 0 43.1 KB
#7741 StringConcatBenchmark netcoreapp3.1 49.5μs 290ns 2.39μs 0 0 0 43.02 KB
#7741 StringConcatBenchmark net472 58.1μs 159ns 596ns 0 0 0 65.54 KB
#7741 StringConcatAspectBenchmark net6.0 477μs 2μs 6.94μs 0 0 0 257.88 KB
#7741 StringConcatAspectBenchmark netcoreapp3.1 526μs 1.27μs 4.75μs 0 0 0 275.42 KB
#7741 StringConcatAspectBenchmark net472 401μs 2μs 9.17μs 0 0 0 283.58 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.61μs 14ns 72.6ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.69μs 17.6ns 70.4ns 0 0 0 1.7 KB
master EnrichedLog net472 4.01μs 9.66ns 37.4ns 0.242 0 0 1.64 KB
#7741 EnrichedLog net6.0 2.62μs 3.18ns 11.5ns 0 0 0 1.7 KB
#7741 EnrichedLog netcoreapp3.1 3.49μs 17.2ns 76.8ns 0 0 0 1.7 KB
#7741 EnrichedLog net472 4μs 4.64ns 18ns 0.24 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 97.1ns 350ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 129μs 392ns 1.52μs 0 0 0 4.31 KB
master EnrichedLog net472 167μs 62ns 232ns 0 0 0 4.51 KB
#7741 EnrichedLog net6.0 123μs 66.3ns 248ns 0 0 0 4.31 KB
#7741 EnrichedLog netcoreapp3.1 127μs 140ns 505ns 0 0 0 4.31 KB
#7741 EnrichedLog net472 167μs 30.7ns 115ns 0 0 0 4.52 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μs 16ns 61.9ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.84μs 12.2ns 45.5ns 0 0 0 2.26 KB
master EnrichedLog net472 7.52μs 6.02ns 22.5ns 0.302 0 0 2.08 KB
#7741 EnrichedLog net6.0 4.92μs 22.4ns 86.7ns 0 0 0 2.26 KB
#7741 EnrichedLog netcoreapp3.1 6.98μs 24.5ns 94.9ns 0 0 0 2.26 KB
#7741 EnrichedLog net472 7.71μs 6.82ns 25.5ns 0.31 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.02μs 9.72ns 37.6ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.61μs 13.1ns 58.5ns 0 0 0 1.2 KB
master SendReceive net472 3.09μs 2.48ns 9.61ns 0.185 0 0 1.2 KB
#7741 SendReceive net6.0 1.96μs 9.75ns 44.7ns 0 0 0 1.2 KB
#7741 SendReceive netcoreapp3.1 2.62μs 13.5ns 60.3ns 0 0 0 1.2 KB
#7741 SendReceive net472 3.01μs 3.55ns 13.7ns 0.182 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.09μs 17.4ns 67.5ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.8μs 11.4ns 44.2ns 0 0 0 1.63 KB
master EnrichedLog net472 6.73μs 9.84ns 38.1ns 0.303 0 0 2.03 KB
#7741 EnrichedLog net6.0 4.26μs 3.59ns 13.9ns 0 0 0 1.58 KB
#7741 EnrichedLog netcoreapp3.1 5.7μs 5.13ns 19.9ns 0 0 0 1.63 KB
#7741 EnrichedLog net472 6.76μs 5.97ns 23.1ns 0.305 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 764ns 3.95ns 18.5ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 959ns 4.95ns 23.2ns 0 0 0 576 B
master StartFinishSpan net472 927ns 0.386ns 1.5ns 0.0885 0 0 578 B
master StartFinishScope net6.0 905ns 4.85ns 26.1ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.19μs 2.53ns 9.8ns 0 0 0 696 B
master StartFinishScope net472 1.12μs 0.538ns 2.01ns 0.102 0 0 658 B
#7741 StartFinishSpan net6.0 772ns 3.54ns 14.2ns 0 0 0 576 B
#7741 StartFinishSpan netcoreapp3.1 987ns 0.192ns 0.666ns 0 0 0 576 B
#7741 StartFinishSpan net472 924ns 0.783ns 3.03ns 0.0877 0 0 578 B
#7741 StartFinishScope net6.0 919ns 0.367ns 1.32ns 0 0 0 696 B
#7741 StartFinishScope netcoreapp3.1 1.2μs 6.27ns 29.4ns 0 0 0 696 B
#7741 StartFinishScope net472 1.12μs 1.28ns 4.95ns 0.101 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.08μs 5.76ns 28.8ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.47μs 7.42ns 32.3ns 0 0 0 696 B
master RunOnMethodBegin net472 1.46μs 0.673ns 2.61ns 0.102 0 0 658 B
#7741 RunOnMethodBegin net6.0 1.08μs 0.343ns 1.28ns 0 0 0 696 B
#7741 RunOnMethodBegin netcoreapp3.1 1.46μs 6.29ns 22.7ns 0 0 0 696 B
#7741 RunOnMethodBegin net472 1.45μs 0.63ns 2.44ns 0.101 0 0 658 B

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

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7741) and master.

⚠️ Potential regressions detected

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.18 ± (68.19 - 68.45) ms78.61 ± (78.08 - 79.09) ms+15.3%❌⬆️
.NET Framework 4.8 - Bailout
duration71.96 ± (71.83 - 72.08) ms77.65 ± (77.63 - 78.18) ms+7.9%❌⬆️
Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.18 ± (68.19 - 68.45) ms78.61 ± (78.08 - 79.09) ms+15.3%❌⬆️
.NET Framework 4.8 - Bailout
duration71.96 ± (71.83 - 72.08) ms77.65 ± (77.63 - 78.18) ms+7.9%❌⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1042.85 ± (1044.00 - 1049.22) ms1096.21 ± (1099.57 - 1109.54) ms+5.1%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.04 ± (22.00 - 22.08) ms22.91 ± (22.83 - 22.99) ms+4.0%✅⬆️
process.time_to_main_ms79.05 ± (78.89 - 79.21) ms85.95 ± (85.61 - 86.29) ms+8.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.93 - 10.94) MB10.87 ± (10.86 - 10.87) MB-0.6%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms21.90 ± (21.87 - 21.92) ms22.97 ± (22.88 - 23.06) ms+4.9%✅⬆️
process.time_to_main_ms80.20 ± (80.11 - 80.29) ms88.31 ± (87.90 - 88.73) ms+10.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.95 - 10.96) MB10.91 ± (10.91 - 10.91) MB-0.4%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms209.64 ± (208.34 - 210.93) ms219.95 ± (218.77 - 221.13) ms+4.9%✅⬆️
process.time_to_main_ms513.71 ± (513.19 - 514.23) ms542.42 ± (541.05 - 543.80) ms+5.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.64 ± (52.62 - 52.66) MB52.44 ± (52.42 - 52.45) MB-0.4%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms20.78 ± (20.75 - 20.81) ms21.80 ± (21.72 - 21.88) ms+4.9%✅⬆️
process.time_to_main_ms68.50 ± (68.38 - 68.62) ms75.13 ± (74.81 - 75.45) ms+9.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.60 ± (10.60 - 10.61) MB10.58 ± (10.58 - 10.58) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.79 ± (20.76 - 20.81) ms21.79 ± (21.71 - 21.86) ms+4.8%✅⬆️
process.time_to_main_ms69.53 ± (69.45 - 69.60) ms76.32 ± (75.99 - 76.64) ms+9.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.64 ± (10.63 - 10.64) MB10.62 ± (10.62 - 10.62) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms199.26 ± (196.98 - 201.55) ms204.53 ± (203.21 - 205.85) ms+2.6%✅⬆️
process.time_to_main_ms483.49 ± (482.91 - 484.06) ms504.44 ± (503.37 - 505.51) ms+4.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.60 ± (51.53 - 51.66) MB51.46 ± (51.43 - 51.48) MB-0.3%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms18.97 ± (18.94 - 19.00) ms19.70 ± (19.62 - 19.77) ms+3.8%✅⬆️
process.time_to_main_ms67.53 ± (67.42 - 67.64) ms72.70 ± (72.42 - 72.97) ms+7.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.61 ± (7.60 - 7.61) MB-0.7%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.95 ± (18.92 - 18.98) ms19.89 ± (19.76 - 20.01) ms+4.9%✅⬆️
process.time_to_main_ms68.51 ± (68.44 - 68.58) ms74.96 ± (74.54 - 75.39) ms+9.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.70 ± (7.70 - 7.71) MB7.67 ± (7.67 - 7.68) MB-0.4%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms177.42 ± (176.49 - 178.34) ms182.07 ± (181.40 - 182.74) ms+2.6%✅⬆️
process.time_to_main_ms458.64 ± (458.17 - 459.10) ms466.00 ± (464.78 - 467.22) ms+1.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed38.74 ± (38.71 - 38.76) MB38.51 ± (38.49 - 38.53) MB-0.6%
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.1%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.37 ± (192.36 - 193.23) ms192.05 ± (191.82 - 192.47) ms-0.2%
.NET Framework 4.8 - Bailout
duration195.65 ± (195.54 - 196.06) ms195.88 ± (195.60 - 196.11) ms+0.1%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1160.64 ± (1167.14 - 1177.47) ms1186.87 ± (1181.13 - 1191.75) ms+2.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms187.77 ± (187.46 - 188.08) ms189.96 ± (189.52 - 190.39) ms+1.2%✅⬆️
process.time_to_main_ms81.15 ± (80.89 - 81.40) ms81.63 ± (81.41 - 81.86) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.09 ± (16.07 - 16.12) MB16.06 ± (16.04 - 16.08) MB-0.2%
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (20 - 20)+0.3%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms187.16 ± (186.79 - 187.52) ms190.12 ± (189.65 - 190.59) ms+1.6%✅⬆️
process.time_to_main_ms82.20 ± (82.02 - 82.39) ms83.06 ± (82.85 - 83.27) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.17 ± (16.14 - 16.20) MB16.11 ± (16.09 - 16.13) MB-0.4%
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (21 - 21)+0.3%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms394.45 ± (392.01 - 396.90) ms397.73 ± (395.56 - 399.90) ms+0.8%✅⬆️
process.time_to_main_ms517.10 ± (516.48 - 517.72) ms521.30 ± (520.05 - 522.55) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed63.13 ± (62.98 - 63.28) MB63.26 ± (63.13 - 63.39) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms192.10 ± (191.74 - 192.46) ms191.83 ± (191.46 - 192.20) ms-0.1%
process.time_to_main_ms70.20 ± (70.01 - 70.38) ms69.86 ± (69.69 - 70.03) ms-0.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.16 ± (16.04 - 16.28) MB15.92 ± (15.77 - 16.08) MB-1.5%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (18 - 19)-0.7%
.NET 6 - Bailout
process.internal_duration_ms190.71 ± (190.42 - 191.00) ms191.01 ± (190.77 - 191.25) ms+0.2%✅⬆️
process.time_to_main_ms70.74 ± (70.63 - 70.85) ms70.56 ± (70.45 - 70.66) ms-0.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.03 ± (15.88 - 16.18) MB16.12 ± (15.97 - 16.27) MB+0.6%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.4%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms409.80 ± (406.92 - 412.67) ms409.09 ± (406.36 - 411.83) ms-0.2%
process.time_to_main_ms487.42 ± (486.86 - 487.98) ms483.83 ± (483.18 - 484.48) ms-0.7%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.40 ± (62.27 - 62.54) MB62.22 ± (62.09 - 62.34) MB-0.3%
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms189.36 ± (189.03 - 189.69) ms189.42 ± (189.05 - 189.79) ms+0.0%✅⬆️
process.time_to_main_ms69.26 ± (69.10 - 69.43) ms69.26 ± (69.08 - 69.43) ms-0.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.81 ± (11.78 - 11.83) MB11.75 ± (11.72 - 11.77) MB-0.5%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.5%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms188.42 ± (188.14 - 188.70) ms189.21 ± (188.87 - 189.56) ms+0.4%✅⬆️
process.time_to_main_ms70.29 ± (70.21 - 70.38) ms70.15 ± (70.04 - 70.26) ms-0.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.89 ± (11.84 - 11.94) MB11.79 ± (11.75 - 11.82) MB-0.9%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.2%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms360.10 ± (358.56 - 361.63) ms360.54 ± (359.12 - 361.96) ms+0.1%✅⬆️
process.time_to_main_ms465.13 ± (464.41 - 465.85) ms459.70 ± (459.08 - 460.32) ms-1.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.32 ± (50.27 - 50.36) MB50.17 ± (50.14 - 50.21) MB-0.3%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.4%✅⬆️
Comparison explanation

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 highlighted 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).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (79ms)  : 71, 86
    master - mean (68ms)  : 67, 70

    section Bailout
    This PR (7741) - mean (78ms)  : crit, 74, 82
    master - mean (72ms)  : 71, 73

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (1,105ms)  : 1031, 1178
    master - mean (1,047ms)  : 1010, 1083

Loading
FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (116ms)  : 109, 123
    master - mean (107ms)  : 104, 109

    section Bailout
    This PR (7741) - mean (118ms)  : crit, 109, 127
    master - mean (107ms)  : 106, 109

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (796ms)  : 749, 843
    master - mean (759ms)  : 727, 790

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (104ms)  : 96, 111
    master - mean (94ms)  : 91, 97

    section Bailout
    This PR (7741) - mean (105ms)  : crit, 98, 111
    master - mean (95ms)  : 94, 96

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (743ms)  : 694, 792
    master - mean (711ms)  : 674, 748

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (100ms)  : 94, 106
    master - mean (93ms)  : 91, 95

    section Bailout
    This PR (7741) - mean (103ms)  : crit, 94, 111
    master - mean (93ms)  : 92, 95

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (677ms)  : 650, 703
    master - mean (664ms)  : 649, 678

Loading
HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (192ms)  : 189, 195
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7741) - mean (196ms)  : 193, 198
    master - mean (196ms)  : 193, 198

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (1,186ms)  : 1110, 1263
    master - mean (1,172ms)  : 1094, 1250

Loading
HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (280ms)  : 272, 288
    master - mean (278ms)  : 272, 283

    section Bailout
    This PR (7741) - mean (282ms)  : 272, 292
    master - mean (278ms)  : 272, 284

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (956ms)  : 897, 1015
    master - mean (954ms)  : 915, 992

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (270ms)  : 265, 275
    master - mean (270ms)  : 265, 276

    section Bailout
    This PR (7741) - mean (269ms)  : 267, 272
    master - mean (270ms)  : 266, 273

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (926ms)  : 877, 975
    master - mean (933ms)  : 885, 980

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7741) - mean (268ms)  : 264, 273
    master - mean (268ms)  : 264, 273

    section Bailout
    This PR (7741) - mean (269ms)  : 264, 273
    master - mean (268ms)  : 265, 272

    section CallTarget+Inlining+NGEN
    This PR (7741) - mean (851ms)  : 826, 877
    master - mean (858ms)  : 839, 876

Loading

@datadog-official

This comment has been minimized.

@bouwkast bouwkast force-pushed the steven/test-containers branch 3 times, most recently from 6662a9b to 47386bf Compare November 4, 2025 13:34
bouwkast and others added 3 commits November 5, 2025 08:33
- Implement ContainersRegistry with reference counting for container lifecycle management
- Create PostgresFixture using DotNet.Testcontainers library
- Add ContainersCollection for xUnit collection-level disposal
- Migrate NpgsqlCommandTests, DapperTests, and IAST tests to use PostgresFixture
- Remove postgres service from docker-compose.yml as it's now managed by TestContainers
- Update test scrubbers to handle TestContainers dynamic IP addresses

This improves test isolation and reduces dependency on docker-compose for integration tests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
I think there may be race conditions if we reuse containers.
@bouwkast bouwkast force-pushed the steven/test-containers branch from 47386bf to 3c5ca70 Compare November 5, 2025 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants