@overkill-dev/run 0.0.56 → 0.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/engine/test-body-resource-attachment.d.ts +15 -0
  2. package/engine/test-body-resource-attachment.d.ts.map +1 -1
  3. package/engine/test-body-resource-attachment.js +16 -0
  4. package/engine/test-body-resource-attachment.js.map +1 -1
  5. package/package.json +14 -4
  6. package/packages/engine/engine.entry-point.d.ts +1 -1
  7. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  8. package/packages/run/run.entry-point.d.ts +2 -1
  9. package/packages/run/run.entry-point.d.ts.map +1 -1
  10. package/readme.md +16 -1
  11. package/reporters/human-reporter-rendering.js +1 -1
  12. package/reporters/human-reporter-rendering.js.map +1 -1
  13. package/reporters/line-reporter.js +5 -2
  14. package/reporters/line-reporter.js.map +1 -1
  15. package/reporters/run-summary-rendering.js +80 -0
  16. package/reporters/run-summary-rendering.js.map +1 -0
  17. package/resources/resource-definition-brand.d.ts +2 -0
  18. package/resources/resource-definition-brand.d.ts.map +1 -0
  19. package/resources/resource-definition-brand.js +2 -0
  20. package/resources/resource-definition-brand.js.map +1 -0
  21. package/resources/resource-definition-shape.d.ts +3 -0
  22. package/resources/resource-definition-shape.d.ts.map +1 -1
  23. package/resources/resource-definition-types.d.ts +104 -0
  24. package/resources/resource-definition-types.d.ts.map +1 -0
  25. package/resources/resource-definition.js +52 -0
  26. package/resources/resource-definition.js.map +1 -0
  27. package/resources/resource-graph.d.ts +3 -3
  28. package/resources/resource-graph.d.ts.map +1 -1
  29. package/resources/resource-graph.js.map +1 -1
  30. package/resources/resource-scenario-binding.d.ts +37 -0
  31. package/resources/resource-scenario-binding.d.ts.map +1 -0
  32. package/resources/resource-scenario-binding.js +99 -0
  33. package/resources/resource-scenario-binding.js.map +1 -0
  34. package/resources/resource-scenario.d.ts +31 -0
  35. package/resources/resource-scenario.d.ts.map +1 -0
  36. package/resources/resource-scenario.js +68 -0
  37. package/resources/resource-scenario.js.map +1 -0
  38. package/resources/resource-session.d.ts +3 -2
  39. package/resources/resource-session.d.ts.map +1 -1
  40. package/resources/resources.d.ts +46 -76
  41. package/resources/resources.d.ts.map +1 -1
  42. package/resources/resources.js +90 -10
  43. package/resources/resources.js.map +1 -1
  44. package/resources/runtime-definition.d.ts +11 -2
  45. package/resources/runtime-definition.d.ts.map +1 -1
  46. package/resources/runtime-definition.js +66 -0
  47. package/resources/runtime-definition.js.map +1 -1
  48. package/resources/runtime-matrix-definition.d.ts +25 -6
  49. package/resources/runtime-matrix-definition.d.ts.map +1 -1
  50. package/resources/runtime-matrix-definition.js +226 -4
  51. package/resources/runtime-matrix-definition.js.map +1 -1
  52. package/run/command-line-runner.d.ts.map +1 -1
  53. package/run/command-line-runner.js +10 -5
  54. package/run/command-line-runner.js.map +1 -1
  55. package/run/duration-history.d.ts +10 -1
  56. package/run/duration-history.d.ts.map +1 -1
  57. package/run/duration-history.js +2 -2
  58. package/run/duration-history.js.map +1 -1
  59. package/run/node-child-process-starters.js +1 -1
  60. package/run/node-child-process-starters.js.map +1 -1
  61. package/run/resource-lifecycle-boundaries.js +182 -0
  62. package/run/resource-lifecycle-boundaries.js.map +1 -0
  63. package/run/resource-lifecycle-cache-identity.js +65 -0
  64. package/run/resource-lifecycle-cache-identity.js.map +1 -0
  65. package/run/resource-lifecycle-composition.d.ts +2 -0
  66. package/run/resource-lifecycle-composition.d.ts.map +1 -1
  67. package/run/resource-lifecycle-composition.js +48 -11
  68. package/run/resource-lifecycle-composition.js.map +1 -1
  69. package/run/resource-lifecycle-projection.js +48 -0
  70. package/run/resource-lifecycle-projection.js.map +1 -0
  71. package/run/resource-lifecycle-session-acquirer.js +182 -0
  72. package/run/resource-lifecycle-session-acquirer.js.map +1 -0
  73. package/run/resource-lifecycle-startup-budget.js +82 -0
  74. package/run/resource-lifecycle-startup-budget.js.map +1 -0
  75. package/run/resource-lifecycle-state.d.ts +2 -0
  76. package/run/resource-lifecycle-state.d.ts.map +1 -1
  77. package/run/resource-lifecycle-state.js.map +1 -1
  78. package/run/resource-lifecycle-timing.js +85 -0
  79. package/run/resource-lifecycle-timing.js.map +1 -0
  80. package/run/resource-lifecycle.js +133 -237
  81. package/run/resource-lifecycle.js.map +1 -1
  82. package/run/run-collected-planning.js +34 -6
  83. package/run/run-collected-planning.js.map +1 -1
  84. package/run/run-collected-resolution.js +4 -2
  85. package/run/run-collected-resolution.js.map +1 -1
  86. package/run/run-collection-error-result.js +2 -2
  87. package/run/run-collection-error-result.js.map +1 -1
  88. package/run/run-config-schema.d.ts +7 -0
  89. package/run/run-config-schema.d.ts.map +1 -1
  90. package/run/run-config-schema.js +4 -0
  91. package/run/run-config-schema.js.map +1 -1
  92. package/run/run-config.d.ts.map +1 -1
  93. package/run/run-config.js +4 -4
  94. package/run/run-config.js.map +1 -1
  95. package/run/run-empty-shard.js +2 -2
  96. package/run/run-empty-shard.js.map +1 -1
  97. package/run/run-facts.js +5 -1
  98. package/run/run-facts.js.map +1 -1
  99. package/run/run-if-main-facts.js +2 -1
  100. package/run/run-if-main-facts.js.map +1 -1
  101. package/run/run-in-process-execution.js +3 -3
  102. package/run/run-in-process-execution.js.map +1 -1
  103. package/run/run-input-resolution.js +6 -0
  104. package/run/run-input-resolution.js.map +1 -1
  105. package/run/run-isolated-process.js +39 -24
  106. package/run/run-isolated-process.js.map +1 -1
  107. package/run/run-local-execution.js +12 -3
  108. package/run/run-local-execution.js.map +1 -1
  109. package/run/run-local-resolution.js +6 -2
  110. package/run/run-local-resolution.js.map +1 -1
  111. package/run/run-orchestrator-dependencies.d.ts +2 -0
  112. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  113. package/run/run-orchestrator-dependencies.js.map +1 -1
  114. package/run/run-support.js +14 -6
  115. package/run/run-support.js.map +1 -1
  116. package/run/run-timing-collection.d.ts +43 -0
  117. package/run/run-timing-collection.d.ts.map +1 -0
  118. package/run/run-timing-collection.js +173 -8
  119. package/run/run-timing-collection.js.map +1 -1
  120. package/run/run-types.d.ts +13 -3
  121. package/run/run-types.d.ts.map +1 -1
  122. package/run/run-types.js.map +1 -1
  123. package/run/run-validation.js +2 -0
  124. package/run/run-validation.js.map +1 -1
  125. package/run/run.js +31 -20
  126. package/run/run.js.map +1 -1
  127. package/run/supervised-child-process.d.ts +1 -0
  128. package/run/supervised-child-process.d.ts.map +1 -1
  129. package/run/supervised-child-process.js +5 -0
  130. package/run/supervised-child-process.js.map +1 -1
  131. package/run/supervised-child.js +3 -2
  132. package/run/supervised-child.js.map +1 -1
  133. package/run/supervised-protocol.js +14 -0
  134. package/run/supervised-protocol.js.map +1 -1
  135. package/run/supervised-run-collection.js +123 -0
  136. package/run/supervised-run-collection.js.map +1 -0
  137. package/run/supervised-run-runtime.js +8 -13
  138. package/run/supervised-run-runtime.js.map +1 -1
  139. package/run/supervised-run.js +74 -106
  140. package/run/supervised-run.js.map +1 -1
  141. package/run/work-unit-planning.js +4 -2
  142. package/run/work-unit-planning.js.map +1 -1
  143. package/run/work-unit-resource-constraints.js +23 -6
  144. package/run/work-unit-resource-constraints.js.map +1 -1
  145. package/run/worker-pool-collection.js +46 -20
  146. package/run/worker-pool-collection.js.map +1 -1
  147. package/run/worker-pool-command.js +68 -0
  148. package/run/worker-pool-command.js.map +1 -0
  149. package/run/worker-pool-dispatch-state.js +2 -4
  150. package/run/worker-pool-dispatch-state.js.map +1 -1
  151. package/run/worker-pool-execution.js +48 -73
  152. package/run/worker-pool-execution.js.map +1 -1
  153. package/run/worker-pool-hedge-dispatch.js +2 -1
  154. package/run/worker-pool-hedge-dispatch.js.map +1 -1
  155. package/run/worker-pool-host-process-starter.js +13 -0
  156. package/run/worker-pool-host-process-starter.js.map +1 -0
  157. package/run/worker-pool-host-process.js +53 -79
  158. package/run/worker-pool-host-process.js.map +1 -1
  159. package/run/worker-pool-host-protocol.js.map +1 -1
  160. package/run/worker-pool-host-signal.js +21 -0
  161. package/run/worker-pool-host-signal.js.map +1 -0
  162. package/run/worker-pool-host-task.js +55 -0
  163. package/run/worker-pool-host-task.js.map +1 -0
  164. package/run/worker-pool-lanes.js +51 -24
  165. package/run/worker-pool-lanes.js.map +1 -1
  166. package/run/worker-pool-lifecycle-lanes.js +4 -56
  167. package/run/worker-pool-lifecycle-lanes.js.map +1 -1
  168. package/run/worker-pool-placement-planning.js +9 -4
  169. package/run/worker-pool-placement-planning.js.map +1 -1
  170. package/run/worker-pool-protocol.js +2 -0
  171. package/run/worker-pool-protocol.js.map +1 -0
  172. package/run/worker-pool-resource-lifecycle-execution.js +155 -0
  173. package/run/worker-pool-resource-lifecycle-execution.js.map +1 -0
  174. package/run/worker-pool-routing.js +6 -3
  175. package/run/worker-pool-routing.js.map +1 -1
  176. package/run/worker-pool-run.js +74 -19
  177. package/run/worker-pool-run.js.map +1 -1
  178. package/run/worker-pool-runtime.js +87 -20
  179. package/run/worker-pool-runtime.js.map +1 -1
  180. package/run/worker-pool-task-events.js +3 -0
  181. package/run/worker-pool-task-events.js.map +1 -1
  182. package/run/worker-pool-task-validation.js +11 -0
  183. package/run/worker-pool-task-validation.js.map +1 -0
  184. package/run/worker-pool-work-dispatcher.js +27 -21
  185. package/run/worker-pool-work-dispatcher.js.map +1 -1
  186. package/run/worker-pool-worker-resources.js +99 -0
  187. package/run/worker-pool-worker-resources.js.map +1 -0
  188. package/run/worker-pool-worker-timing.js +63 -0
  189. package/run/worker-pool-worker-timing.js.map +1 -0
  190. package/run/worker-pool-worker.js +93 -32
  191. package/run/worker-pool-worker.js.map +1 -1
  192. package/sbom.cdx.json +9 -9
  193. package/reporters/run-fact-summary.js +0 -20
  194. package/reporters/run-fact-summary.js.map +0 -1
  195. package/reporters/run-timing-summary.js +0 -11
  196. package/reporters/run-timing-summary.js.map +0 -1
