Commit d4678c8
authored
perf(platform-ios): adapt startup to host capabilities (#174)
## What is this?
Harness now chooses how to prepare the iOS XCTest permission agent
according to host memory and CPU capacity. Constrained machines build
the agent before starting simulator preparation, while capable machines
overlap the two operations. This replaces the unconditional overlap
proposed in #171 and adds a reusable host-capabilities helper for future
resource-aware behavior.
The PR also makes the Metro block list consume the canonical cache root
produced by `createHarnessCache` instead of duplicating the cache
directory layout.
## How does it work?
`getHostCapabilities()` reports total memory and available CPU
parallelism from Node. An internal, argument-free startup policy enables
overlap only when the host has strictly more than 8 GiB of memory and
more than 6 available CPUs. The selected sequential or parallel strategy
is logged at debug level.
Sequential startup awaits the XCTest build before checking, booting, and
preparing the simulator. Parallel startup begins the build immediately,
prepares the simulator concurrently, then waits for both before starting
the agent. Both parallel branches are settled before cleanup so build
and simulator failures propagate without leaving the controller,
simulator override, or Harness-started simulator behind.
Metro receives `harnessCache.paths.root` when constructing its block
list and derives a cross-platform, exact-root exclusion from that value.
Cache-path construction therefore remains owned by
`@react-native-harness/cache`, and the cache boundary check stays strict
without an allowlist.
## Why is this useful?
Resource-constrained macOS runners avoid making `xcodebuild` and the
simulator compete for limited RAM and CPU, preserving a build-first
startup path when contention would likely make startup slower. More
powerful hosts retain the cold-start speedup from overlapping
independent work. Reusing the canonical cache root also prevents Metro
and the cache package from drifting onto different directory layouts.1 parent 2a679e0 commit d4678c8
11 files changed
Lines changed: 441 additions & 111 deletions
File tree
- .nx/version-plans
- packages
- bundler-metro/src
- __tests__
- platform-ios/src
- __tests__
- tools/src
- __tests__
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
Lines changed: 40 additions & 33 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
23 | 29 | | |
24 | 30 | | |
25 | 31 | | |
26 | | - | |
| 32 | + | |
27 | 33 | | |
28 | 34 | | |
29 | 35 | | |
30 | 36 | | |
31 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
32 | 50 | | |
33 | 51 | | |
34 | 52 | | |
35 | 53 | | |
36 | 54 | | |
37 | | - | |
| 55 | + | |
38 | 56 | | |
39 | 57 | | |
40 | 58 | | |
41 | 59 | | |
42 | 60 | | |
43 | 61 | | |
44 | | - | |
| 62 | + | |
45 | 63 | | |
46 | 64 | | |
47 | 65 | | |
| |||
60 | 78 | | |
61 | 79 | | |
62 | 80 | | |
63 | | - | |
64 | | - | |
65 | | - | |
| 81 | + | |
66 | 82 | | |
67 | 83 | | |
68 | 84 | | |
69 | 85 | | |
70 | 86 | | |
71 | 87 | | |
72 | 88 | | |
73 | | - | |
74 | | - | |
75 | | - | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
76 | 93 | | |
77 | 94 | | |
78 | 95 | | |
79 | 96 | | |
80 | 97 | | |
81 | 98 | | |
82 | 99 | | |
83 | | - | |
84 | | - | |
85 | | - | |
| 100 | + | |
86 | 101 | | |
87 | 102 | | |
88 | 103 | | |
89 | 104 | | |
90 | 105 | | |
91 | 106 | | |
92 | | - | |
93 | | - | |
94 | | - | |
| 107 | + | |
95 | 108 | | |
96 | 109 | | |
97 | 110 | | |
98 | 111 | | |
99 | 112 | | |
100 | 113 | | |
101 | | - | |
102 | | - | |
103 | | - | |
| 114 | + | |
104 | 115 | | |
105 | 116 | | |
106 | 117 | | |
| |||
110 | 121 | | |
111 | 122 | | |
112 | 123 | | |
113 | | - | |
114 | | - | |
115 | | - | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
116 | 129 | | |
117 | 130 | | |
118 | 131 | | |
| |||
123 | 136 | | |
124 | 137 | | |
125 | 138 | | |
126 | | - | |
127 | | - | |
128 | | - | |
| 139 | + | |
129 | 140 | | |
130 | 141 | | |
131 | 142 | | |
| |||
134 | 145 | | |
135 | 146 | | |
136 | 147 | | |
137 | | - | |
138 | | - | |
139 | | - | |
| 148 | + | |
140 | 149 | | |
141 | 150 | | |
142 | 151 | | |
| |||
145 | 154 | | |
146 | 155 | | |
147 | 156 | | |
148 | | - | |
149 | | - | |
| 157 | + | |
| 158 | + | |
150 | 159 | | |
151 | 160 | | |
152 | 161 | | |
| |||
156 | 165 | | |
157 | 166 | | |
158 | 167 | | |
159 | | - | |
160 | | - | |
161 | | - | |
| 168 | + | |
162 | 169 | | |
163 | 170 | | |
164 | 171 | | |
| |||
183 | 190 | | |
184 | 191 | | |
185 | 192 | | |
186 | | - | |
| 193 | + | |
187 | 194 | | |
188 | 195 | | |
189 | 196 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 7 | + | |
| 8 | + | |
19 | 9 | | |
20 | | - | |
| 10 | + | |
| 11 | + | |
21 | 12 | | |
22 | 13 | | |
23 | 14 | | |
| |||
84 | 75 | | |
85 | 76 | | |
86 | 77 | | |
87 | | - | |
| 78 | + | |
| 79 | + | |
88 | 80 | | |
89 | 81 | | |
90 | 82 | | |
| |||
100 | 92 | | |
101 | 93 | | |
102 | 94 | | |
103 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
104 | 98 | | |
105 | 99 | | |
106 | 100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
0 commit comments