@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
@@ -0,0 +1,85 @@
1
+ import { isResourceStartupTimeoutError } from "./resource-lifecycle-startup-budget.js";
2
+ function timingKind(phase) {
3
+ return phase === 'acquire' ? 'resource.acquire' : 'resource.dispose';
4
+ }
5
+ function failedTimingStatus(error, operation) {
6
+ if (isResourceStartupTimeoutError(error)) {
7
+ return 'timeout';
8
+ }
9
+ return operation.signal.aborted ? 'cancelled' : 'failure';
10
+ }
11
+ function nonNegativeMicroseconds(value) {
12
+ return Math.max(0, Math.trunc(value));
13
+ }
14
+ function writeResourceTiming(options, completed) {
15
+ const metadata = {
16
+ label: null,
17
+ processId: options.processId,
18
+ resource: completed.operation.resource,
19
+ workerId: options.workerId
20
+ };
21
+ if (options.target.kind === 'parent') {
22
+ options.target.record({
23
+ completedAtMicroseconds: completed.completedAtMicroseconds,
24
+ kind: timingKind(completed.operation.phase),
25
+ metadata,
26
+ startedAtMicroseconds: completed.startedAtMicroseconds,
27
+ status: completed.status
28
+ });
29
+ }
30
+ else {
31
+ options.target.emit({
32
+ durationMicroseconds: nonNegativeMicroseconds(completed.completedAtMicroseconds - completed.startedAtMicroseconds),
33
+ kind: timingKind(completed.operation.phase),
34
+ ...metadata,
35
+ startOffsetMicroseconds: null,
36
+ status: completed.status
37
+ });
38
+ }
39
+ }
40
+ function recordResourceTiming(options, completed) {
41
+ try {
42
+ writeResourceTiming(options, completed);
43
+ }
44
+ catch {
45
+ }
46
+ }
47
+ function currentTime(clock) {
48
+ try {
49
+ return clock.currentMonotonicMicroseconds;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ function finishResourceTiming(options, operation, startedAtMicroseconds, status) {
56
+ const completedAtMicroseconds = currentTime(options.clock);
57
+ if (startedAtMicroseconds !== null && completedAtMicroseconds !== null) {
58
+ recordResourceTiming(options, {
59
+ completedAtMicroseconds,
60
+ operation,
61
+ startedAtMicroseconds,
62
+ status
63
+ });
64
+ }
65
+ }
66
+ async function measureResourceLifecycle(options, operation, work) {
67
+ const startedAtMicroseconds = currentTime(options.clock);
68
+ try {
69
+ const value = await work();
70
+ finishResourceTiming(options, operation, startedAtMicroseconds, 'success');
71
+ return value;
72
+ }
73
+ catch (error) {
74
+ finishResourceTiming(options, operation, startedAtMicroseconds, failedTimingStatus(error, operation));
75
+ throw error;
76
+ }
77
+ }
78
+ export function createResourceLifecycleTiming(options) {
79
+ return {
80
+ async measure(operation, work) {
81
+ return await measureResourceLifecycle(options, operation, work);
82
+ }
83
+ };
84
+ }
85
+ //# sourceMappingURL=resource-lifecycle-timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-lifecycle-timing.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-timing.ts"],"names":[],"mappings":"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"}
@@ -1,74 +1,10 @@
1
- import { workIdentityKey } from "../engine/identity.js";
2
- import { assertResourceDependencyScopes, callableResourceDefinition, createResourceGraph, resourceEntries } from "../resources/resource-graph.js";
3
- import { combinedResourceEntries, composedResourceSession, directResourceEntries, resourceMapFromEntries, stepRuntimeGraphs } from "./resource-lifecycle-composition.js";
1
+ import { assertResourceDependencyScopes, callableResourceDefinition, createResourceGraph } from "../resources/resource-graph.js";
2
+ import { combinedResourceEntries, composedResourceSession, directResourceEntries, lifecycleScenarioBindings, resourceMapFromEntries, stepRuntimeGraphs } from "./resource-lifecycle-composition.js";
4
3
  import { currentLifecycleCase, runWithLifecycleCase, runWithManagedLifecycle } from "./resource-lifecycle-state.js";
5
4
  import { resourceWrapperErrorFromUnknown, resourceWrapperLifecycleError } from "./resource-lifecycle-error.js";
6
5
  import { managedResourceSession } from "./resource-lifecycle-managed-session.js";
7
- const resourceScopes = new Set([
8
- 'per-case',
9
- 'per-file',
10
- 'per-run',
11
- 'per-suite',
12
- 'shared-per-worker'
13
- ]);
14
- function isResourceScope(scope) {
15
- return resourceScopes.has(scope);
16
- }
17
- function isProjectionScalar(value) {
18
- return value === null ||
19
- typeof value === 'string' ||
20
- typeof value === 'boolean' ||
21
- typeof value === 'number' && Number.isFinite(value);
22
- }
23
- function isProjectionObject(value) {
24
- return typeof value === 'object' && value !== null && !Array.isArray(value);
25
- }
26
- function isProjectionPayload(value) {
27
- if (isProjectionScalar(value)) {
28
- return true;
29
- }
30
- if (Array.isArray(value)) {
31
- return value.every(isProjectionPayload);
32
- }
33
- return isProjectionObject(value) &&
34
- Object.values(value).every(isProjectionPayload);
35
- }
36
- function resourceHasProjection(resource) {
37
- return typeof resource.serializeHandle === 'function' &&
38
- typeof resource.deserializeHandle === 'function';
39
- }
40
- function projectedHandle(resource, ownerHandle, dependencyContext) {
41
- if (!resourceHasProjection(resource)) {
42
- return ownerHandle;
43
- }
44
- const context = { dependencies: dependencyContext };
45
- const payload = resource.serializeHandle(ownerHandle, context);
46
- if (!isProjectionPayload(payload)) {
47
- throw resourceWrapperLifecycleError(`Resource "${resource.name}" returned a non-JSON projection payload.`, payload);
48
- }
49
- return resource.deserializeHandle(payload, context);
50
- }
51
- function suiteBoundary(testCase) {
52
- return JSON.stringify(testCase.id.suite);
53
- }
54
- function resourceBoundaryForCase(resourceName, scope, testCase) {
55
- return scope === 'shared-per-worker'
56
- ? { key: `worker:${resourceName}`, scope }
57
- : { key: `case:${workIdentityKey(testCase.workId)}:${resourceName}`, scope };
58
- }
59
- function resourceBoundary(resourceName, scope, testCase) {
60
- const file = testCase.id.file ?? '<no-file>';
61
- if (scope === 'per-run') {
62
- return { key: `run:${resourceName}`, scope };
63
- }
64
- if (scope === 'per-file') {
65
- return { key: `file:${file}:${resourceName}`, scope };
66
- }
67
- if (scope === 'per-suite') {
68
- return { key: `suite:${file}:${suiteBoundary(testCase)}:${resourceName}`, scope };
69
- }
70
- return resourceBoundaryForCase(resourceName, scope, testCase);
71
- }
6
+ import { caseResourceBoundaryKeys, resourceLifecycleBoundaryUseCounts, resourceScopes } from "./resource-lifecycle-boundaries.js";
7
+ import { createManagedResourceAcquirer, createManagedStores, resourceProjectionRecordsFromStores, managedResourceHandle } from "./resource-lifecycle-session-acquirer.js";
72
8
  function currentRunningCase() {
73
9
  const testCase = currentLifecycleCase();
74
10
  if (testCase === null) {
@@ -76,172 +12,60 @@ function currentRunningCase() {
76
12
  }
77
13
  return testCase;
78
14
  }
79
- function caseResourceBoundaries(testCase) {
80
- return Array.from(new Set(testCase.resourceAttachments.resourceGraph.flatMap(function toBoundary(resource) {
81
- return isResourceScope(resource.scope)
82
- ? [resourceBoundary(resource.name, resource.scope, testCase).key]
83
- : [];
84
- })));
85
- }
86
- function initialBoundaryUseCounts(testCases) {
87
- const counts = new Map();
88
- for (const testCase of testCases) {
89
- for (const boundary of caseResourceBoundaries(testCase)) {
90
- counts.set(boundary, (counts.get(boundary) ?? 0) + 1);
91
- }
92
- }
93
- return counts;
94
- }
95
- function caseKey(testCase) {
96
- return workIdentityKey(testCase.workId);
97
- }
98
- function mutableDependencyContext() {
99
- return {};
100
- }
101
- function createManagedStores(testCases) {
102
- const acquisitions = new Map();
103
- const boundaryUseCounts = new Map(initialBoundaryUseCounts(testCases));
104
- const errorsByCase = new Map();
105
- const records = new Map();
106
- const runErrors = [];
15
+ function defaultLifecycleOptions(testCases, timing) {
107
16
  return {
108
- deleteAcquisition(boundaryKey) {
109
- acquisitions.delete(boundaryKey);
110
- },
111
- deleteRecord(boundaryKey) {
112
- records.delete(boundaryKey);
113
- },
114
- async existingAcquisition(boundaryKey) {
115
- return await (acquisitions.get(boundaryKey) ?? Promise.resolve(null));
116
- },
117
- existingRecord(boundaryKey) {
118
- return records.get(boundaryKey);
119
- },
120
- recordCaseError(testCase, message, cause) {
121
- const key = caseKey(testCase);
122
- const errors = errorsByCase.get(key) ?? [];
123
- errors.push(resourceWrapperLifecycleError(message, cause).runnerError(testCase.id, testCase.workId));
124
- errorsByCase.set(key, errors);
125
- },
126
- remainingBoundaryUses(boundaryKey) {
127
- const remaining = (boundaryUseCounts.get(boundaryKey) ?? 0) - 1;
128
- boundaryUseCounts.set(boundaryKey, remaining);
129
- return remaining;
130
- },
131
- rememberAcquisition(boundaryKey, acquisition) {
132
- acquisitions.set(boundaryKey, acquisition);
133
- },
134
- rememberRecord(boundaryKey, record) {
135
- records.set(boundaryKey, record);
136
- },
137
- takeCaseErrors(testCase) {
138
- const key = caseKey(testCase);
139
- const errors = errorsByCase.get(key) ?? [];
140
- errorsByCase.delete(key);
141
- return errors;
142
- },
143
- takePendingRunErrors() {
144
- const errors = Array.from(runErrors);
145
- runErrors.length = 0;
146
- return errors;
147
- },
148
- takeRunErrors() {
149
- const errors = Array.from(runErrors);
150
- runErrors.length = 0;
151
- return errors;
152
- }
17
+ boundaryUseCounts: resourceLifecycleBoundaryUseCounts(testCases),
18
+ caseDisposalScopes: new Set(resourceScopes),
19
+ projectedResources: { resources: [] },
20
+ timing
153
21
  };
154
22
  }
155
- function boundaryFor(resource, testCase) {
156
- return resourceBoundary(resource.name, resource.scope, testCase);
157
- }
158
- function assertCompatibleResource(stores, boundary, resource) {
159
- const record = stores.existingRecord(boundary.key);
160
- if (record !== undefined && record.descriptor !== resource) {
161
- throw resourceWrapperLifecycleError(`Resource name "${resource.name}" is used by multiple descriptors in one lifecycle boundary.`, resource);
162
- }
163
- }
164
- function createManagedResourceAcquirer(stores) {
165
- let acquireResource = async function acquireBeforeReady() {
166
- throw resourceWrapperLifecycleError('Resource lifecycle is not ready.', null);
167
- };
168
- async function acquireDependencyContext(resource, testCase, signal) {
169
- const context = mutableDependencyContext();
170
- await Promise.all(resourceEntries(resource.dependencies).map(async function acquireDependency([key, dependency]) {
171
- const record = await acquireResource(dependency, testCase, signal);
172
- context[key] = record.exposedHandle;
173
- }));
174
- return Object.freeze(context);
23
+ async function disposeResourceRecord(record, signal, timing) {
24
+ const { dispose } = callableResourceDefinition(record.descriptor);
25
+ if (record.external || dispose === null) {
26
+ return;
175
27
  }
176
- async function startResource(resource, boundary, testCase, signal) {
177
- const dependencyContext = await acquireDependencyContext(resource, testCase, signal);
178
- const ownerHandle = await callableResourceDefinition(resource).acquire({
179
- dependencies: dependencyContext,
28
+ const disposeHandle = async function disposeResourceHandle() {
29
+ await dispose(record.ownerHandle, {
30
+ dependencies: record.dependencyContext,
31
+ scenarios: lifecycleScenarioBindings(record.descriptor),
180
32
  signal
181
33
  });
182
- const record = {
183
- boundary,
184
- dependencyContext,
185
- descriptor: resource,
186
- exposedHandle: projectedHandle(resource, ownerHandle, dependencyContext),
187
- ownerHandle
188
- };
189
- stores.rememberRecord(boundary.key, record);
190
- return record;
191
- }
192
- async function acquireNewResource(resource, boundary, testCase, signal) {
193
- const acquisition = startResource(resource, boundary, testCase, signal);
194
- stores.rememberAcquisition(boundary.key, acquisition);
195
- try {
196
- return await acquisition;
197
- }
198
- catch (error) {
199
- stores.deleteAcquisition(boundary.key);
200
- throw error;
201
- }
34
+ };
35
+ if (timing === null) {
36
+ await disposeHandle();
202
37
  }
203
- async function acquire(resource, testCase, signal) {
204
- const boundary = boundaryFor(resource, testCase);
205
- const existingRecord = stores.existingRecord(boundary.key);
206
- assertCompatibleResource(stores, boundary, resource);
207
- if (existingRecord !== undefined) {
208
- return existingRecord;
209
- }
210
- const existingAcquisition = await stores.existingAcquisition(boundary.key);
211
- return existingAcquisition ?? await acquireNewResource(resource, boundary, testCase, signal);
38
+ else {
39
+ await timing.measure({
40
+ phase: 'dispose',
41
+ resource: { name: record.descriptor.name, scope: record.descriptor.scope },
42
+ signal
43
+ }, disposeHandle);
212
44
  }
213
- acquireResource = acquire;
214
- return { acquire };
215
45
  }
216
- async function disposeBoundary(stores, boundaryKey, signal) {
46
+ async function disposeBoundary(stores, boundaryKey, signal, timing) {
217
47
  const record = stores.existingRecord(boundaryKey);
218
48
  if (record === undefined) {
219
49
  return;
220
50
  }
221
- const { dispose } = callableResourceDefinition(record.descriptor);
222
51
  stores.deleteRecord(boundaryKey);
223
52
  stores.deleteAcquisition(boundaryKey);
224
- if (dispose !== null) {
225
- await dispose(record.ownerHandle, {
226
- dependencies: record.dependencyContext,
227
- signal
228
- });
229
- }
53
+ await disposeResourceRecord(record, signal, timing);
230
54
  }
231
55
  function freshDisposalSignal() {
232
56
  const controller = new AbortController();
233
57
  return controller.signal;
234
58
  }
235
- async function disposeCompletedBoundary(stores, boundary) {
59
+ async function disposeCompletedBoundary(stores, boundary, timing) {
236
60
  const remaining = stores.remainingBoundaryUses(boundary);
237
61
  if (remaining <= 0) {
238
- await disposeBoundary(stores, boundary, freshDisposalSignal());
62
+ await disposeBoundary(stores, boundary, freshDisposalSignal(), timing);
239
63
  }
240
64
  }
241
- async function disposeCompletedBoundaries(stores, testCase) {
242
- for (const boundary of caseResourceBoundaries(testCase)) {
65
+ async function disposeCompletedBoundaries(stores, options, testCase) {
66
+ for (const boundary of caseResourceBoundaryKeys(testCase, options.caseDisposalScopes)) {
243
67
  try {
244
- await disposeCompletedBoundary(stores, boundary);
68
+ await disposeCompletedBoundary(stores, boundary, options.timing);
245
69
  }
246
70
  catch (error) {
247
71
  stores.recordCaseError(testCase, 'Resource disposal failed.', error);
@@ -257,57 +81,96 @@ async function managedResourceHandles(acquirer, graph, testCase, signal) {
257
81
  const handles = new Map();
258
82
  for (const node of graph.order) {
259
83
  const record = await acquirer.acquire(node.descriptor, testCase, signal);
260
- handles.set(node.descriptor, record.exposedHandle);
84
+ handles.set(node.descriptor, managedResourceHandle(record, node.descriptor));
261
85
  }
262
86
  return handles;
263
87
  }
264
- async function acquireComposedResourcesWithLifecycle(stores, steps, signal) {
88
+ async function acquireComposedResourcesWithLifecycle(stores, options, steps, signal) {
265
89
  const testCase = currentRunningCase();
266
90
  const directResources = resourceMapFromEntries(directResourceEntries(steps));
267
91
  const runtimes = stepRuntimeGraphs(steps);
268
92
  const combinedResources = combinedResourceEntries(steps, testCase.workId);
269
93
  const graph = createResourceGraph(combinedResources);
270
- const acquirer = createManagedResourceAcquirer(stores);
94
+ const acquirer = createManagedResourceAcquirer(stores, options);
271
95
  assertResourceDependencyScopes(combinedResources);
272
96
  await acquireTopLevelResources(acquirer, graph, testCase, signal);
273
97
  const handles = await managedResourceHandles(acquirer, graph, testCase, signal);
274
98
  return composedResourceSession(directResources, runtimes, managedResourceSession(combinedResources, handles), testCase.workId);
275
99
  }
276
- async function acquireManagedComposedResources(stores, steps, signal, messages) {
100
+ async function acquireManagedComposedResources(request) {
277
101
  try {
278
- return await acquireComposedResourcesWithLifecycle(stores, steps, signal);
102
+ return await acquireComposedResourcesWithLifecycle(request.stores, request.options, request.steps, request.signal);
279
103
  }
280
104
  catch (error) {
281
- throw resourceWrapperErrorFromUnknown(messages.acquisitionFailure, error);
105
+ throw resourceWrapperErrorFromUnknown(request.messages.acquisitionFailure, error);
106
+ }
107
+ }
108
+ async function acquireManagedResourceScopes(request) {
109
+ const combinedResources = combinedResourceEntries(request.steps, request.testCase.workId);
110
+ const graph = createResourceGraph(combinedResources);
111
+ const acquirer = createManagedResourceAcquirer(request.stores, request.options);
112
+ assertResourceDependencyScopes(combinedResources);
113
+ for (const node of graph.order) {
114
+ if (request.scopes.has(node.descriptor.scope)) {
115
+ await acquirer.acquire(node.descriptor, request.testCase, request.signal);
116
+ }
117
+ }
118
+ }
119
+ async function disposeAllManagedResources(stores, signal, timing) {
120
+ const errors = [];
121
+ for (const record of stores.records().toReversed()) {
122
+ try {
123
+ await disposeBoundary(stores, record.boundary.key, signal, timing);
124
+ }
125
+ catch (error) {
126
+ errors.push({
127
+ attributedTo: null,
128
+ attributedToWork: null,
129
+ cause: error,
130
+ diagnostics: [],
131
+ message: 'Resource disposal failed.',
132
+ subtype: 'runtime-policy'
133
+ });
134
+ }
282
135
  }
136
+ return errors;
283
137
  }
284
- function createManagedLifecycle(testCases) {
285
- const stores = createManagedStores(testCases);
138
+ function createManagedLifecycleState(options) {
139
+ const stores = createManagedStores(options);
140
+ const context = { options, stores };
286
141
  return {
287
- async acquireComposedResources(steps, signal, messages) {
288
- return await acquireManagedComposedResources(stores, steps, signal, messages);
289
- },
290
- async runCase(testCase, run) {
291
- try {
292
- return await runWithLifecycleCase(testCase, run);
293
- }
294
- finally {
295
- await disposeCompletedBoundaries(stores, testCase);
142
+ stores,
143
+ lifecycle: {
144
+ async acquireComposedResources(steps, signal, messages) {
145
+ return await acquireManagedComposedResources({ ...context, messages, signal, steps });
146
+ },
147
+ async acquireResourceScopes(steps, testCase, signal, scopes) {
148
+ await acquireManagedResourceScopes({ ...context, scopes, signal, steps, testCase });
149
+ },
150
+ async disposeAll(signal) {
151
+ return await disposeAllManagedResources(stores, signal, options.timing);
152
+ },
153
+ async runCase(testCase, run) {
154
+ try {
155
+ return await runWithLifecycleCase(testCase, run);
156
+ }
157
+ finally {
158
+ await disposeCompletedBoundaries(stores, options, testCase);
159
+ }
160
+ },
161
+ takeCaseErrors(testCase) {
162
+ return stores.takeCaseErrors(testCase);
163
+ },
164
+ takePendingRunErrors() {
165
+ return stores.takePendingRunErrors();
166
+ },
167
+ takeRunErrors() {
168
+ return stores.takeRunErrors();
296
169
  }
297
- },
298
- takeCaseErrors(testCase) {
299
- return stores.takeCaseErrors(testCase);
300
- },
301
- takePendingRunErrors() {
302
- return stores.takePendingRunErrors();
303
- },
304
- takeRunErrors() {
305
- return stores.takeRunErrors();
306
170
  }
307
171
  };
308
172
  }
309
- export function createResourceLifecycleRuntimePolicy(testCases) {
310
- const lifecycle = createManagedLifecycle(testCases);
173
+ function createRuntimePolicyFromLifecycle(lifecycle) {
311
174
  return {
312
175
  async runCase(testCase, run) {
313
176
  return await runWithManagedLifecycle(lifecycle, async function runWithResourceLifecycle() {
@@ -328,4 +191,37 @@ export function createResourceLifecycleRuntimePolicy(testCases) {
328
191
  }
329
192
  };
330
193
  }
194
+ export function createResourceLifecycleRuntimePolicy(testCases, timing) {
195
+ const { lifecycle } = createManagedLifecycleState(defaultLifecycleOptions(testCases, timing));
196
+ return createRuntimePolicyFromLifecycle(lifecycle);
197
+ }
198
+ export function createResourceLifecycleSession(options) {
199
+ const { lifecycle, stores } = createManagedLifecycleState(options);
200
+ return {
201
+ async disposeAll(signal) {
202
+ return await lifecycle.disposeAll(signal);
203
+ },
204
+ projectionRecords() {
205
+ return resourceProjectionRecordsFromStores(stores);
206
+ },
207
+ runtimePolicy: createRuntimePolicyFromLifecycle(lifecycle)
208
+ };
209
+ }
210
+ export async function acquireResourceLifecycleScopes(request) {
211
+ const { lifecycle, stores } = createManagedLifecycleState(request.options);
212
+ await runWithManagedLifecycle(lifecycle, async function acquireSelectedScopes() {
213
+ for (const testCase of request.testCases) {
214
+ await lifecycle.acquireResourceScopes(request.stepsForCase(testCase), testCase, request.signal, request.scopes);
215
+ }
216
+ });
217
+ return {
218
+ async disposeAll(disposalSignal) {
219
+ return await lifecycle.disposeAll(disposalSignal);
220
+ },
221
+ projectionRecords() {
222
+ return resourceProjectionRecordsFromStores(stores);
223
+ },
224
+ runtimePolicy: createRuntimePolicyFromLifecycle(lifecycle)
225
+ };
226
+ }
331
227
  //# sourceMappingURL=resource-lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lifecycle.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-lifecycle.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { createRunShardHasher, shardCollectedRunPlanCases } from "./run-sharding.js";
2
2
  import { orderedRunItems } from "./run-selection.js";
3
3
  import { collectedRunCaseEntriesFromWorkUnits, createWorkerPoolPlacementResolution } from "./worker-pool-placement-planning.js";
4
+ import { constrainedScheduling, workResourceConstraints } from "./work-unit-resource-constraints.js";
4
5
  function fileSetForDiscoveredFiles(files) {
5
6
  const fileSets = new Map(files.map(function toFileSetEntry(file) {
6
7
  return [file.file, file.fileSet];
@@ -24,6 +25,11 @@ function workerLifecycle(profile) {
24
25
  ? profile.execution.workerLifecycle
25
26
  : 'reuse';
26
27
  }
28
+ function profileMaximumWorkers(profile) {
29
+ return profile.execution.processModel === 'worker-pool'
30
+ ? profile.execution.maxWorkers
31
+ : null;
32
+ }
27
33
  function createPlacementResolution(input, shardHasher) {
28
34
  if (input.planKind !== 'worker-pool') {
29
35
  return null;
@@ -35,6 +41,8 @@ function createPlacementResolution(input, shardHasher) {
35
41
  fileSetForFile: fileSetForDiscoveredFiles(input.files),
36
42
  nowMilliseconds: input.dependencies.wallClock.currentEpochMilliseconds,
37
43
  order: input.request.order,
44
+ profileMaximumWorkers: profileMaximumWorkers(input.profile),
45
+ requestedWorkers: input.request.workers,
38
46
  seed: input.request.seed,
39
47
  selectedPlan: input.collectedPlan,
40
48
  shard: input.request.shard,
@@ -44,17 +52,37 @@ function createPlacementResolution(input, shardHasher) {
44
52
  workerLifecycle: workerLifecycle(input.profile)
45
53
  });
46
54
  }
55
+ function orderedCollectedCases(input, placementPlan, shardHasher) {
56
+ if (placementPlan !== null) {
57
+ return collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, placementPlan.units);
58
+ }
59
+ return orderedRunItems(shardCollectedRunPlanCases(input.collectedPlan, input.request.shard, shardHasher), input.request.order, input.request.seed);
60
+ }
61
+ function resolvedScheduling(input, orderedCases) {
62
+ if (input.planKind === 'worker-pool') {
63
+ return input.profile.execution.scheduling;
64
+ }
65
+ const constraints = workResourceConstraints(orderedCases.map(function toWorkId(entry) {
66
+ return entry.workId;
67
+ }), input.collectedPlan);
68
+ return constrainedScheduling(input.profile.execution.scheduling, constraints);
69
+ }
47
70
  export async function createCollectedExecutionPlan(input) {
48
71
  const shardHasher = await createRunShardHasher(input.request.shard);
49
72
  const placementResolution = createPlacementResolution(input, shardHasher);
50
- const placementPlan = placementResolution?.placementPlan ?? null;
51
- const orderedCases = placementPlan === null
52
- ? orderedRunItems(shardCollectedRunPlanCases(input.collectedPlan, input.request.shard, shardHasher), input.request.order, input.request.seed)
53
- : collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, placementPlan.units);
73
+ const planningFacts = placementResolution ?? {
74
+ durationHistory: null,
75
+ placementPlan: null,
76
+ workerCount: null
77
+ };
78
+ const { placementPlan, workerCount } = planningFacts;
79
+ const orderedCases = orderedCollectedCases(input, placementPlan, shardHasher);
54
80
  return {
55
- durationHistory: placementResolution?.durationHistory ?? null,
81
+ durationHistory: planningFacts.durationHistory,
56
82
  orderedCases,
57
- placementPlan
83
+ placementPlan,
84
+ scheduling: resolvedScheduling(input, orderedCases),
85
+ workerCount
58
86
  };
59
87
  }
60
88
  //# sourceMappingURL=run-collected-planning.js.map