@overkill-dev/run 0.0.55 → 0.0.57

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 (197) hide show
  1. package/engine/async-leak-diagnostics.d.ts.map +1 -1
  2. package/engine/async-leak-diagnostics.js +10 -0
  3. package/engine/async-leak-diagnostics.js.map +1 -1
  4. package/engine/case-execution.d.ts.map +1 -1
  5. package/engine/case-execution.js +2 -0
  6. package/engine/case-execution.js.map +1 -1
  7. package/engine/execution-async-leak-policy.d.ts.map +1 -1
  8. package/engine/execution-async-leak-policy.js +1 -0
  9. package/engine/execution-async-leak-policy.js.map +1 -1
  10. package/engine/execution-global-error-observer.d.ts.map +1 -1
  11. package/engine/execution-global-error-observer.js +3 -0
  12. package/engine/execution-global-error-observer.js.map +1 -1
  13. package/engine/execution-supervision.d.ts.map +1 -1
  14. package/engine/execution-supervision.js +11 -5
  15. package/engine/execution-supervision.js.map +1 -1
  16. package/engine/reporter-dispatcher.d.ts.map +1 -1
  17. package/engine/reporter-dispatcher.js +1 -0
  18. package/engine/reporter-dispatcher.js.map +1 -1
  19. package/engine/run-result.d.ts +6 -0
  20. package/engine/run-result.d.ts.map +1 -1
  21. package/engine/run-result.js +2 -0
  22. package/engine/run-result.js.map +1 -1
  23. package/package.json +10 -4
  24. package/packages/reporter-line/reporter-line.entry-point.js +19 -1
  25. package/packages/reporter-line/reporter-line.entry-point.js.map +1 -1
  26. package/packages/run/run.entry-point.d.ts +2 -1
  27. package/packages/run/run.entry-point.d.ts.map +1 -1
  28. package/readme.md +7 -1
  29. package/reporters/failure-summary.js +16 -0
  30. package/reporters/failure-summary.js.map +1 -0
  31. package/reporters/human-reporter-rendering.js +214 -0
  32. package/reporters/human-reporter-rendering.js.map +1 -0
  33. package/reporters/line-reporter.js +92 -97
  34. package/reporters/line-reporter.js.map +1 -1
  35. package/reporters/run-timing-summary.js +11 -0
  36. package/reporters/run-timing-summary.js.map +1 -0
  37. package/reporters/terminal.js +5 -1
  38. package/reporters/terminal.js.map +1 -1
  39. package/run/capability-policy.js +5 -0
  40. package/run/capability-policy.js.map +1 -1
  41. package/run/command-line-runner.d.ts.map +1 -1
  42. package/run/command-line-runner.js +10 -5
  43. package/run/command-line-runner.js.map +1 -1
  44. package/run/duration-history.d.ts +10 -1
  45. package/run/duration-history.d.ts.map +1 -1
  46. package/run/duration-history.js +3 -2
  47. package/run/duration-history.js.map +1 -1
  48. package/run/node-child-process-starters.js +1 -1
  49. package/run/node-child-process-starters.js.map +1 -1
  50. package/run/placement-trace.d.ts +9 -0
  51. package/run/placement-trace.d.ts.map +1 -1
  52. package/run/placement-trace.js.map +1 -1
  53. package/run/resource-lifecycle-boundaries.js +73 -0
  54. package/run/resource-lifecycle-boundaries.js.map +1 -0
  55. package/run/resource-lifecycle-projection.js +48 -0
  56. package/run/resource-lifecycle-projection.js.map +1 -0
  57. package/run/resource-lifecycle-session-acquirer.js +177 -0
  58. package/run/resource-lifecycle-session-acquirer.js.map +1 -0
  59. package/run/resource-lifecycle-startup-budget.js +81 -0
  60. package/run/resource-lifecycle-startup-budget.js.map +1 -0
  61. package/run/resource-lifecycle-state.d.ts +2 -0
  62. package/run/resource-lifecycle-state.d.ts.map +1 -1
  63. package/run/resource-lifecycle-state.js.map +1 -1
  64. package/run/resource-lifecycle-timing.js +85 -0
  65. package/run/resource-lifecycle-timing.js.map +1 -0
  66. package/run/resource-lifecycle.js +130 -235
  67. package/run/resource-lifecycle.js.map +1 -1
  68. package/run/run-collected-planning.js +23 -6
  69. package/run/run-collected-planning.js.map +1 -1
  70. package/run/run-collected-resolution.js +3 -2
  71. package/run/run-collected-resolution.js.map +1 -1
  72. package/run/run-collection-error-result.js +2 -2
  73. package/run/run-collection-error-result.js.map +1 -1
  74. package/run/run-config-schema.d.ts +7 -0
  75. package/run/run-config-schema.d.ts.map +1 -1
  76. package/run/run-config-schema.js +4 -0
  77. package/run/run-config-schema.js.map +1 -1
  78. package/run/run-config.d.ts.map +1 -1
  79. package/run/run-config.js +4 -4
  80. package/run/run-config.js.map +1 -1
  81. package/run/run-empty-shard.js +2 -2
  82. package/run/run-empty-shard.js.map +1 -1
  83. package/run/run-errors.d.ts.map +1 -1
  84. package/run/run-errors.js +1 -0
  85. package/run/run-errors.js.map +1 -1
  86. package/run/run-facts.js +4 -0
  87. package/run/run-facts.js.map +1 -1
  88. package/run/run-if-main-facts.js +2 -1
  89. package/run/run-if-main-facts.js.map +1 -1
  90. package/run/run-in-process-execution.js +3 -3
  91. package/run/run-in-process-execution.js.map +1 -1
  92. package/run/run-input-resolution.js +6 -0
  93. package/run/run-input-resolution.js.map +1 -1
  94. package/run/run-isolated-process.js +39 -24
  95. package/run/run-isolated-process.js.map +1 -1
  96. package/run/run-local-execution.js +12 -3
  97. package/run/run-local-execution.js.map +1 -1
  98. package/run/run-local-resolution.js +4 -2
  99. package/run/run-local-resolution.js.map +1 -1
  100. package/run/run-orchestrator-dependencies.d.ts +2 -0
  101. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  102. package/run/run-orchestrator-dependencies.js.map +1 -1
  103. package/run/run-support.js +14 -6
  104. package/run/run-support.js.map +1 -1
  105. package/run/run-timing-collection.d.ts +43 -0
  106. package/run/run-timing-collection.d.ts.map +1 -0
  107. package/run/run-timing-collection.js +173 -8
  108. package/run/run-timing-collection.js.map +1 -1
  109. package/run/run-types.d.ts +13 -3
  110. package/run/run-types.d.ts.map +1 -1
  111. package/run/run-types.js.map +1 -1
  112. package/run/run-validation.js +2 -0
  113. package/run/run-validation.js.map +1 -1
  114. package/run/run.js +31 -20
  115. package/run/run.js.map +1 -1
  116. package/run/supervised-child-process.d.ts +1 -0
  117. package/run/supervised-child-process.d.ts.map +1 -1
  118. package/run/supervised-child-process.js +5 -0
  119. package/run/supervised-child-process.js.map +1 -1
  120. package/run/supervised-child-test-plan.js +2 -0
  121. package/run/supervised-child-test-plan.js.map +1 -1
  122. package/run/supervised-child.js +3 -2
  123. package/run/supervised-child.js.map +1 -1
  124. package/run/supervised-protocol.js +14 -0
  125. package/run/supervised-protocol.js.map +1 -1
  126. package/run/supervised-run-collection.js +123 -0
  127. package/run/supervised-run-collection.js.map +1 -0
  128. package/run/supervised-run-resource-policy.js +6 -0
  129. package/run/supervised-run-resource-policy.js.map +1 -1
  130. package/run/supervised-run-runtime.js +9 -13
  131. package/run/supervised-run-runtime.js.map +1 -1
  132. package/run/supervised-run-state.d.ts +1 -0
  133. package/run/supervised-run-state.d.ts.map +1 -1
  134. package/run/supervised-run-state.js +17 -5
  135. package/run/supervised-run-state.js.map +1 -1
  136. package/run/supervised-run.js +76 -104
  137. package/run/supervised-run.js.map +1 -1
  138. package/run/work-unit-resource-constraints.js +6 -6
  139. package/run/work-unit-resource-constraints.js.map +1 -1
  140. package/run/worker-pool-collection.js +47 -20
  141. package/run/worker-pool-collection.js.map +1 -1
  142. package/run/worker-pool-command.js +68 -0
  143. package/run/worker-pool-command.js.map +1 -0
  144. package/run/worker-pool-dispatch-state.js +59 -0
  145. package/run/worker-pool-dispatch-state.js.map +1 -1
  146. package/run/worker-pool-dynamic-plan.js +62 -0
  147. package/run/worker-pool-dynamic-plan.js.map +1 -0
  148. package/run/worker-pool-execution.js +53 -83
  149. package/run/worker-pool-execution.js.map +1 -1
  150. package/run/worker-pool-hedge-dispatch.js +2 -1
  151. package/run/worker-pool-hedge-dispatch.js.map +1 -1
  152. package/run/worker-pool-host-process-starter.js +13 -0
  153. package/run/worker-pool-host-process-starter.js.map +1 -0
  154. package/run/worker-pool-host-process.js +53 -79
  155. package/run/worker-pool-host-process.js.map +1 -1
  156. package/run/worker-pool-host-protocol.js.map +1 -1
  157. package/run/worker-pool-host-signal.js +21 -0
  158. package/run/worker-pool-host-signal.js.map +1 -0
  159. package/run/worker-pool-host-task.js +55 -0
  160. package/run/worker-pool-host-task.js.map +1 -0
  161. package/run/worker-pool-lanes.js +51 -28
  162. package/run/worker-pool-lanes.js.map +1 -1
  163. package/run/worker-pool-lease-selection.js +85 -0
  164. package/run/worker-pool-lease-selection.js.map +1 -0
  165. package/run/worker-pool-lifecycle-lanes.js +4 -56
  166. package/run/worker-pool-lifecycle-lanes.js.map +1 -1
  167. package/run/worker-pool-placement-planning.js +9 -4
  168. package/run/worker-pool-placement-planning.js.map +1 -1
  169. package/run/worker-pool-protocol.js +2 -0
  170. package/run/worker-pool-protocol.js.map +1 -0
  171. package/run/worker-pool-resource-lifecycle-execution.js +155 -0
  172. package/run/worker-pool-resource-lifecycle-execution.js.map +1 -0
  173. package/run/worker-pool-routing.js +6 -3
  174. package/run/worker-pool-routing.js.map +1 -1
  175. package/run/worker-pool-run.js +74 -19
  176. package/run/worker-pool-run.js.map +1 -1
  177. package/run/worker-pool-runtime.js +77 -17
  178. package/run/worker-pool-runtime.js.map +1 -1
  179. package/run/worker-pool-task-events.js +20 -0
  180. package/run/worker-pool-task-events.js.map +1 -1
  181. package/run/worker-pool-task-validation.js +11 -0
  182. package/run/worker-pool-task-validation.js.map +1 -0
  183. package/run/worker-pool-warm-lane-affinity.d.ts +13 -0
  184. package/run/worker-pool-warm-lane-affinity.d.ts.map +1 -0
  185. package/run/worker-pool-warm-lane-affinity.js +147 -0
  186. package/run/worker-pool-warm-lane-affinity.js.map +1 -0
  187. package/run/worker-pool-work-dispatcher.js +78 -154
  188. package/run/worker-pool-work-dispatcher.js.map +1 -1
  189. package/run/worker-pool-worker-plan.js +1 -0
  190. package/run/worker-pool-worker-plan.js.map +1 -1
  191. package/run/worker-pool-worker-resources.js +99 -0
  192. package/run/worker-pool-worker-resources.js.map +1 -0
  193. package/run/worker-pool-worker-timing.js +63 -0
  194. package/run/worker-pool-worker-timing.js.map +1 -0
  195. package/run/worker-pool-worker.js +93 -32
  196. package/run/worker-pool-worker.js.map +1 -1
  197. package/sbom.cdx.json +9 -9
