Repository navigation
perf(test): remove Journaling.Tests dependency on Azure.Tests - #11665
Merged
ReubenBond merged 1 commit intoNov 2, 2026
Merged
Conversation
Orleans.Journaling.Tests only used Orleans.Azure.Tests to transitively obtain Microsoft.Extensions.Diagnostics.Testing (MetricCollector). Reference that centrally pinned package directly so Journaling.Tests and Journaling.Json.Tests no longer wait for the Azure/Streaming/Reminders/Runtime test-project chain, which places both at the end of clean Orleans.slnx builds. Discovered tests (including theory arguments) and per-test outcomes are unchanged on net8.0 and net10.0. System.Security.Cryptography.ProtectedData now resolves to 4.5.0, matching TestExtensions, which owns the shared Azure token credential.
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the test dependency change.
No open issues 🎉
What changed in this PR
This PR removes an unnecessary test-project dependency so Orleans journaling tests can build without waiting for the Azure test dependency chain.
Changes:
- Replace the
Orleans.Azure.Testsproject reference with a directMicrosoft.Extensions.Diagnostics.Testingpackage reference forMetricCollector<T>. - Preserve shared test infrastructure references while reducing build dependencies for Journaling and its downstream JSON tests.
| File | Description |
|---|---|
test/Orleans.Journaling.Tests/Orleans.Journaling.Tests.csproj |
Reference diagnostics testing directly and remove the Azure test-project dependency. |
Review effort: Balanced
Contributor
Code coverage
Report-only conclusion: current-main baseline stale. The newest successful coverage run tested 9a0c764, not current main 625b2ba. Coverage combines every CI test matrix job, including providers, CodeGen, .NET 8/10, Linux, Windows, and macOS, using canonical physical source and branch identities. The comparison remains report-only while normal line and branch variance is calibrated. Coverage details |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Orleans.Journaling.TestsreferencedOrleans.Azure.Tests. The only thing it used from that reference wasMetricCollector<T>, which it received transitively fromMicrosoft.Extensions.Diagnostics.Testing. As a result,Orleans.Journaling.TestsandOrleans.Journaling.Json.Testscould not compile until the whole Azure.Tests chain had built: Reminders.Tests, Runtime.Internal.Tests, Streaming.Tests and Runtime.Tests. In cleanOrleans.slnxbuilds, those two projects were usually the last compilers to finish.Change
Orleans.Azure.Testsproject reference.Microsoft.Extensions.Diagnostics.Testingdirectly. The package is already pinned inDirectory.Packages.propsand resolves to the same versions as before: 8.10.0 for net8.0 and 10.3.0 for net10.0.The
Journaling.Json.Tests→Journaling.Testsreference stays, because Json.Tests uses its shared helpers.Verification
All results below cover both net8.0 and net10.0.
System.Security.Cryptography.ProtectedDatanow resolves to 4.5.0, the same version asTestExtensions, which owns the shared Azure token credential.Runtime.Tests,Runtime.Internal.Tests,Streaming.TestsandReminders.Testsalready use 4.5.0. The previous 8.0.0/10.0.3 came only from Azure.Tests'System.Diagnostics.PerformanceCounterdependency. A Windows DPAPI round-trip with the 4.5.0 runtime library succeeds.Build impact
These are clean
dotnet build Orleans.slnx -m:32runs on the rc.3 SDK, with npm ci in every sample, interleaved A-B-B-A then B-A-A-B. All times are in seconds.The base table leaves out one cold first build of a fresh worktree (188.0s).
The samples are noisy and the ranges overlap. A more conservative estimate holds every other project's schedule fixed: in the base runs, the last Journaling compile ends 0.9–3.2s after the last other compile. With this change, Journaling.Tests and Json.Tests finish 30–50s before the build ends and are never the last compiler. A focused Journaling build also no longer builds the Azure, Streaming, Reminders and Runtime test projects.
Microsoft Reviewers: Open in CodeFlow