[CI Visibility] Support MSTest 4.3.3 - #8979
Conversation
dca4153 to
4b840b3
Compare
andrewlock
left a comment
There was a problem hiding this comment.
Thanks! I swear they're out to get you 😅
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8979) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-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:
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 chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8979) - mean (74ms) : 70, 78
master - mean (71ms) : 69, 73
section Bailout
This PR (8979) - mean (76ms) : 73, 78
master - mean (75ms) : 73, 77
section CallTarget+Inlining+NGEN
This PR (8979) - mean (1,092ms) : 1042, 1143
master - mean (1,088ms) : 1044, 1133
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 (8979) - mean (111ms) : 106, 117
master - mean (110ms) : 106, 114
section Bailout
This PR (8979) - mean (111ms) : 108, 113
master - mean (111ms) : 108, 113
section CallTarget+Inlining+NGEN
This PR (8979) - mean (783ms) : 765, 802
master - mean (788ms) : 767, 809
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8979) - mean (102ms) : 97, 106
master - mean (98ms) : 95, 101
section Bailout
This PR (8979) - mean (99ms) : 97, 102
master - mean (99ms) : 97, 100
section CallTarget+Inlining+NGEN
This PR (8979) - mean (945ms) : 910, 981
master - mean (943ms) : 898, 988
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8979) - mean (97ms) : 94, 100
master - mean (100ms) : 94, 106
section Bailout
This PR (8979) - mean (102ms) : 98, 106
master - mean (98ms) : 94, 101
section CallTarget+Inlining+NGEN
This PR (8979) - mean (823ms) : 775, 871
master - mean (818ms) : 786, 851
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 (8979) - mean (192ms) : 189, 196
master - mean (191ms) : 188, 195
section Bailout
This PR (8979) - mean (195ms) : 193, 197
master - mean (195ms) : 193, 197
section CallTarget+Inlining+NGEN
This PR (8979) - mean (1,193ms) : 1121, 1266
master - mean (1,167ms) : 1135, 1199
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 (8979) - mean (288ms) : 282, 294
master - mean (274ms) : 270, 278
section Bailout
This PR (8979) - mean (289ms) : crit, 280, 298
master - mean (274ms) : 271, 277
section CallTarget+Inlining+NGEN
This PR (8979) - mean (966ms) : 943, 989
master - mean (937ms) : 918, 956
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8979) - mean (278ms) : 271, 284
master - mean (267ms) : 264, 271
section Bailout
This PR (8979) - mean (279ms) : 274, 283
master - mean (267ms) : 264, 270
section CallTarget+Inlining+NGEN
This PR (8979) - mean (1,162ms) : 1128, 1196
master - mean (1,146ms) : 1102, 1190
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8979) - mean (277ms) : 272, 281
master - mean (266ms) : 262, 270
section Bailout
This PR (8979) - mean (277ms) : 272, 281
master - mean (266ms) : 263, 268
section CallTarget+Inlining+NGEN
This PR (8979) - mean (1,046ms) : 1001, 1091
master - mean (1,026ms) : 985, 1068
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-08-03 10:53:07 Comparing candidate commit 4b840b3 in PR branch Found 0 performance improvements and 2 performance regressions! Performance is the same for 70 metrics, 0 unstable metrics, 64 known flaky benchmarks, 62 flaky benchmarks without significant changes.
|
Summary of changes
UnitTestRunner.RunSingleTestandRunSingleTestAsyncoverloads introduced in MSTest 4.3.3.Reason for change
MSTest 4.3.3 added a
lifecycleContextPropertiesargument to theUnitTestElementoverloads used by the main test execution path.The existing instrumentation only matched the previous three-argument overloads. Consequently, the final test result handling was not executed for some skipped and initialization-failure tests, resulting in missing test spans.
This fixes the failures from Azure DevOps build 206084.
Implementation details
The existing three-argument
RunSingleTestandRunSingleTestAsynchooks now have a maximum supported version of 4.3.2.New hooks starting at 4.3.3 target the corresponding four-argument overloads:
The new async integration accepts the additional lifecycle context dictionary and delegates the instrumentation logic to the existing handler.
The version ranges do not overlap, ensuring that only the appropriate overload is instrumented for each MSTest version.
Test coverage
generated_calltargets.g.cpp.MsTestV2Tests.SubmitTraces(4.3.3): passed with the expected 22 spans.MsTestV2EvpTests.DisabledTests: 8/8 passed, including both MSTest 4.3.3 transport variants.git diff --check: passed.Other details
No new test scenarios were required because the existing package-version integration tests cover this regression.