@@ -0,0 +1,177 @@
1
+ import { workIdentityKey } from "../engine/identity.js";
2
+ import { resourceEntries } from "../resources/resource-graph.js";
3
+ import { boundaryFor, initialBoundaryUseCountsFromRecords } from "./resource-lifecycle-boundaries.js";
4
+ import { resourceWrapperLifecycleError } from "./resource-lifecycle-error.js";
5
+ import { acquireResourceWithStartupBudget } from "./resource-lifecycle-startup-budget.js";
6
+ import { deserializeProjectedHandle, projectedHandle, serializeProjectedHandle } from "./resource-lifecycle-projection.js";
7
+ function caseKey(testCase) {
8
+ return workIdentityKey(testCase.workId);
9
+ }
10
+ function mutableDependencyContext() {
11
+ return {};
12
+ }
13
+ export function createManagedStores(options) {
14
+ const acquisitions = new Map();
15
+ const boundaryUseCounts = new Map(initialBoundaryUseCountsFromRecords(options.boundaryUseCounts));
16
+ const errorsByCase = new Map();
17
+ const records = new Map();
18
+ const runErrors = [];
19
+ return {
20
+ deleteAcquisition(boundaryKey) {
21
+ acquisitions.delete(boundaryKey);
22
+ },
23
+ deleteRecord(boundaryKey) {
24
+ records.delete(boundaryKey);
25
+ },
26
+ async existingAcquisition(boundaryKey) {
27
+ return await (acquisitions.get(boundaryKey) ?? Promise.resolve(null));
28
+ },
29
+ existingRecord(boundaryKey) {
30
+ return records.get(boundaryKey);
31
+ },
32
+ recordCaseError(testCase, message, cause) {
33
+ const key = caseKey(testCase);
34
+ const errors = errorsByCase.get(key) ?? [];
35
+ errors.push(resourceWrapperLifecycleError(message, cause).runnerError(testCase.id, testCase.workId));
36
+ errorsByCase.set(key, errors);
37
+ },
38
+ remainingBoundaryUses(boundaryKey) {
39
+ const remaining = (boundaryUseCounts.get(boundaryKey) ?? 0) - 1;
40
+ boundaryUseCounts.set(boundaryKey, remaining);
41
+ return remaining;
42
+ },
43
+ rememberAcquisition(boundaryKey, acquisition) {
44
+ acquisitions.set(boundaryKey, acquisition);
45
+ },
46
+ rememberRecord(boundaryKey, record) {
47
+ records.set(boundaryKey, record);
48
+ },
49
+ records() {
50
+ return Array.from(records.values());
51
+ },
52
+ takeCaseErrors(testCase) {
53
+ const key = caseKey(testCase);
54
+ const errors = errorsByCase.get(key) ?? [];
55
+ errorsByCase.delete(key);
56
+ return errors;
57
+ },
58
+ takePendingRunErrors() {
59
+ const errors = Array.from(runErrors);
60
+ runErrors.length = 0;
61
+ return errors;
62
+ },
63
+ takeRunErrors() {
64
+ const errors = Array.from(runErrors);
65
+ runErrors.length = 0;
66
+ return errors;
67
+ }
68
+ };
69
+ }
70
+ export function resourceProjectionRecordsFromStores(stores) {
71
+ return {
72
+ resources: stores.records().flatMap(function toProjectionRecord(record) {
73
+ const payload = serializeProjectedHandle(record.descriptor, record.ownerHandle, record.dependencyContext);
74
+ return payload === null
75
+ ? []
76
+ : [{ boundaryKey: record.boundary.key, payload }];
77
+ })
78
+ };
79
+ }
80
+ function assertCompatibleResource(stores, boundary, resource) {
81
+ const record = stores.existingRecord(boundary.key);
82
+ if (record !== undefined && record.descriptor !== resource) {
83
+ throw resourceWrapperLifecycleError(`Resource name "${resource.name}" is used by multiple descriptors in one lifecycle boundary.`, resource);
84
+ }
85
+ }
86
+ function projectionRecords(records) {
87
+ return new Map(records.resources.map(function toEntry(record) {
88
+ return [record.boundaryKey, record.payload];
89
+ }));
90
+ }
91
+ export function createManagedResourceAcquirer(stores, options) {
92
+ const externalProjections = projectionRecords(options.projectedResources);
93
+ let acquireResource = async function acquireBeforeReady() {
94
+ throw resourceWrapperLifecycleError('Resource lifecycle is not ready.', null);
95
+ };
96
+ async function acquireDependencyContext(resource, testCase, signal) {
97
+ const context = mutableDependencyContext();
98
+ await Promise.all(resourceEntries(resource.dependencies).map(async function acquireDependency([key, dependency]) {
99
+ const record = await acquireResource(dependency, testCase, signal);
100
+ context[key] = record.exposedHandle;
101
+ }));
102
+ return Object.freeze(context);
103
+ }
104
+ async function startResource(resource, boundary, testCase, signal) {
105
+ const dependencyContext = await acquireDependencyContext(resource, testCase, signal);
106
+ const acquireHandle = async function acquireResourceHandle() {
107
+ return await acquireResourceWithStartupBudget(resource, {
108
+ dependencies: dependencyContext,
109
+ signal
110
+ });
111
+ };
112
+ const ownerHandle = options.timing === null
113
+ ? await acquireHandle()
114
+ : await options.timing.measure({
115
+ phase: 'acquire',
116
+ resource: { name: resource.name, scope: resource.scope },
117
+ signal
118
+ }, acquireHandle);
119
+ const record = {
120
+ boundary,
121
+ dependencyContext,
122
+ descriptor: resource,
123
+ external: false,
124
+ exposedHandle: projectedHandle(resource, ownerHandle, dependencyContext),
125
+ ownerHandle
126
+ };
127
+ stores.rememberRecord(boundary.key, record);
128
+ return record;
129
+ }
130
+ async function startExternalResource(resource, boundary, testCase, signal) {
131
+ const payload = externalProjections.get(boundary.key);
132
+ if (payload === undefined) {
133
+ return null;
134
+ }
135
+ const dependencyContext = await acquireDependencyContext(resource, testCase, signal);
136
+ const record = {
137
+ boundary,
138
+ dependencyContext,
139
+ descriptor: resource,
140
+ external: true,
141
+ exposedHandle: deserializeProjectedHandle(resource, payload, dependencyContext),
142
+ ownerHandle: null
143
+ };
144
+ stores.rememberRecord(boundary.key, record);
145
+ return record;
146
+ }
147
+ async function acquireNewResource(resource, boundary, testCase, signal) {
148
+ const acquisition = startResource(resource, boundary, testCase, signal);
149
+ stores.rememberAcquisition(boundary.key, acquisition);
150
+ try {
151
+ return await acquisition;
152
+ }
153
+ catch (error) {
154
+ stores.deleteAcquisition(boundary.key);
155
+ throw error;
156
+ }
157
+ }
158
+ async function acquire(resource, testCase, signal) {
159
+ const boundary = boundaryFor(resource, testCase);
160
+ const existingRecord = stores.existingRecord(boundary.key);
161
+ assertCompatibleResource(stores, boundary, resource);
162
+ if (existingRecord !== undefined) {
163
+ return existingRecord;
164
+ }
165
+ const externalRecord = boundary.scope === 'per-run'
166
+ ? await startExternalResource(resource, boundary, testCase, signal)
167
+ : null;
168
+ if (externalRecord !== null) {
169
+ return externalRecord;
170
+ }
171
+ const existingAcquisition = await stores.existingAcquisition(boundary.key);
172
+ return existingAcquisition ?? await acquireNewResource(resource, boundary, testCase, signal);
173
+ }
174
+ acquireResource = acquire;
175
+ return { acquire };
176
+ }
177
+ //# sourceMappingURL=resource-lifecycle-session-acquirer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-lifecycle-session-acquirer.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-session-acquirer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { clearTimeout as clearNodeTimeout, setTimeout as setNodeTimeout } from 'node:timers';
2
+ import { callableResourceDefinition } from "../resources/resource-graph.js";
3
+ const resourceStartupTimeoutBrand = Symbol('ResourceStartupTimeout');
4
+ function resourceStartupTimeoutError(message) {
5
+ const error = new Error(message);
6
+ Object.defineProperty(error, resourceStartupTimeoutBrand, { value: true });
7
+ return error;
8
+ }
9
+ export function isResourceStartupTimeoutError(error) {
10
+ return typeof error === 'object' &&
11
+ error !== null &&
12
+ Reflect.get(error, resourceStartupTimeoutBrand) === true;
13
+ }
14
+ function isStartupBudgetRequirement(requirement) {
15
+ if (requirement === null || typeof requirement !== 'object') {
16
+ return false;
17
+ }
18
+ const kind = Reflect.get(requirement, 'kind');
19
+ const minimumMilliseconds = Reflect.get(requirement, 'minimumMilliseconds');
20
+ return kind === 'startup-budget-milliseconds' &&
21
+ typeof minimumMilliseconds === 'number' &&
22
+ Number.isFinite(minimumMilliseconds) &&
23
+ minimumMilliseconds >= 0;
24
+ }
25
+ function startupBudgetMilliseconds(resource) {
26
+ const budgets = resource.requirements.flatMap(function toBudget(requirement) {
27
+ return isStartupBudgetRequirement(requirement) ? [requirement.minimumMilliseconds] : [];
28
+ });
29
+ return budgets.length === 0 ? null : Math.max(...budgets);
30
+ }
31
+ function createStartupBudgetTimer(resource, budgetMilliseconds, controller) {
32
+ let rejectTimeout = function rejectBeforeTimeoutReady(error) {
33
+ throw error;
34
+ };
35
+ const timeout = new Promise(function createStartupTimeout(_resolve, reject) {
36
+ rejectTimeout = reject;
37
+ });
38
+ const timer = setNodeTimeout(function abortForStartupBudget() {
39
+ const error = resourceStartupTimeoutError(`Resource "${resource.name}" exceeded startup budget of ${budgetMilliseconds} ms.`);
40
+ controller.abort(error);
41
+ rejectTimeout(error);
42
+ }, budgetMilliseconds);
43
+ return {
44
+ cancel() {
45
+ clearNodeTimeout(timer);
46
+ },
47
+ timeout
48
+ };
49
+ }
50
+ function linkParentSignal(parentSignal, controller) {
51
+ const abortForParentSignal = function abortForParentSignal() {
52
+ controller.abort(parentSignal.reason);
53
+ };
54
+ parentSignal.addEventListener('abort', abortForParentSignal, { once: true });
55
+ return function unlinkParentSignal() {
56
+ parentSignal.removeEventListener('abort', abortForParentSignal);
57
+ };
58
+ }
59
+ export async function acquireResourceWithStartupBudget(resource, context) {
60
+ const budgetMilliseconds = startupBudgetMilliseconds(resource);
61
+ if (budgetMilliseconds === null) {
62
+ return await callableResourceDefinition(resource).acquire(context);
63
+ }
64
+ const controller = new AbortController();
65
+ const timer = createStartupBudgetTimer(resource, budgetMilliseconds, controller);
66
+ const unlinkParentSignal = linkParentSignal(context.signal, controller);
67
+ try {
68
+ return await Promise.race([
69
+ callableResourceDefinition(resource).acquire({
70
+ dependencies: context.dependencies,
71
+ signal: controller.signal
72
+ }),
73
+ timer.timeout
74
+ ]);
75
+ }
76
+ finally {
77
+ timer.cancel();
78
+ unlinkParentSignal();
79
+ }
80
+ }
81
+ //# sourceMappingURL=resource-lifecycle-startup-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-lifecycle-startup-budget.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-startup-budget.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import type { ComposedResourceSession, LifecycleMessages, ResourceWrapperStep }
4
4
  export type ManagedRunnerError = RunnerError;
