CI: split integration tests into parallel suites; shard the upgrade property test (#757) - #758
Merged
Merged
Conversation
Round-robin over the scripts that reach execution; every shard still upgrades and checks every script. TestShardsPartition proves the shards together execute each script exactly once. Locally 75+74+75 = 224, the unsharded count. Part of #757. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… nightly The single make test-integration step took ~22 of its 30 minutes, its wall time being mdl/roundtrip alone. Per-PR CI now runs executor, roundtrip, upgrade (3 shards) and other as parallel jobs, with an integration-passed aggregate. Nightly raises its step to 60 min and runs MXCLI_UPGRADE_ALL in 3 shards once. Closes #757. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 tasks
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.
Closes #757
What was slow (measured, not guessed)
CI run 36319810164 (PR #742),
make test-integration= 22.4 min of a 30 min step. Per package:go test already ran packages in parallel, so the step's wall time was mdl/roundtrip's alone; raising the timeout would not have made room for TestApp (#743).
Change
test-integration-{executor,roundtrip,upgrade,other}.roundtrip= mdl/roundtrip with-skip ^TestUpgradeExecutesToTheSameModel$(all round-trip laws + the execute-both controls);upgrade= that test alone;other= every other package that has integration-tagged tests, found by grepping the build tag (hidden dirs excluded), so a new integration package cannot be missed.make test-integrationis unchanged in scope (./...), timeout 30m -> 60m.MXCLI_UPGRADE_SHARD=i/nexecutes every n-th executable script (round-robin). Every shard still upgrades/parses/checks every script (cheap). The "fewer than 50 executed" sanity floor scales to 50/n.integrationmatrix job: executor, roundtrip, upgrade 1/3, 2/3, 3/3, other (mxbuild only for executor/other), step timeout 30 min, job 45 min, plus anintegration-passedaggregate job as one stable check name.upgrade-full-corpusjob (3 shards) withMXCLI_UPGRADE_ALL=1, once (independent of Mendix version), not gating the release.Nothing leaves per-PR CI at its default scope: the round-trip laws and the execute-both upgrade test both still run. The only thing no longer run per PR is the unit tests of packages with no integration files being re-run under
-tags integration;make testruns those.Expected CI timings (per job, incl. ~3 min checkout/grammar/build)
Headroom: every suite's go test step is under ~2/3 of its 30 min step timeout. If executor grows it is the next to shard (by
-runpattern).Test plan (what I actually ran)
make build,make lint(Go vet incl.-tags integration, TS) — pass.actionlinton both workflows — clean; control: renamingneeds: integrationmakes it report the missing job.go test -tags integration ./mdl/roundtrip/— pass, 554 s, 224 scripts executed, 452 header-only.MXCLI_UPGRADE_SHARD={1,2,3}/3 make test-integration-upgrade— pass, 150 s / 167 s / 161 s, executing 75 + 74 + 75 = 224 scripts, exactly the unsharded count.make test-integration-roundtrip— pass, 38 s; runs every roundtrip test except the property test (incl. controls, TestParseShard, TestShardsPartition).make -n test-integration-otherresolves to./cmd/mxcli ./cmd/mxcli/docker ./cmd/mxcli/marketplace. Not executed locally (needs mxbuild 11.12.2, which this machine lacks); CI runs it.shard.hasreturning true -> TestShardsPartition fails ("item 0 is in 2 shards"); dropping the1 <= i <= nbound -> TestParseShard fails on4/3.Design choices not settled by the ADRs
integration-passedaggregate so a future branch rule does not have to list matrix legs.submodules: trueon the checkout of the roundtrip suite; left as a comment there rather than enabling it before the submodule exists.🤖 Generated with Claude Code