-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parallelise system tests in CI #6496
base: master
Are you sure you want to change the base?
Conversation
5e046e6
to
999d88a
Compare
Datadog ReportBranch report: ✅ 0 Failed, 234047 Passed, 2085 Skipped, 18h 31m 9.78s Total Time |
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:
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.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (68ms) : 66, 71
. : milestone, 68,
master - mean (68ms) : 65, 72
. : milestone, 68,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (978ms) : 945, 1011
. : milestone, 978,
master - mean (971ms) : 949, 993
. : milestone, 971,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (107ms) : 105, 110
. : milestone, 107,
master - mean (107ms) : 104, 109
. : milestone, 107,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (673ms) : 660, 685
. : milestone, 673,
master - mean (674ms) : 658, 690
. : milestone, 674,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (91ms) : 89, 92
. : milestone, 91,
master - mean (90ms) : 88, 92
. : milestone, 90,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (626ms) : 611, 641
. : milestone, 626,
master - mean (631ms) : 615, 648
. : milestone, 631,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (194ms) : 190, 198
. : milestone, 194,
master - mean (194ms) : 189, 198
. : milestone, 194,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (1,104ms) : 1075, 1133
. : milestone, 1104,
master - mean (1,102ms) : 1065, 1139
. : milestone, 1102,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (279ms) : 275, 283
. : milestone, 279,
master - mean (279ms) : 275, 283
. : milestone, 279,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (870ms) : 838, 902
. : milestone, 870,
master - mean (870ms) : 844, 896
. : milestone, 870,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6496) - mean (266ms) : 262, 271
. : milestone, 266,
master - mean (268ms) : 263, 272
. : milestone, 268,
section CallTarget+Inlining+NGEN
This PR (6496) - mean (847ms) : 806, 887
. : milestone, 847,
master - mean (855ms) : 820, 890
. : milestone, 855,
|
Benchmarks Report for tracer 🐌Benchmarks for #6496 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️Raw results
|
a4888af
to
dd65986
Compare
57cccf3
to
078a37d
Compare
8cd9e80
to
b80f73e
Compare
b80f73e
to
8a73064
Compare
021d0b5
to
0e2c947
Compare
0e2c947
to
3dbd068
Compare
70888cb
to
734cfd7
Compare
Throughput/Crank Report ⚡Throughput results for AspNetCoreSimpleController comparing the following branches/commits: Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red. Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards! gantt
title Throughput Linux x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (6496) (11.094M) : 0, 11093830
master (11.068M) : 0, 11067812
benchmarks/2.9.0 (11.045M) : 0, 11045405
section Automatic
This PR (6496) (7.236M) : 0, 7235958
master (7.170M) : 0, 7169979
benchmarks/2.9.0 (7.885M) : 0, 7885346
section Trace stats
master (7.672M) : 0, 7671870
section Manual
master (11.135M) : 0, 11135060
section Manual + Automatic
This PR (6496) (6.683M) : 0, 6682530
master (6.686M) : 0, 6686295
section DD_TRACE_ENABLED=0
master (10.301M) : 0, 10301221
gantt
title Throughput Linux arm64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (6496) (9.655M) : 0, 9655389
master (9.415M) : 0, 9414830
benchmarks/2.9.0 (9.586M) : 0, 9586476
section Automatic
This PR (6496) (6.436M) : 0, 6436042
master (6.138M) : 0, 6138011
section Trace stats
master (6.597M) : 0, 6596896
section Manual
master (9.454M) : 0, 9454016
section Manual + Automatic
This PR (6496) (5.871M) : 0, 5870860
master (5.945M) : 0, 5944630
section DD_TRACE_ENABLED=0
master (8.978M) : 0, 8978445
gantt
title Throughput Windows x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (6496) (9.953M) : 0, 9952961
master (10.157M) : 0, 10156614
section Automatic
This PR (6496) (6.610M) : 0, 6609732
master (6.561M) : 0, 6560916
section Trace stats
master (7.244M) : 0, 7243820
section Manual
master (9.958M) : 0, 9958235
section Manual + Automatic
This PR (6496) (6.394M) : 0, 6393983
master (6.193M) : 0, 6192782
section DD_TRACE_ENABLED=0
master (9.470M) : 0, 9470030
|
Summary of changes
Parallelise all system-tests scenarios in the CI.
All group scenarios have been broke down to scenarios, and each individual scenario are run in a specific job.
Remove old scenario
LIBRARY_CONF_CUSTOM_HEADERS_SHORT
andLIBRARY_CONF_CUSTOM_HEADERS_LONG
from the running list. They are both now linked to theLIBRARY_CONF_CUSTOM_HEADER_TAGS
scenario (which was added to theadditionalScenarios
list)The majority of all the scenarios get completed in less than 5 min.
From 1h before the parallelisation:
To a bit more than 45 min after (depending of the attribution of runners). That's also the parametric tests that are taking now the more time:
Implementation details
List all scenarios that are part of groups
This is using the following command to get the scenarios from a scenario group name:
PYTHONPATH=. python utils/scripts/compute-workflow-parameters.py dotnet -g appsec
This way we can dynamically get the available weblogs in the system-tests and all scenarios.
Build the matrix
In order to create the matrix, a python script have been created to merge all scenarios for listed groups and the additional scenario that we want to run that are not part of a group.
We grep the output of the system-test command to fully get all scenarios and construct back a json dictionary with all the scenario name and the weblog variant that need to be used with it.
Update
For future update, if a new group scenario is added in the system-tests, it should be added to this variable list:
scenarioGroups: "essentials,parametric,appsec,remote-config,telemetry,integrations,debugger,profiling"
Build time
The weblog and agent docker images are build before and given as artefacts for all test jobs to reduce the completion time.
Reason for change
The system-tests were timing out in a bunch of PRs. Some group scenarios took more than 1h to be run.