Run LibChorus hg-integration tests in parallel with logic tests on Windows#386
Draft
imnasnainaec wants to merge 2 commits into
Draft
Run LibChorus hg-integration tests in parallel with logic tests on Windows#386imnasnainaec wants to merge 2 commits into
imnasnainaec wants to merge 2 commits into
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Split libchorus-split: hg into vcs (VcsDrivers) and sync separately so all three groups run in parallel on Windows - net462 include entries now appear before net8.0 in the matrix - Remove redundant ubuntu guard (ubuntu never gets vcs/sync entries) - Replace != '' guards with == '' for clarity - Rename "merge, FileHandlers, utilities, Model" step to "remaining" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
The `build-and-test` job on Windows takes ~57 minutes because the LibChorus test run serially spawns ~1,822 `hg.exe` processes across ~988 tests. The two hg-heavy namespaces are:
The remaining ~665 tests are pure XML-diff logic and are fast. Running them all in one serial job means the fast logic tests wait behind the slow Mercurial I/O.
Approach
Add a `libchorus-split` matrix dimension to the existing `build-and-test` job. Four extra Windows-only `include` entries inject `libchorus-split: vcs` and `libchorus-split: sync` jobs that run in parallel with the normal `libchorus-split: ''` jobs — no changes to source code or test projects required.
Matrix layout after this change (Windows):
Linux is unaffected — it still runs the full LibChorus suite in the single existing entry (no `vcs`/`sync` include entries are injected for Linux).
Filter expressions used
VcsDrivers job:
```
TestCategory!=SkipOnBuildServer&FullyQualifiedName~LibChorus.Tests.VcsDrivers
```
sync job:
```
TestCategory!=SkipOnBuildServer&FullyQualifiedName~LibChorus.Tests.sync
```
Remaining logic job (Windows):
```
TestCategory!=SkipOnBuildServer&FullyQualifiedName!~LibChorus.Tests.VcsDrivers&FullyQualifiedName!~LibChorus.Tests.sync
```
Estimated impact
Each hg-heavy slice (~184 and ~84 tests respectively) runs in parallel with each other and with the logic slice. The logic slice (~665 tests, no hg) should finish in ~7 min. Running in parallel, the critical path drops from ~57 min to roughly ~30 min on Windows.
Step guards
Steps skipped in the `vcs` and `sync` jobs to avoid wasted time: Test Chorus, Test Chorus Hub, Test ChorusMerge. The Restore, Build, and Upload Test Results steps still run in all job instances.
Devin review
https://app.devin.ai/review/sillsdev/chorus/pull/386
This change is