5
5
  export type ManagedLifecycleState = {
6
6
  readonly acquireComposedResources: (steps: readonly ResourceWrapperStep[], signal: AbortSignal, messages: LifecycleMessages) => Promise<ComposedResourceSession>;
7
+ readonly acquireResourceScopes: (steps: readonly ResourceWrapperStep[], testCase: TestPlanCase, signal: AbortSignal, scopes: ReadonlySet<string>) => Promise<void>;
8
+ readonly disposeAll: (signal: AbortSignal) => Promise<readonly ManagedRunnerError[]>;
7
9
  readonly runCase: <Value>(testCase: TestPlanCase, run: () => Promise<Value>) => Promise<Value>;
8
10
  readonly takeCaseErrors: (testCase: TestPlanCase) => readonly ManagedRunnerError[];
9
11
  readonly takePendingRunErrors: () => readonly ManagedRunnerError[];
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lifecycle-state.d.ts","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,wBAAwB,EAAE,CAC/B,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,iBAAiB,KAC1B,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS,kBAAkB,EAAE,CAAC;IACnF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;CAC/D,CAAC;AAKF,wBAAgB,sBAAsB,IAAI,qBAAqB,GAAG,IAAI,CAErE;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAC/C,SAAS,EAAE,qBAAqB,EAChC,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,KAAK,CAAC,CAEhB;AAED,wBAAgB,oBAAoB,IAAI,YAAY,GAAG,IAAI,CAE1D;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAC5C,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,KAAK,CAAC,CAEhB"}
1
+ {"version":3,"file":"resource-lifecycle-state.d.ts","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,wBAAwB,EAAE,CAC/B,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,iBAAiB,KAC1B,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,CAC5B,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IACrF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,SAAS,kBAAkB,EAAE,CAAC;IACnF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,kBAAkB,EAAE,CAAC;CAC/D,CAAC;AAKF,wBAAgB,sBAAsB,IAAI,qBAAqB,GAAG,IAAI,CAErE;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAC/C,SAAS,EAAE,qBAAqB,EAChC,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,KAAK,CAAC,CAEhB;AAED,wBAAgB,oBAAoB,IAAI,YAAY,GAAG,IAAI,CAE1D;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAC5C,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,KAAK,CAAC,CAEhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lifecycle-state.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAuBrD,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAyB,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAgB,CAAC;AAE1D,MAAM,UAAU,sBAAsB;IAClC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,SAAgC,EAChC,GAAyB;IAEzB,OAAO,MAAM,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,QAAsB,EACtB,GAAyB;IAEzB,OAAO,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"resource-lifecycle-state.js","sourceRoot":"","sources":["../../../../source/run/resource-lifecycle-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA8BrD,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAyB,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAgB,CAAC;AAE1D,MAAM,UAAU,sBAAsB;IAClC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,SAAgC,EAChC,GAAyB;IAEzB,OAAO,MAAM,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,QAAsB,EACtB,GAAyB;IAEzB,OAAO,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC"}
@@ -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":"AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAyCvF,SAAS,UAAU,CAAC,KAAgD;IAChE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CACvB,KAAc,EACd,SAA2C;IAE3C,IAAI,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,mBAAmB,CACxB,OAAuC,EACvC,SAA2C;IAE3C,MAAM,QAAQ,GAAG;QACb,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC7B,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAClB,uBAAuB,EAAE,SAAS,CAAC,uBAAuB;YAC1D,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3C,QAAQ;YACR,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,SAAS,CAAC,MAAM;SAC3B,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAChB,oBAAoB,EAAE,uBAAuB,CACzC,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,qBAAqB,CACtE;YACD,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3C,GAAG,QAAQ;YACX,uBAAuB,EAAE,IAAI;YAC7B,MAAM,EAAE,SAAS,CAAC,MAAM;SAC3B,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CACzB,OAAuC,EACvC,SAA2C;IAE3C,IAAI,CAAC;QACD,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACrC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,4BAA4B,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CACzB,OAAuC,EACvC,SAA2C,EAC3C,qBAAoC,EACpC,MAAwB;IAExB,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3D,IAAI,qBAAqB,KAAK,IAAI,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;QACrE,oBAAoB,CAAC,OAAO,EAAE;YAC1B,uBAAuB;YACvB,SAAS;YACT,qBAAqB;YACrB,MAAM;SACT,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CACnC,OAAuC,EACvC,SAA2C,EAC3C,IAA0B;IAE1B,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QAE3B,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAE3E,OAAO,KAAK,CAAC;IACjB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACtG,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CACzC,OAAuC;IAEvC,OAAO;QACH,KAAK,CAAC,OAAO,CACT,SAA2C,EAC3C,IAA0B;YAE1B,OAAO,MAAM,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;KACJ,CAAC;AACN,CAAC"}