-
Notifications
You must be signed in to change notification settings - Fork 647
Parallelise outerloop quarantined test execution #8618
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 1 out of 4 changed files in this pull request and generated no comments.
Files not reviewed (3)
- eng/AfterSolutionBuild.targets: Language not supported
- eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets: Language not supported
- tests/Aspire.Templates.Tests/Aspire.Templates.Tests.csproj: Language not supported
Comments suppressed due to low confidence (3)
.github/workflows/tests-outerloop.yml:131
- Changing the condition to 'if: failure()' for the log upload step may result in logs not being captured for successful runs. Consider using 'if: always()' if maintaining complete log records is desired.
if: failure()
.github/workflows/tests-outerloop.yml:66
- There is an inconsistency between the log directory defined here and the path used later for uploading test result artifacts. Please ensure both paths are aligned for proper artifact extraction.
$logDirectory = "${{ github.workspace }}/artifacts/TestResults"
.github/workflows/tests-outerloop.yml:32
- The use of '/p:Restore=false' and '/p:Build=false' in the build command might lead to outdated binaries if dependencies have changed. Verify that skipping these steps is safe for all test projects involved.
./build.cmd -test /p:TestRunnerName=QuarantinedTestRunsheetBuilder /p:RunQuarantinedTests=true /bl -c Release -ci /p:CI=false /p:Restore=false /p:Build=false
I tested this pretty extensively in my fork. Here's one of the latest tests: https://github.com/RussKie/aspire/actions/runs/14328854911/job/40159969972. |
282369d
to
2b72077
Compare
The outerloop tests are hitting the "no space" issue! |
This will address that. |
2b72077
to
8f7927c
Compare
We should add a job to run at the end of all the matrix jobs to generate a combined report. |
We can do it as a follow up after we unblock the outerloop workflow. |
8f7927c
to
c3ef280
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is looking good. Posted some comments.
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
8000
Outdated
Show resolved
Hide resolved
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
Show resolved
Hide resolved
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
Show resolved
Hide resolved
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
c3ef280
to
9cde5b8
Compare
For the outerloop the run time is not critical (unlike for PR validation).
|
9cde5b8
to
f9b45d5
Compare
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great, and will really help with getting results from all the quarantined tests! Except for the last comment that I posted, LGTM! 👍
The last Outerloop workflow run for this branch seems to be from 2-3 days ago. Could we please kick off a run before merging, since I think a fair bit has changed since then? |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
Outdated
Show resolved
Hide resolved
eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets
Outdated
Show resolved
Hide resolved
f9b45d5
to
5a9013d
Compare
With @Youssef1313's help, it's back online 🎉 Here's the latest test run: https://github.com/RussKie/aspire/actions/runs/14375744440/job/40308019729#step:4:67 |
Use the Arcade SDK capabilities to provide a custom test runner (see in eng/QuarantinedTestRunsheetBuilder) to intercept test execution to pretend to run tests. Instead, only query test assemblies whether those contain quarantined tests by running `dotnet test --list-tests`. Then inspect the output, and if a test project contains quarantined tests include the test project into a runsheet. The runsheet generation itself is a two step process. 1. The first step is performed by each project during RunTests target execution (in QuarantinedTestRunsheetBuilder) and it results in project-specific runsheets being generated. E.g., Aspire.Cli.Tests_net8.0_x64.linux.runsheet.json. 2. After all test projects have been inspected, all the individual runsheets are aggregated into a single runsheet, which is then used as a matrix by GHA workflow. This is happening in eng/AfterSolutionBuild.targets.
d0b649c
to
a93aa01
Compare
🎉 |
This should address unexplainable "ran out of disk space" errors on GHA (example):

Use the Arcade SDK capabilities to provide a custom test runner (see in eng/QuarantinedTestRunsheetBuilder) to intercept test execution to pretend to run tests. Instead, only query test assemblies whether those contain quarantined tests by running
dotnet test --list-tests
. Then inspect the output, and if a test project contains quarantined tests include the test project into a runsheet.The runsheet generation itself is a two step process.
The first step is performed by each project during RunTests target execution (in QuarantinedTestRunsheetBuilder) and it results in project-specific runsheets being generated. E.g., Aspire.Cli.Tests_net8.0_x64.linux.runsheet.json.
After all test projects have been inspected, all the individual runsheets are aggregated into a single runsheet, which is then used as a matrix by GHA workflow.
This is happening in eng/AfterSolutionBuild.targets.