Repository navigation
Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
Hosted experiment result at The iOS job confirms both independent simulators booted and both workers finished:
The performance result does not reproduce the local pilot:
Serial reference: Recommendation: do not merge the same-host two-simulator configuration on this evidence. A further parallelization experiment should compare shards on separate runners against a serial run at the same source SHA, including setup cost. Keep the #3800 fixture fix separate; do not change assertions, timeouts, or selection to make this experiment green. Coverage, Integration Tests, Repo Guards, Android/Linux/macOS smoke, and all other executable checks passed at this head. The cache matrix is skipped and the review bot neutral. Downstream iOS CLI/replay/E2E checks were skipped after XCTest failed, so they are not validated. The PR remains ready for review and is not merge-ready. |
|
The code is sound for an experiment, but the hosted run at 027b437 shows no gain, so please do not merge this as is. The sharded lane took 23m02s, plus 3m34s to boot the second simulator, against 21m40s for the earlier serial run of 124 methods. The two shards still took 944.8s and 1034.2s of test-case time. Both simulators share one hosted macOS runner, so the local 39.7% gain (warm, 12 tests, 12-core host) did not carry over. Merging would make the required iOS PR lane about 5 minutes slower, add a second simulator to create and delete, and add roughly 80 lines of shell around https://github.com/callstack/agent-device/blob/027b437/.github/workflows/ios.yml#L140. Please keep this as an experiment, and close it or hold it until a controlled A/B on the same commit and runner shows a real wall-time gain. If you keep it, the rule should be that the shard count and its per-shard resources (simulator, log, exit file, result bundle) all come from one SHARD_COUNT-driven loop. Not blocking, take or leave: the shard count 2 is spelled out at five sites in https://github.com/callstack/agent-device/blob/027b437/.github/workflows/ios.yml#L175 (both Would it be simpler to land nothing and keep the serial lane? If faster PR feedback is still wanted, could we cut the work first, by shortening the PR-reach list or moving slow occupancy tests to the nightly lane? Or run the A/B on one commit and runner pair, and adopt sharding only if step time plus boot time wins by a clear margin, with one SHARD_COUNT array and identities read from the existing xcresult summary path so the exact-once check extends livenessFailure. Fixing #3800 comes first, so the lane can be measured green on both shapes, then a same-commit hosted A/B that includes the second simulator boot. The only failing check is Smoke Tests, on testPlanMovesPastATreeTierWhoseCollapsedTabQueryCannotStart (expected 'budget', got 'capture-failed' at RunnerTests+SnapshotCapturePlanOccupancyTests.swift:529). It is the same assertion #3800 records on three other heads, and this diff touches no Swift file, so it is likely unrelated. Running two simulators on one host could raise the flake rate if #3800 is a timing issue, but that is not shown. The other 16 checks pass. I did not re-run the fault-injection cases or the unit tests, and I could not compare timings across different commits and runs, as you note. Until #3800 is fixed and the hosted run shows a gain, this should not merge. |
|
Closing this experiment as requested. The hosted run showed no benefit: 23m02s for XCTest plus 3m34s for the additional simulator boot, versus the earlier 21m40s serial run. The runs were not a controlled same-SHA comparison, so they do not establish causation; they also do not support adopting same-host sharding. Keep the existing serial lane. The performance and exact-coverage evidence remains in the PR discussion. The #3800 fixture fix is being handled separately in #3802. |
|
Summary
Experiment with two isolated simulator processes for the iOS PR XCTest selection. Alternate generated method IDs; retain every test, assertion, and timeout. Wait for both workers, preserve failures, upload separate results, and verify exact method coverage. Four files; follow-up to #3802.
Validation
Tested head:
027b43734b26134459be39310eeef0e61a1fd1ab.pnpm check:affected --run --head HEAD: 36 checks passed; receiptrun-jsvaj0,exactCommit=true,checkoutChanged=false. Focused reporter/selection tests: 51 passed. Independent review: no findings.9beae21eaf; warm 12-test pair improved 39.7%, excluding boot.9beae21eaf: 21m40s for 124 methods. Different commits/runs prevent a controlled speedup claim. This experiment shows no hosted benefit.