@@ -2,7 +2,7 @@ import { workIdentityKey } from "../engine/identity.js";
2
2
  import { collectedRunCaseEntries } from "./collected-run-plan.js";
3
3
  import { selectDurationHistoryPlacement } from "./duration-history.js";
4
4
  import { workUnitsFromCollectedPlan } from "./work-unit-planning.js";
5
- import { workerPoolLanes, workerPoolPlacementAssignments } from "./worker-pool-lanes.js";
5
+ import { resolveWorkerCount, workerPoolLanesForCount, workerPoolPlacementAssignments } from "./worker-pool-lanes.js";
6
6
 
7
7
  function collectedEntriesByWorkKey(collectedPlan) {
8
8
  return new Map(collectedRunCaseEntries(collectedPlan).map(function toEntry(entry) {
@@ -26,18 +26,23 @@ export function createWorkerPoolPlacementResolution(input) {
26
26
  const durationHistory = input.assignmentPolicy === 'duration-history-balanced'
27
27
  ? selectDurationHistoryPlacement(units, input.durationHistoryIndex, input.nowMilliseconds)
28
28
  : { facts: null, unitDuration: null };
29
- const lanes = workerPoolLanes({
29
+ const laneInput = {
30
30
  assignmentPolicy: input.assignmentPolicy,
31
31
  availableParallelism: input.availableParallelism,
32
+ profileMaximum: input.profileMaximumWorkers,
33
+ requestedWorkers: input.requestedWorkers,
32
34
  units
33
- });
35
+ };
36
+ const workerCount = resolveWorkerCount(laneInput);
37
+ const lanes = workerPoolLanesForCount(workerCount.resolved);
34
38
  return {
35
39
  durationHistory: durationHistory.facts,
36
40
  placementPlan: {
37
41
  assignments: workerPoolPlacementAssignments(units, lanes, input.assignmentPolicy, durationHistory.unitDuration),
38
42
  lanes,
39
43
  units
40
- }
44
+ },
45
+ workerCount
41
46
  };
42
47
  }
43
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool-placement-planning.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-placement-planning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,uBAAuB,EAC1B,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EACH,8BAA8B,EAGjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACH,eAAe,EACf,8BAA8B,EACjC,MAAM,wBAAwB,CAAC;AAEA;AA+BhC,SAAS,yBAAyB,CAC9B,aAA+B;IAE/B,OAAO,IAAI,GAAG,CACV,uBAAuB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK;QAC7D,OAAO,CAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAE,CAAC;IACpD,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oCAAoC,CAChD,aAA+B,EAC/B,KAA6B;IAE7B,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAEzD,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,gBAAgB,CAAC,IAAI;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,IAAI;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,mCAAmC,CAC/C,KAAyC;IAEzC,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,KAAK,2BAA2B;QAC1E,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,eAAe,CAAC;QAC1F,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC;QAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,KAAK;KACR,CAAC,CAAC;IAEH,OAAO;QACH,eAAe,EAAE,eAAe,CAAC,KAAK;QACtC,aAAa,EAAE;YACX,WAAW,EAAE,8BAA8B,CACvC,KAAK,EACL,KAAK,EACL,KAAK,CAAC,gBAAgB,EACtB,eAAe,CAAC,YAAY,CAC/B;YACD,KAAK;YACL,KAAK;SACR;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"worker-pool-placement-planning.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-placement-planning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,uBAAuB,EAC1B,MAAM,yBAAyB,CAAC;AAajC,OAAO,EACH,8BAA8B,EAGjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,0BAA0B,EAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAEjC,MAAM,wBAAwB,CAAC;AAEA;AAkChC,SAAS,yBAAyB,CAC9B,aAA+B;IAE/B,OAAO,IAAI,GAAG,CACV,uBAAuB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK;QAC7D,OAAO,CAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAE,CAAC;IACpD,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oCAAoC,CAChD,aAA+B,EAC/B,KAA6B;IAE7B,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAEzD,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,gBAAgB,CAAC,IAAI;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,IAAI;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,mCAAmC,CAC/C,KAAyC;IAEzC,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,KAAK,2BAA2B;QAC1E,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,eAAe,CAAC;QAC1F,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAwB;QACnC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,cAAc,EAAE,KAAK,CAAC,qBAAqB;QAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,KAAK;KACR,CAAC;IACF,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,uBAAuB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5D,OAAO;QACH,eAAe,EAAE,eAAe,CAAC,KAAK;QACtC,aAAa,EAAE;YACX,WAAW,EAAE,8BAA8B,CACvC,KAAK,EACL,KAAK,EACL,KAAK,CAAC,gBAAgB,EACtB,eAAe,CAAC,YAAY,CAC/B;YACD,KAAK;YACL,KAAK;SACR;QACD,WAAW;KACd,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const workerPoolRunResourceOwnerLane = 'run-resource-owner';
2
+ //# sourceMappingURL=worker-pool-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool-protocol.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-protocol.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,8BAA8B,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { MessageChannel as NodeMessageChannel } from 'node:worker_threads';
2
+ import { workIdentityKey } from "../engine/identity.js";
3
+ import { createBatchRunCommand, createRunCommand, firstPlanUnit, placementRunWork } from "./worker-pool-command.js";
4
+ import { workerPoolRunResourceOwnerLane } from "./worker-pool-protocol.js";
5
+ import { collectedPlanNeedsRunResourceOwner } from "./worker-pool-runtime.js";
6
+ function portTransferList(port) {
7
+ return [port];
8
+ }
9
+ function freshSignal() {
10
+ const controller = new AbortController();
11
+ return controller.signal;
12
+ }
13
+ function isWorkerPoolRunResourceOutput(value) {
14
+ return value !== null &&
15
+ typeof value === 'object' &&
16
+ Object.hasOwn(value, 'projectedResources') &&
17
+ Object.hasOwn(value, 'runnerErrors');
18
+ }
19
+ function isWorkerPoolDisposeResourceOutput(value) {
20
+ return value !== null &&
21
+ typeof value === 'object' &&
22
+ Object.hasOwn(value, 'runnerErrors');
23
+ }
24
+ function resourceTaskChannel() {
25
+ const { port1, port2 } = new NodeMessageChannel();
26
+ return {
27
+ close() {
28
+ port2.close();
29
+ },
30
+ port: port1
31
+ };
32
+ }
33
+ function recordResourceRunnerErrors(runtime, errors) {
34
+ if (errors.length > 0) {
35
+ runtime.runState.recordRunnerErrors(errors);
36
+ runtime.terminalFailure.write(true);
37
+ }
38
+ }
39
+ function recordResourceLifecycleFailure(runtime, message, cause) {
40
+ if (runtime.terminalFailure.read()) {
41
+ return;
42
+ }
43
+ runtime.runState.recordRunnerError({
44
+ attributedTo: null,
45
+ attributedToWork: null,
46
+ cause,
47
+ diagnostics: [],
48
+ message,
49
+ subtype: 'runtime-policy'
50
+ });
51
+ }
52
+ export function createWorkerPoolBatchRunCommand(runtime, members) {
53
+ return {
54
+ ...createBatchRunCommand(runtime, members)
55
+ };
56
+ }
57
+ export function workerPoolWorkHasStarted(startedCases, work) {
58
+ return startedCases.has(workIdentityKey(work));
59
+ }
60
+ async function acquireRunResourceOutput(runtime, plan, work) {
61
+ const channel = resourceTaskChannel();
62
+ try {
63
+ return await runtime.pool.run({
64
+ assignedWork: work,
65
+ boundaryUseCounts: [],
66
+ command: createRunCommand(runtime, firstPlanUnit(plan)),
67
+ kind: 'acquire-run-resources',
68
+ lane: workerPoolRunResourceOwnerLane,
69
+ lifecycle: runtime.lifecycle,
70
+ port: channel.port
71
+ }, {
72
+ name: 'runTask',
73
+ signal: freshSignal(),
74
+ transferList: portTransferList(channel.port)
75
+ });
76
+ }
77
+ finally {
78
+ channel.close();
79
+ }
80
+ }
81
+ async function acquireRunResources(runtime, plan) {
82
+ const work = placementRunWork(plan);
83
+ const output = await acquireRunResourceOutput(runtime, plan, work);
84
+ if (!isWorkerPoolRunResourceOutput(output)) {
85
+ throw new Error('Worker-pool run resource task returned an invalid result.');
86
+ }
87
+ recordResourceRunnerErrors(runtime, output.runnerErrors);
88
+ return { projectedResources: output.projectedResources, runResourceOwner: true, runWork: work };
89
+ }
90
+ async function runDisposalTaskOutput(runtime, lane, kind) {
91
+ const channel = resourceTaskChannel();
92
+ try {
93
+ return await runtime.pool.run({
94
+ kind,
95
+ lane,
96
+ lifecycle: runtime.lifecycle,
97
+ port: channel.port
98
+ }, {
99
+ name: 'runTask',
100
+ signal: freshSignal(),
101
+ transferList: portTransferList(channel.port)
102
+ });
103
+ }
104
+ finally {
105
+ channel.close();
106
+ }
107
+ }
108
+ async function runDisposalTask(runtime, lane, kind) {
109
+ const output = await runDisposalTaskOutput(runtime, lane, kind);
110
+ if (!isWorkerPoolDisposeResourceOutput(output)) {
111
+ throw new Error('Worker-pool resource disposal returned an invalid result.');
112
+ }
113
+ recordResourceRunnerErrors(runtime, output.runnerErrors);
114
+ }
115
+ async function disposeRunResources(runtime) {
116
+ try {
117
+ await runDisposalTask(runtime, workerPoolRunResourceOwnerLane, 'dispose-run-resources');
118
+ }
119
+ catch (error) {
120
+ recordResourceLifecycleFailure(runtime, 'Worker-pool run resource disposal failed.', error);
121
+ }
122
+ }
123
+ async function disposeLaneLifecycles(runtime, plan) {
124
+ await Promise.all(plan.lanes.map(async function disposeLane(lane) {
125
+ try {
126
+ await runDisposalTask(runtime, lane.id, 'dispose-lane-lifecycle');
127
+ }
128
+ catch (error) {
129
+ recordResourceLifecycleFailure(runtime, 'Worker-pool lane resource disposal failed.', error);
130
+ }
131
+ }));
132
+ }
133
+ export function collectedPlanNeedsLaneResourceLifecycle(runtime) {
134
+ return runtime.collectedPlan.files.some(function fileHasLaneResource(file) {
135
+ return file.cases.some(function caseHasLaneResource(testCase) {
136
+ return testCase.resourceAttachments.resourceGraph.some(function isLaneResource(resource) {
137
+ return resource.scope !== 'per-run';
138
+ });
139
+ });
140
+ });
141
+ }
142
+ export async function acquireWorkerPoolResourceLifecycle(runtime, placementPlan) {
143
+ return collectedPlanNeedsRunResourceOwner(runtime.resolvedRun)
144
+ ? await acquireRunResources(runtime, placementPlan)
145
+ : { projectedResources: { resources: [] }, runResourceOwner: false, runWork: placementRunWork(placementPlan) };
146
+ }
147
+ export async function disposeWorkerPoolResourceLifecycles(runtime, placementPlan, resourceLifecycle) {
148
+ if (!runtime.terminalFailure.read() && collectedPlanNeedsLaneResourceLifecycle(runtime)) {
149
+ await disposeLaneLifecycles(runtime, placementPlan);
150
+ }
151
+ if (resourceLifecycle.runResourceOwner) {
152
+ await disposeRunResources(runtime);
153
+ }
154
+ }
155
+ //# sourceMappingURL=worker-pool-resource-lifecycle-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool-resource-lifecycle-execution.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-resource-lifecycle-execution.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createResourceUsageFromSamples } from "./resource-usage.js";
2
+ import { isWorkerPoolTaskKind } from "./worker-pool-task-validation.js";
2
3
  function routeForLifecycle(routes, workerLifecycle) {
3
4
  const route = routes.find(function hasWorkerLifecycle(candidate) {
4
5
  return candidate.workerLifecycle === workerLifecycle;
@@ -20,20 +21,22 @@ function routeForLane(routes, lane) {
20
21
  function isWorkerPoolTask(value) {
21
22
  return typeof value === 'object' &&
22
23
  value !== null &&
23
- Object.hasOwn(value, 'command') &&
24
- (Reflect.get(value, 'kind') === 'collect' || Reflect.get(value, 'kind') === 'run');
24
+ isWorkerPoolTaskKind(Reflect.get(value, 'kind'));
25
25
  }
26
26
  function taskWorkerLifecycle(task) {
27
27
  if (!isWorkerPoolTask(task)) {
28
28
  throw new Error('Worker-pool received an invalid task.');
29
29
  }
30
+ if (task.kind === 'dispose-lane-lifecycle' || task.kind === 'dispose-run-resources') {
31
+ return 'reuse';
32
+ }
30
33
  return task.command.workerLifecycle;
31
34
  }
32
35
  function taskLane(task) {
33
36
  if (!isWorkerPoolTask(task)) {
34
37
  throw new Error('Worker-pool received an invalid task.');
35
38
  }
36
- return task.kind === 'run' ? task.lane : null;
39
+ return task.kind === 'collect' ? null : task.lane;
37
40
  }
38
41
  function routeForTask(routes, task) {
39
42
  const lane = taskLane(task);
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool-routing.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-pool-routing.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-routing.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,20 @@ import { executeWorkerPoolUnits } from "./worker-pool-execution.js";
4
4
  import { reportRunStart, startPoolResourceTracking } from "./worker-pool-resource-tracking.js";
5
5
  import { createEmptyWorkerPoolResult, finishWorkerPoolRun } from "./worker-pool-results.js";
6
6
  import { createWorkerPoolRuntime, workerPoolPlacementPlan } from "./worker-pool-runtime.js";
7
- export async function collectWorkerPoolRun(command, dependencies) {
8
- return await collectInWorkerPool(command, dependencies, createSupervisedRunState());
7
+ const emptyWorkerPoolTimingMetadata = Object.freeze({
8
+ label: null,
9
+ processId: null,
10
+ resource: null,
11
+ workerId: null
12
+ });
13
+ export async function collectWorkerPoolRun(command, dependencies, timing = null) {
14
+ return await collectInWorkerPool({
15
+ command,
16
+ createdPool: null,
17
+ dependencies,
18
+ runState: createSupervisedRunState(),
19
+ timing
20
+ });
9
21
  }
10
22
  async function releaseRuntimePool(runtime) {
11
23
  runtime.pool.setHostOutputSink?.(null);
@@ -13,16 +25,23 @@ async function releaseRuntimePool(runtime) {
13
25
  await runtime.pool.destroy();
14
26
  }
15
27
  }
28
+ async function releaseTimedRuntimePool(runtime, timing) {
29
+ if (runtime.destroyPool) {
30
+ await (timing?.measureAsync('worker-pool.shutdown', emptyWorkerPoolTimingMetadata, async function releaseTimedWorkerPoolRuntime() {
31
+ await releaseRuntimePool(runtime);
32
+ }) ?? releaseRuntimePool(runtime));
33
+ }
34
+ else {
35
+ await releaseRuntimePool(runtime);
36
+ }
37
+ }
16
38
  async function finishExecution(runtime, resolvedRun, startedAtMilliseconds, startedAtMicroseconds) {
17
39
  await reportRunStart(runtime, startedAtMilliseconds);
18
40
  await startPoolResourceTracking(runtime);
19
41
  return await finishWorkerPoolRun(runtime, await executeWorkerPoolUnits(runtime, workerPoolPlacementPlan(resolvedRun), startedAtMilliseconds), startedAtMicroseconds);
20
42
  }
21
- async function executeWorkerPoolRunWithState(resolvedRun, dependencies, state) {
22
- if (workerPoolPlacementPlan(resolvedRun).units.length === 0) {
23
- return await createEmptyWorkerPoolResult(resolvedRun, dependencies, state.collectionRunState);
24
- }
25
- const runtime = await createWorkerPoolRuntime({
43
+ async function createRuntime(resolvedRun, dependencies, state) {
44
+ return await createWorkerPoolRuntime({
26
45
  collectionRunnerErrors: resolvedRun.collectionRunnerErrors,
27
46
  createdPool: state.createdPool,
28
47
  dependencies,
@@ -30,15 +49,33 @@ async function executeWorkerPoolRunWithState(resolvedRun, dependencies, state) {
30
49
  return await state.finalizeResult(resolvedRun, result);
31
50
  },
32
51
  resolvedRun,
33
- runState: state.collectionRunState
52
+ runState: state.collectionRunState,
53
+ timing: state.timing
34
54
  });
55
+ }
56
+ async function finishExecutionWithRuntime(resolvedRun, dependencies, state, runtime) {
35
57
  const startedAtMilliseconds = dependencies.wallClock.currentEpochMilliseconds;
36
58
  const startedAtMicroseconds = dependencies.wallClock.currentMonotonicMicroseconds;
59
+ const readyAtMicroseconds = dependencies.wallClock.currentMonotonicMicroseconds;
60
+ state.timing?.record({
61
+ completedAtMicroseconds: readyAtMicroseconds,
62
+ kind: 'worker-pool.ready',
63
+ metadata: emptyWorkerPoolTimingMetadata,
64
+ startedAtMicroseconds: readyAtMicroseconds,
65
+ status: 'success'
66
+ });
67
+ return await finishExecution(runtime, resolvedRun, startedAtMilliseconds, startedAtMicroseconds);
68
+ }
69
+ async function executeWorkerPoolRunWithState(resolvedRun, dependencies, state) {
70
+ if (workerPoolPlacementPlan(resolvedRun).units.length === 0) {
71
+ return await createEmptyWorkerPoolResult(resolvedRun, dependencies, state.collectionRunState);
72
+ }
73
+ const runtime = await createRuntime(resolvedRun, dependencies, state);
37
74
  try {
38
- return await finishExecution(runtime, resolvedRun, startedAtMilliseconds, startedAtMicroseconds);
75
+ return await finishExecutionWithRuntime(resolvedRun, dependencies, state, runtime);
39
76
  }
40
77
  finally {
41
- await releaseRuntimePool(runtime);
78
+ await releaseTimedRuntimePool(runtime, state.timing);
42
79
  }
43
80
  }
44
81
  export async function executeWorkerPoolRun(resolvedRun, dependencies, options) {
@@ -48,19 +85,37 @@ export async function executeWorkerPoolRun(resolvedRun, dependencies, options) {
48
85
  createdPool: null
49
86
  });
50
87
  }
88
+ async function destroyCommandPool(pool, timing) {
89
+ if (pool !== null) {
90
+ await (timing?.measureAsync('worker-pool.shutdown', emptyWorkerPoolTimingMetadata, async function destroyTimedCollectionWorkerPool() {
91
+ await pool.destroy();
92
+ }) ?? pool.destroy());
93
+ }
94
+ }
51
95
  export async function runWorkerPoolCommand(command, dependencies, createResolvedRun, options) {
52
96
  const collectionRunState = createSupervisedRunState();
97
+ const timingOption = options.timing === null ? {} : { timing: options.timing };
98
+ const poolOptions = {
99
+ cwd: command.cwd,
100
+ hostProcess: command.hostProcess,
101
+ testFamily: command.testFamily,
102
+ ...timingOption,
103
+ workerCount: 1,
104
+ workerLifecycle: command.workerLifecycle
105
+ };
53
106
  const pool = command.hostProcess.kind === 'child'
54
- ? dependencies.createWorkerPool({
55
- cwd: command.cwd,
56
- hostProcess: command.hostProcess,
57
- testFamily: command.testFamily,
58
- workerCount: dependencies.availableParallelism,
59
- workerLifecycle: command.workerLifecycle
60
- })
107
+ ? options.timing?.measure('worker-pool.start', emptyWorkerPoolTimingMetadata, function createTimedHostedWorkerPool() {
108
+ return dependencies.createWorkerPool(poolOptions);
109
+ }) ?? dependencies.createWorkerPool(poolOptions)
61
110
  : null;
62
111
  try {
63
- const collection = await collectInWorkerPool(command, dependencies, collectionRunState, pool);
112
+ const collection = await collectInWorkerPool({
113
+ command,
114
+ createdPool: pool,
115
+ dependencies,
116
+ runState: collectionRunState,
117
+ timing: options.timing
118
+ });
64
119
  return await executeWorkerPoolRunWithState(await createResolvedRun(collection), dependencies, {
65
120
  ...options,
66
121
  collectionRunState,
@@ -68,7 +123,7 @@ export async function runWorkerPoolCommand(command, dependencies, createResolved
68
123
  });
69
124
  }
70
125
  finally {
71
- await pool?.destroy();
126
+ await destroyCommandPool(pool, options.timing);
72
127
  }
73
128
  }
74
129
  //# sourceMappingURL=worker-pool-run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool-run.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-pool-run.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-run.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ import { createStoredRunValue } from "./supervised-run-state.js";
3
3
  import { loadTinypoolConstructor } from "./tinypool-node-compatibility.js";
4
4
  import { runTask as workerPoolWorkerEntryPoint } from "./worker-pool-worker.js";
5
5
  import { createRoutedPool } from "./worker-pool-routing.js";
6
+ import { emptyTimingSpanMetadata } from "./run-timing-collection.js";
6
7
  const Tinypool = loadTinypoolConstructor();
8
+ const workerPoolRunResourceOwnerLane = 'run-resource-owner';
7
9
  function workerPoolEntryPointHref(worker) {
8
10
  const entryPointWorkerName = worker.name;
9
11
  const workerPoolEntryPointUrl = new URL('./worker-pool-worker.ts', import.meta.url);
@@ -81,28 +83,94 @@ function placementLaneLifecycles(plan) {
81
83
  });
82
84
  return laneLifecycles;
83
85
  }
84
- function workerPoolOptions(resolvedRun, execution, workerCount, workerLifecycle) {
86
+ function workerPoolOptions(input) {
87
+ const timingOption = input.timing === null ? {} : { timing: input.timing };
85
88
  return {
86
- cwd: resolvedRun.cwd,
87
- hostProcess: copiedHostProcess(execution),
88
- testFamily: execution.testFamily,
89
- workerCount,
90
- workerLifecycle
89
+ cwd: input.resolvedRun.cwd,
90
+ hostProcess: copiedHostProcess(input.execution),
91
+ testFamily: input.execution.testFamily,
92
+ ...timingOption,
93
+ workerCount: input.workerCount,
94
+ workerLifecycle: input.workerLifecycle
91
95
  };
92
96
  }
93
97
  function createEmptyExecutionPool(input, execution) {
94
98
  return {
95
99
  destroyPool: input.createdPool === null,
96
- pool: input.createdPool ?? input.dependencies.createWorkerPool(workerPoolOptions(input.resolvedRun, execution, 0, execution.workerLifecycle))
100
+ pool: input.createdPool ?? input.timing?.measure('worker-pool.start', emptyTimingSpanMetadata(), function createTimedEmptyWorkerPool() {
101
+ return input.dependencies.createWorkerPool(workerPoolOptions({
102
+ execution,
103
+ resolvedRun: input.resolvedRun,
104
+ timing: input.timing ?? null,
105
+ workerCount: 0,
106
+ workerLifecycle: execution.workerLifecycle
107
+ }));
108
+ }) ?? input.dependencies.createWorkerPool(workerPoolOptions({
109
+ execution,
110
+ resolvedRun: input.resolvedRun,
111
+ timing: input.timing ?? null,
112
+ workerCount: 0,
113
+ workerLifecycle: execution.workerLifecycle
114
+ }))
97
115
  };
98
116
  }
117
+ function createExecutionWorkerPool(input, execution, workerCount, workerLifecycle) {
118
+ const options = workerPoolOptions({
119
+ execution,
120
+ resolvedRun: input.resolvedRun,
121
+ timing: input.timing ?? null,
122
+ workerCount,
123
+ workerLifecycle
124
+ });
125
+ return input.timing?.measure('worker-pool.start', emptyTimingSpanMetadata(), function createTimedWorkerPool() {
126
+ return input.dependencies.createWorkerPool(options);
127
+ }) ?? input.dependencies.createWorkerPool(options);
128
+ }
129
+ export function workerPoolCollectedPlan(resolvedRun) {
130
+ if (resolvedRun.plan.kind !== 'worker-pool') {
131
+ throw new Error('Worker-pool execution requires a worker-pool collected plan.');
132
+ }
133
+ return resolvedRun.plan.collectedPlan;
134
+ }
135
+ export function collectedPlanNeedsRunResourceOwner(resolvedRun) {
136
+ return workerPoolCollectedPlan(resolvedRun).files.some(function fileHasRunResource(file) {
137
+ return file.cases.some(function caseHasRunResource(testCase) {
138
+ return testCase.resourceAttachments.resourceGraph.some(function isRunResource(resource) {
139
+ return resource.scope === 'per-run';
140
+ });
141
+ });
142
+ });
143
+ }
144
+ function runResourceOwnerRoutes(input, execution, needsRunResourceOwner) {
145
+ if (!needsRunResourceOwner) {
146
+ return [];
147
+ }
148
+ return [
149
+ {
150
+ lane: workerPoolRunResourceOwnerLane,
151
+ pool: createExecutionWorkerPool(input, execution, 1, 'reuse'),
152
+ workerLifecycle: 'reuse'
153
+ }
154
+ ];
155
+ }
156
+ function shareableSingleLaneLifecycle(placementPlan, laneLifecycles, needsRunResourceOwner) {
157
+ const [lane] = placementPlan.lanes;
158
+ if (placementPlan.lanes.length !== 1 || lane === undefined) {
159
+ return null;
160
+ }
161
+ const workerLifecycle = laneLifecycles.get(lane.id);
162
+ return workerLifecycle !== undefined && (!needsRunResourceOwner || workerLifecycle === 'reuse')
163
+ ? workerLifecycle
164
+ : null;
165
+ }
99
166
  function createLaneExecutionPool(input, execution, placementPlan) {
100
167
  const laneLifecycles = placementLaneLifecycles(placementPlan);
101
- const singleLane = placementPlan.lanes[0];
102
- if (input.createdPool !== null && placementPlan.lanes.length === 1 && singleLane !== undefined) {
168
+ const needsRunResourceOwner = collectedPlanNeedsRunResourceOwner(input.resolvedRun);
169
+ const singleLaneLifecycle = shareableSingleLaneLifecycle(placementPlan, laneLifecycles, needsRunResourceOwner);
170
+ if (singleLaneLifecycle !== null) {
103
171
  return {
104
- destroyPool: false,
105
- pool: input.createdPool
172
+ destroyPool: input.createdPool === null,
173
+ pool: input.createdPool ?? createExecutionWorkerPool(input, execution, 1, singleLaneLifecycle)
106
174
  };
107
175
  }
108
176
  const routes = placementPlan.lanes.map(function toRoute(lane) {
@@ -111,14 +179,15 @@ function createLaneExecutionPool(input, execution, placementPlan) {
111
179
  throw new Error('Placement lane has no assigned worker lifecycle.');
112
180
  }
113
181
  return {
114
- pool: input.dependencies.createWorkerPool(workerPoolOptions(input.resolvedRun, execution, 1, workerLifecycle)),
115
182
  lane: lane.id,
183
+ pool: createExecutionWorkerPool(input, execution, 1, workerLifecycle),
116
184
  workerLifecycle
117
185
  };
118
186
  });
187
+ const ownerRoutes = runResourceOwnerRoutes(input, execution, needsRunResourceOwner);
119
188
  return {
120
189
  destroyPool: true,
121
- pool: createRoutedPool(routes)
190
+ pool: createRoutedPool([...routes, ...ownerRoutes])
122
191
  };
123
192
  }
124
193
  function createExecutionPool(input, placementPlan) {
@@ -128,12 +197,6 @@ function createExecutionPool(input, placementPlan) {
128
197
  }
129
198
  return createLaneExecutionPool(input, execution, placementPlan);
130
199
  }
131
- export function workerPoolCollectedPlan(resolvedRun) {
132
- if (resolvedRun.plan.kind !== 'worker-pool') {
133
- throw new Error('Worker-pool execution requires a worker-pool collected plan.');
134
- }
135
- return resolvedRun.plan.collectedPlan;
136
- }
137
200
  function createPoolResourceUsageTracker(pool, resolvedRun, dependencies) {
138
201
  if (!resolvedRun.facts.execution.resourceUsagePolicy.measure) {
139
202
  return null;
@@ -188,7 +251,11 @@ export async function createWorkerPoolRuntime(input) {
188
251
  resolvedRun,
189
252
  runState,
190
253
  taskResults,
191
- terminalFailure: createStoredRunValue(false)
254
+ terminalFailure: createStoredRunValue(false),
255
+ timing: input.timing ?? null,
256
+ lifecycle: {
257
+ token: dependencies.createSeed().toString()
258
+ }
192
259
  };
193
260
  }
194
261
  //# sourceMappingURL=worker-pool-runtime.js.map