feat: watch slims parallel-testing clones as they boot - #43
Merged
Interlap01 merged 2 commits intoSep 16, 2026
Merged
Conversation
xcodebuild parallel testing creates a stock clone per worker in its own device set and deletes them per run; disable overrides do not survive simctl clone, so there is no device to pre-slim. watch polls the device sets and applies a no-reboot slim to each simulator once it boots, then leaves it alone, reusing EnableSlimNoReboot from MobAI-App#42. Answers the ephemeral-clone case raised in MobAI-App#41.
enumcase
force-pushed
the
feat/watch-parallel-testing-clones
branch
from
September 8, 2026 10:10
8d3b68b to
816d783
Compare
enumcase
marked this pull request as ready for review
September 8, 2026 10:10
Contributor
Author
|
@Interlap01 Hello! Sorry for sudden PR, but I guess it aligns well with your recent changes at #42 I've been trying to experiment with parallel tests on iOS and trying parallel simulators too. Thank you for enabling cool things with #42 |
Interlap01
reviewed
Sep 16, 2026
Review fixes on the watch scan loop: - Drop a UDID from seen when a scan finds it non-Booted. Below iOS 18.5 the no-reboot slim ends with the boot session, so a clone that booted again came back stock and was skipped for the rest of the run. - Drop a UDID from seen when its slim fails, so the next scan retries it instead of leaving that clone stock behind one stderr line. - Wait for the in-flight slim goroutines before Watch returns, so an importer holds no goroutine past the call. - Pass the slim a Reporter that prefixes each line with the UDID, so the per-device progress reaches the caller. seen is now mutated by the scan loop and by the slim goroutines, so it moves into a watcher behind a mutex. go test -race is green.
Contributor
|
Thank you! |
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
Adds
simslim watch: it polls the device sets and slims each simulator no-reboot the moment it boots, then leaves it alone. This is the hook forxcodebuildparallel-testing clones.xcodebuildparallel testing creates a fresh clone per worker in its own device set, runs the tests, and deletes the clones when the run ends. The clones are created stock, and disable overrides do not survivesimctl clone(this is whyrepair-cloneexists), so there is no device to slim ahead of time.watchcatches each clone once it boots and applies the no-reboot slim from #42. A clone slimmed a few seconds into a multi-minute run keeps its freed memory for the rest of the run.This is the automated answer to the ephemeral-clone case in #41, where slimming ahead of time was not possible.
Usage
Takes the same
--profile/--except/--keepselection ason. Scans the default andtestingsets plus any passed with--set, on a--interval(default 3s). Runs until Ctrl-C.Behavior
Validation
Local, iOS 26.1, on a real
xcodebuild -parallel-testing-worker-countrun:watchdetected each parallel-testing clone as it booted and targeted it for the no-reboot slim.simslim on.Tests
xcruntest: a booted device is slimmed exactly once across repeated scans, a shutdown device is never slimmed.make checkgreen (go test ./...,go vet, swift-format lint, build-app.sh).Builds on #42
watchreusesEnableSlimNoRebootfrom #42 (now merged). Rebased ontomain, so this PR is a single commit with no dependency.