fix(ci): run all compact test bins serially (#108266)

This commit is contained in:
Peter Steinberger
2026-07-15 04:16:53 -07:00
committed by GitHub
parent 0393189243
commit d223409c88
2 changed files with 10 additions and 15 deletions
+6 -6
View File
@@ -1381,12 +1381,12 @@ function createCompactNodeTestShardBundles(options = {}) {
...(bin.hasWholeConfigGroup
? { timeoutMinutes: COMPACT_WHOLE_NODE_TEST_TIMEOUT_MINUTES }
: {}),
// 4 vCPU bins run their plans serially: overlapping two Vitest runs
// there starves process-spawning tests (worker-startup timeouts in
// core-runtime-infra-process, tooling process-group waits), and the
// packed weights are contention-inflated so serializing is roughly
// wall-neutral. Exclusive spawn/signal bins stay serial everywhere.
...(bin.exclusive || runnerClass === "small" ? { planConcurrency: 1 } : {}),
// Every compact bin runs its plans serially. Overlapping two Vitest
// runs on one runner starves timing-sensitive tests on both runner
// classes (worker-startup timeouts on 4 vCPU, UI-animation and
// lock-timing flakes on 8 vCPU), and the packed weights are
// contention-inflated so serializing is roughly wall-neutral.
planConcurrency: 1,
});
}
}
+4 -9
View File
@@ -203,10 +203,9 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => {
expect(jobOf("agentic-agents-core-runner-embedded")).toBeGreaterThanOrEqual(0);
expect(jobOf("core-unit-fast")).toBeGreaterThanOrEqual(0);
expect(jobOf("agentic-agents-core-runner-embedded")).not.toBe(jobOf("core-unit-fast"));
// Spawn/signal-timing suites flake next to a concurrent sibling Vitest
// run; their bins never mix with regular groups, and every 4 vCPU bin
// runs serially because overlapping Vitest runs starve process-spawning
// tests on that runner class.
// Spawn/signal-timing suites never mix with regular groups, and every
// compact bin runs serially: overlapping Vitest runs flake timing-
// sensitive tests on both runner classes.
const exclusiveGroupRe = /^core-tooling(?:-\d+|-isolated|-docker)?$|^core-runtime-tui-pty$/u;
for (const shard of compact) {
const exclusiveCount = shard.groups.filter((group) =>
@@ -215,11 +214,7 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => {
if (exclusiveCount > 0) {
expect(exclusiveCount).toBe(shard.groups.length);
}
if (exclusiveCount > 0 || !shard.runner.includes("-8vcpu-")) {
expect(shard.planConcurrency).toBe(1);
} else {
expect(shard.planConcurrency).toBeUndefined();
}
expect(shard.planConcurrency).toBe(1);
}
expect(
compact.filter((shard) =>