Split schema_test operations into parallel sub-tests - #8236
Open
Amaury Chamayou (achamayou) wants to merge 3 commits into
Open
Split schema_test operations into parallel sub-tests#8236Amaury Chamayou (achamayou) wants to merge 3 commits into
Amaury Chamayou (achamayou) wants to merge 3 commits into
Conversation
`e2e_operations.run` was a single ConcurrentRunner sub-test running 29 `run_*` scenarios strictly sequentially. At ~402s locally (~415s in CI) it was the entire critical path of `schema_test`, while the other five threads all finished within ~113s, and the network was mostly idle: only ~2.7 nodes alive on average. Regroup those 29 calls into seven entry points and register one ConcurrentRunner sub-test per group, with the same overrides the single `operations` entry used. No `run_*` function is modified and the relative order of calls within each group is preserved, so this is purely a change to how they are scheduled. Groups are balanced so no single one dominates: the longest, `operations-snapshots`, is ~78s. `schema_test` is now bounded by the pre-existing `download-snapshot` thread at ~113s. Local measurements (Azure Linux 3.0 container, matching CI): before 402.4s after 115.5s / 113.9s / 114.9s over three runs No new ctest tests are added, so `tests/ci-buckets.txt` is unchanged (`scripts/test-buckets-checks.sh` passes). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Amaury Chamayou (achamayou)
marked this pull request as ready for review
August 28, 2026 17:19
Copilot started reviewing on behalf of
Amaury Chamayou (achamayou)
August 28, 2026 17:19
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Splits the long-running operations suite into parallel groups, reducing schema_test runtime while preserving each group’s test order.
Changes:
- Adds seven concurrent operations sub-tests.
- Reorganizes all 29 operations without altering their implementation.
Custom instructions used:
.github/copilot-instructions.md
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
tests/schema.py |
Registers grouped operations as concurrent sub-tests. |
tests/e2e_operations.py |
Defines balanced sequential entry points for each group. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Amaury Chamayou (achamayou)
added a commit
that referenced
this pull request
Aug 29, 2026
Move e2e_logging_http2 from bucket C to bucket B so the capacity freed by #8236 reduces the remaining bucket C critical path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5bda3c0-f561-419d-ab26-441e1b853b7a
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.
Summary
schema_testis the longest test in CI'sbucket_bat ~415s.tests/schema.pyalready runs its sub-tests concurrently viaConcurrentRunner, but registerse2e_operations.runas a singlecr.addentry that executes 29run_*calls strictly sequentially. That one thread is the whole 415s critical path -- the other five threads all finish within 105s.This splits those 29 calls into seven grouped entry points, registered as seven
ConcurrentRunnersub-tests. Norun_*function is modified, and the relative order of calls within each group is preserved, so this only changes how they are scheduled.Measured effect
Confirmed in CI on this branch, against the median of 8 recent
mainruns:mainschema_testbucket_bctest totalVMSS Virtual Bwall clockAll six
bucket_btests pass. This also reorders the CI critical path:VMSS Virtual Bwas the longest job at ~1140s and is now ~842s, soVMSS Virtual C(~1044s) becomes the bound. End-to-end PR CI is ~96s shorter; the remainder is absorbed by job C.Local runs beforehand, in an Azure Linux 3.0 container matching the CI image, showed the same effect: 402.4s before versus 115.5s / 113.9s / 114.9s over three runs, all passing, spread 1.6s.
Per-group spans measured locally after the split:
download-snapshot(pre-existing)operations-snapshotsoperations-persistenceoperations-coseoperations-chunksoperations-configoperations-tb-snapshotsoperations-offlinedownloadnobuiltinstutorial,schemaschema_testis now bounded by the pre-existingdownload-snapshotthread rather than byoperations. Splittingrun_backup_snapshot_downloadis the obvious follow-up, but it would not shorten PR CI while job C is the critical path.Notes
schema_testpeaked at 11 concurrent nodes before this change, whilenodes_testalready peaks at 22 and the recovery tests at 37 on the same runner.run_time_based_snapshotting(>= 8 committed snapshots over a 10s window) held up under the extra contention -- it saw 14 snapshots at 12-way concurrency versus 12 at the previous 6-way. Unchanged.operations-*_schema_testprefix.tests/ci-buckets.txtis unchanged andscripts/test-buckets-checks.shpasses.CHANGELOG.mdentry.Testing
schema_testthree times locally, plus a pristinemainbaseline for comparisonscripts/test-buckets-checks.shuvx black,uvx ruff check, copyright and ASCII checksrun_*calls are preserved exactly, with no duplicates, none dropped, and relative order preserved within every group