@overkill-dev/run 0.0.59 → 0.0.60
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.
- package/engine/test-body-resource-attachment.d.ts +1 -0
- package/engine/test-body-resource-attachment.d.ts.map +1 -1
- package/engine/test-body-resource-attachment.js +1 -0
- package/engine/test-body-resource-attachment.js.map +1 -1
- package/package.json +2 -1
- package/packages/run/run.entry-point.d.ts +3 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +1 -1
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +11 -1
- package/resources/resource-graph.d.ts +1 -0
- package/resources/resource-graph.d.ts.map +1 -1
- package/resources/resource-graph.js +2 -2
- package/resources/resource-graph.js.map +1 -1
- package/run/execution-plan-resolution.js +356 -0
- package/run/execution-plan-resolution.js.map +1 -0
- package/run/permission-denial-runtime-policy.js +12 -2
- package/run/permission-denial-runtime-policy.js.map +1 -1
- package/run/resource-lifecycle-boundaries.js +8 -4
- package/run/resource-lifecycle-boundaries.js.map +1 -1
- package/run/resource-lifecycle-state.d.ts +9 -1
- package/run/resource-lifecycle-state.d.ts.map +1 -1
- package/run/resource-lifecycle-state.js.map +1 -1
- package/run/resource-lifecycle.js +37 -5
- package/run/resource-lifecycle.js.map +1 -1
- package/run/resource-ownership-plan.d.ts +30 -0
- package/run/resource-ownership-plan.d.ts.map +1 -0
- package/run/run-collected-planning.js +8 -0
- package/run/run-collected-planning.js.map +1 -1
- package/run/run-errors.d.ts +54 -0
- package/run/run-errors.d.ts.map +1 -1
- package/run/run-errors.js +61 -0
- package/run/run-errors.js.map +1 -1
- package/run/run-types.d.ts +3 -2
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js +3 -4
- package/run/run-types.js.map +1 -1
- package/run/work-unit-planning.js +16 -3
- package/run/work-unit-planning.js.map +1 -1
- package/run/worker-pool-execution.js +15 -19
- package/run/worker-pool-execution.js.map +1 -1
- package/run/worker-pool-hedged-arbitration.js +22 -6
- package/run/worker-pool-hedged-arbitration.js.map +1 -1
- package/run/worker-pool-host-protocol.js.map +1 -1
- package/run/worker-pool-host-task.js +9 -0
- package/run/worker-pool-host-task.js.map +1 -1
- package/run/worker-pool-host.entry-point.js +13 -13
- package/run/worker-pool-host.entry-point.js.map +1 -1
- package/run/worker-pool-lanes.js +16 -9
- package/run/worker-pool-lanes.js.map +1 -1
- package/run/worker-pool-placement-planning.js +24 -3
- package/run/worker-pool-placement-planning.js.map +1 -1
- package/run/worker-pool-protocol.js +19 -0
- package/run/worker-pool-protocol.js.map +1 -1
- package/run/worker-pool-resource-lifecycle-execution.js +143 -12
- package/run/worker-pool-resource-lifecycle-execution.js.map +1 -1
- package/run/worker-pool-routing.js +13 -1
- package/run/worker-pool-routing.js.map +1 -1
- package/run/worker-pool-runtime.js +12 -16
- package/run/worker-pool-runtime.js.map +1 -1
- package/run/worker-pool-task-events.js +6 -1
- package/run/worker-pool-task-events.js.map +1 -1
- package/run/worker-pool-task-validation.js +1 -0
- package/run/worker-pool-task-validation.js.map +1 -1
- package/run/worker-pool-worker-resources.js +9 -2
- package/run/worker-pool-worker-resources.js.map +1 -1
- package/run/worker-pool-worker.js +9 -1
- package/run/worker-pool-worker.js.map +1 -1
- package/sbom.cdx.json +4 -4
|
@@ -15,6 +15,7 @@ export type TestBodyRuntimeScenarioBindingSummary = TestBodyScenarioSlotSummary
|
|
|
15
15
|
};
|
|
16
16
|
export type TestBodyResourceSummary = {
|
|
17
17
|
readonly dependencies: readonly string[];
|
|
18
|
+
readonly handleTransport: 'local' | 'projected';
|
|
18
19
|
readonly name: string;
|
|
19
20
|
readonly requirements: readonly TestBodyExecutionRequirementSummary[];
|
|
20
21
|
readonly scenarios: readonly TestBodyScenarioSlotSummary[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-body-resource-attachment.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-body-resource-attachment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-body-resource-attachment.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-body-resource-attachment.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gCAAgC,eAAiE,CAAC;AAExG,MAAM,MAAM,mCAAmC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpF,MAAM,MAAM,2BAA2B,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG,2BAA2B,GAAG;IAC9E,QAAQ,CAAC,KAAK,EAAE;QACZ,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,WAAW,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,mCAAmC,EAAE,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,mCAAmC,EAAE,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,uCAAuC,EAAE,CAAC;IACvE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,qCAAqC,EAAE,CAAC;CAC/E,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,uCAAuC,EAAE,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mCAAmC,EAAE,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG,4BAA4B,CAAC;AAE/F,MAAM,MAAM,uCAAuC,GAAG;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,QAAQ,CAAC,eAAe,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,IAAI,IAAI,IAAI,GAAG;IAChD,QAAQ,CAAC,CAAC,gCAAgC,CAAC,EAAE,2BAA2B,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,IAAI,IAAI,IAAI,GAAG;IAC5C,QAAQ,CAAC,CAAC,gCAAgC,CAAC,CAAC,EAAE,KAAK,CAAC;CACvD,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAyEvE,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,2BAA2B,GAAG,OAAO,CAUhG;AAsFD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAAC,gBAAgB,CAAC,CAElH;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAC3D,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,EAC9B,WAAW,EAAE,2BAA2B,GACzC,wBAAwB,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,CAkBpD;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAM3F"}
|
|
@@ -67,6 +67,7 @@ function freezeResourceGraph(resources) {
|
|
|
67
67
|
return Object.freeze(resources.map(function freezeResource(resource) {
|
|
68
68
|
return Object.freeze({
|
|
69
69
|
dependencies: Object.freeze(Array.from(resource.dependencies)),
|
|
70
|
+
handleTransport: resource.handleTransport,
|
|
70
71
|
name: resource.name,
|
|
71
72
|
requirements: freezeRequirements(resource.requirements),
|
|
72
73
|
scenarios: Object.freeze(resource.scenarios.map(function freezeScenario(scenario) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-body-resource-attachment.js","sourceRoot":"","sources":["../../../../source/engine/test-body-resource-attachment.ts"],"names":[],"mappings":"AAAA,MAAM,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"test-body-resource-attachment.js","sourceRoot":"","sources":["../../../../source/engine/test-body-resource-attachment.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
"./run/default-run-engine.js",
|
|
91
91
|
"./run/definition-location-capture.js",
|
|
92
92
|
"./run/duration-history.js",
|
|
93
|
+
"./run/execution-plan-resolution.js",
|
|
93
94
|
"./run/node-child-process-starters.js",
|
|
94
95
|
"./run/node-process-capability-restrictions.js",
|
|
95
96
|
"./run/node-run-dependencies.entry-point.js",
|
|
@@ -119,5 +120,5 @@
|
|
|
119
120
|
"./run/worker-pool-worker-resources.js"
|
|
120
121
|
],
|
|
121
122
|
"type": "module",
|
|
122
|
-
"version": "0.0.
|
|
123
|
+
"version": "0.0.60"
|
|
123
124
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export declare const runIfMain: import("../../run/run-if-main.ts").RunIfMain;
|
|
2
2
|
export { orchestrator } from '../../run/run-orchestrator.entry-point.ts';
|
|
3
3
|
export { defineConfig, loadRunConfig, RunConfigError } from './config.entry-point.ts';
|
|
4
|
-
export { RunResolutionError } from '../../run/run-errors.ts';
|
|
4
|
+
export { RunExecutionPlanError, RunResolutionError } from '../../run/run-errors.ts';
|
|
5
|
+
export type { PlannedResourceOwner, ResourceOwnerPlacement, ResourceOwnershipPlan } from '../../run/resource-ownership-plan.ts';
|
|
5
6
|
export type { LoadedRunConfig, RunConfigLoader, RunConfigLoaderDependencies, RunConfigLoadRequest, RunProjectConfig, RunProjectIntegrationExecution, RunProjectIntegrationProfileConfig, RunProjectMeasuredResourceUsage, RunProjectMicrotestExecution, RunProjectMicrotestProfileConfig, RunProjectProfileFiles, RunProjectProfileConfig, RunProjectProfilesConfig, RunProjectResourceBudgets, RunProjectResourceUsageConfig, RunProjectTimingProfilePolicy, RunProjectTimeoutConfig, RunProjectUnmeasuredResourceUsage } from '../../run/run-config.ts';
|
|
6
7
|
export type { RunIfMain, RunIfMainDependencies } from '../../run/run-if-main.ts';
|
|
7
8
|
export type { RunIfMainProfileResolver, RunIfMainProfileResolverDependencies } from '../../run/run-if-main-profile.ts';
|
|
8
9
|
export type { RunIfMainOptions, RunIfMainRootOptions } from '../../run/run-if-main-options.ts';
|
|
9
|
-
export type { RunResolutionErrorCode } from '../../run/run-errors.ts';
|
|
10
|
+
export type { ExecutionPlanResourceFacts, RunExecutionPlanConflict, RunResolutionErrorCode } from '../../run/run-errors.ts';
|
|
10
11
|
export type { RunInvocationTimingOptions } from '../../run/run-timing-collection.ts';
|
|
11
12
|
export type { RuntimeDimensions, RuntimeId, WorkId, WorkloadId } from '../../engine/identity.ts';
|
|
12
13
|
export type { DynamicWorkUnitId, PlacementAttemptId, PlacementAttemptInterruptionCause, PlacementAttemptReason, PlacementRecoveryDecision, PlacementTrace, PlacementTraceEntry, PlacementWorkerId, TraceWorkUnitId } from '../../run/placement-trace.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS,8CAgBpB,CAAC;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EACH,YAAY,EACZ,aAAa,EACb,cAAc,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS,8CAgBpB,CAAC;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EACH,YAAY,EACZ,aAAa,EACb,cAAc,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACpF,YAAY,EACR,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACR,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,8BAA8B,EAC9B,kCAAkC,EAClC,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,uBAAuB,EACvB,iCAAiC,EACpC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACR,SAAS,EACT,qBAAqB,EACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACR,wBAAwB,EACxB,oCAAoC,EACvC,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACR,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACR,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iCAAiC,EACjC,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAClB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,QAAQ,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACV,aAAa,EACb,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,YAAY,EACf,MAAM,wBAAwB,CAAC"}
|
|
@@ -33,5 +33,5 @@ export const runIfMain = createRunIfMain({
|
|
|
33
33
|
});
|
|
34
34
|
export { orchestrator } from "../../run/run-orchestrator.entry-point.js";
|
|
35
35
|
export { defineConfig, loadRunConfig, RunConfigError } from "./config.entry-point.js";
|
|
36
|
-
export { RunResolutionError } from "../../run/run-errors.js";
|
|
36
|
+
export { RunExecutionPlanError, RunResolutionError } from "../../run/run-errors.js";
|
|
37
37
|
//# sourceMappingURL=run.entry-point.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;IACrD,aAAa;IACb,IAAI;IACJ,aAAa;IACb,QAAQ;IACR,IAAI;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACrC,0BAA0B,EAAE,8BAA8B;IAC1D,mBAAmB,EAAE,yBAAyB;IAC9C,WAAW;IACX,uBAAuB;QACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IACD,YAAY;QACR,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC5B,CAAC;IACD,oBAAoB;IACpB,SAAS,EAAE,gBAAgB;IAC3B,WAAW,CAAC,QAAQ;QAChB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,OAAO,CAAC,MAAM;CACzB,CAAC,CAAC;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EACH,YAAY,EACZ,aAAa,EACb,cAAc,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"run.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;IACrD,aAAa;IACb,IAAI;IACJ,aAAa;IACb,QAAQ;IACR,IAAI;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACrC,0BAA0B,EAAE,8BAA8B;IAC1D,mBAAmB,EAAE,yBAAyB;IAC9C,WAAW;IACX,uBAAuB;QACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IACD,YAAY;QACR,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC5B,CAAC;IACD,oBAAoB;IACpB,SAAS,EAAE,gBAAgB;IAC3B,WAAW,CAAC,QAAQ;QAChB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,OAAO,CAAC,MAAM;CACzB,CAAC,CAAC;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EACH,YAAY,EACZ,aAAa,EACb,cAAc,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/readme.md
CHANGED
|
@@ -166,7 +166,12 @@ local order, and worker lifecycle. Unmatched selected file sets are rejected
|
|
|
166
166
|
by default, or run as plain file units with profile defaults when
|
|
167
167
|
`unmatched: 'file'` is configured. `RunFacts.execution` contains the frozen
|
|
168
168
|
`PlacementPlan`: work units, resolved per-unit policy, local worker lanes, and
|
|
169
|
-
the deterministic initial lane assignment used by execution.
|
|
169
|
+
the deterministic initial lane assignment used by execution. The plan also
|
|
170
|
+
freezes resource ownership for every selected `per-run`, `per-file`, and
|
|
171
|
+
`per-suite` boundary. Shared resources either stay on one reusable executor
|
|
172
|
+
lane or use a dedicated infrastructure worker that projects handles to the
|
|
173
|
+
assigned work. Local-only handles are rejected when the resolved placement
|
|
174
|
+
requires projection. Worker-pool
|
|
170
175
|
placement defaults to `assignmentPolicy: 'case-count-balanced'`, which places
|
|
171
176
|
larger selected work units first and balances lane load by selected case count
|
|
172
177
|
and resource capacity weight.
|
|
@@ -208,6 +213,11 @@ serial without serializing unrelated units. `single-worker` pins matching work
|
|
|
208
213
|
to one lane without changing in-unit scheduling. For `supervised-process`, a
|
|
209
214
|
serial or exclusive requirement anywhere in the selected plan makes the
|
|
210
215
|
containing process plan serial.
|
|
216
|
+
Planning rejects incompatible runtime or resource definitions, invalid resource
|
|
217
|
+
dependency scopes, mixed worker lifecycles for one hard constraint, and worker
|
|
218
|
+
capacity that cannot satisfy the resolved lifecycle lanes. These failures are
|
|
219
|
+
reported as `RunExecutionPlanError` with deterministic structured conflicts
|
|
220
|
+
before test execution begins.
|
|
211
221
|
Direct `RunConfig` values may set `execution.hostProcess` for worker-pool
|
|
212
222
|
profiles. `{ kind: 'direct' }` keeps the worker-thread pool in the coordinator
|
|
213
223
|
process. `{ kind: 'child', nodeArguments: [...] }` starts one supervised host
|
|
@@ -15,6 +15,7 @@ export type CallableResourceDefinition = AnyResourceDefinition & {
|
|
|
15
15
|
readonly dispose: ResourceDisposeCallback | null;
|
|
16
16
|
};
|
|
17
17
|
export declare function resourceEntries(resources: ResourceDependencies): readonly ResourceEntry[];
|
|
18
|
+
export declare function resourceDependencyScopeAllowed(resource: Pick<AnyResourceDefinition, 'scope'>, dependency: Pick<AnyResourceDefinition, 'scope'>): boolean;
|
|
18
19
|
export declare function callableResourceDefinition(resource: AnyResourceDefinition): CallableResourceDefinition;
|
|
19
20
|
export declare function createResourceGraph(resources: ResourceDependencies): ResourceGraph;
|
|
20
21
|
export declare function assertPerCaseResourceGraph(resources: ResourceDependencies): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-graph.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAEd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAE7B,MAAM,gBAAgB,CAAC;AAaxB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CACtD,CAAC;AACF,KAAK,yBAAyB,GAAG,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACtG,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/G,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,CACd,OAAO,EAAE,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,KAC5E,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpD,CAAC;AAQF,wBAAgB,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,aAAa,EAAE,CAEzF;
|
|
1
|
+
{"version":3,"file":"resource-graph.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAEd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAE7B,MAAM,gBAAgB,CAAC;AAaxB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CACtD,CAAC;AACF,KAAK,yBAAyB,GAAG,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACtG,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/G,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,CACd,OAAO,EAAE,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,KAC5E,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpD,CAAC;AAQF,wBAAgB,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,aAAa,EAAE,CAEzF;AA4BD,wBAAgB,8BAA8B,CAC1C,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,EAC9C,UAAU,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GACjD,OAAO,CAaT;AAMD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,0BAA0B,CAQtG;AAiFD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAElF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAuBhF;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAwBpF"}
|
|
@@ -24,7 +24,7 @@ function scopeRank(scope) {
|
|
|
24
24
|
}
|
|
25
25
|
return perCaseScopeRank;
|
|
26
26
|
}
|
|
27
|
-
function
|
|
27
|
+
export function resourceDependencyScopeAllowed(resource, dependency) {
|
|
28
28
|
const resourceScope = resource.scope;
|
|
29
29
|
const dependencyScope = dependency.scope;
|
|
30
30
|
if (dependencyScope === 'shared-per-worker') {
|
|
@@ -113,7 +113,7 @@ export function assertResourceDependencyScopes(resources) {
|
|
|
113
113
|
const graph = createResourceGraph(resources);
|
|
114
114
|
for (const node of graph.order) {
|
|
115
115
|
for (const dependency of node.dependencies) {
|
|
116
|
-
if (!
|
|
116
|
+
if (!resourceDependencyScopeAllowed(node.descriptor, dependency.descriptor)) {
|
|
117
117
|
throw resourceLifecycleError([
|
|
118
118
|
`Resource "${node.descriptor.name}" uses ${node.descriptor.scope} scope and cannot depend on`,
|
|
119
119
|
`resource "${dependency.descriptor.name}" with ${dependency.descriptor.scope} scope.`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EAMpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA8BvE,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,eAAe,CAAC,SAA+B;IAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;;AAQD,SAAS,SAAS,CAAC,KAAoB;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;QAChC,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { runtimeIdentityKey, workIdentityKey } from "../engine/identity.js";
|
|
2
|
+
import { resourceDependencyScopeAllowed } from "../resources/resource-graph.js";
|
|
3
|
+
import { caseResourceOwnershipBoundaries, resourceScopes } from "./resource-lifecycle-boundaries.js";
|
|
4
|
+
import { collectedRunCaseEntries } from "./collected-run-plan.js";
|
|
5
|
+
import { hardConstraintKeys } from "./work-unit-resource-constraints.js";
|
|
6
|
+
function stableJson(value) {
|
|
7
|
+
if (value === null || typeof value !== 'object') {
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(value)) {
|
|
11
|
+
return `[${value.map(stableJson).join(',')}]`;
|
|
12
|
+
}
|
|
13
|
+
const keys = Object.keys(value).toSorted(function compareKeys(left, right) {
|
|
14
|
+
return left.localeCompare(right);
|
|
15
|
+
});
|
|
16
|
+
return `{${keys
|
|
17
|
+
.map(function entry(key) {
|
|
18
|
+
return `${JSON.stringify(key)}:${stableJson(Reflect.get(value, key))}`;
|
|
19
|
+
})
|
|
20
|
+
.join(',')}}`;
|
|
21
|
+
}
|
|
22
|
+
function nonEmpty(values, message) {
|
|
23
|
+
const first = values[0];
|
|
24
|
+
if (first === undefined) {
|
|
25
|
+
throw new Error(message);
|
|
26
|
+
}
|
|
27
|
+
return [first, ...values.slice(1)];
|
|
28
|
+
}
|
|
29
|
+
function mapWith(values, key, value) {
|
|
30
|
+
const updatedValues = new Map(values);
|
|
31
|
+
updatedValues.set(key, value);
|
|
32
|
+
return updatedValues;
|
|
33
|
+
}
|
|
34
|
+
function uniqueWork(work) {
|
|
35
|
+
const workByKey = new Map(work.map(function workEntry(item) {
|
|
36
|
+
return [workIdentityKey(item), item];
|
|
37
|
+
}));
|
|
38
|
+
return Array.from(workByKey.values());
|
|
39
|
+
}
|
|
40
|
+
const resourceScopeNames = resourceScopes;
|
|
41
|
+
function isResourceScope(scope) {
|
|
42
|
+
return resourceScopeNames.has(scope);
|
|
43
|
+
}
|
|
44
|
+
function resourceScope(resource) {
|
|
45
|
+
return isResourceScope(resource.scope) ? resource.scope : null;
|
|
46
|
+
}
|
|
47
|
+
function resourceFacts(resource) {
|
|
48
|
+
const scope = resourceScope(resource);
|
|
49
|
+
return scope === null ? null : { name: resource.name, scope };
|
|
50
|
+
}
|
|
51
|
+
function resourceDefinitionEnvelope(resource) {
|
|
52
|
+
return {
|
|
53
|
+
dependencies: resource.dependencies.toSorted(function compareDependencies(left, right) {
|
|
54
|
+
return left.localeCompare(right);
|
|
55
|
+
}),
|
|
56
|
+
handleTransport: resource.handleTransport,
|
|
57
|
+
requirements: resource.requirements,
|
|
58
|
+
scenarios: resource.scenarios,
|
|
59
|
+
scope: resource.scope
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function runtimeSummaryForId(runtimes, runtimeId) {
|
|
63
|
+
return runtimes.find(function runtimeNameMatches(runtime) {
|
|
64
|
+
return runtime.name === runtimeId.name;
|
|
65
|
+
}) ?? null;
|
|
66
|
+
}
|
|
67
|
+
function recordResourceDefinitions(entry, resources) {
|
|
68
|
+
const updatedResources = new Map(resources);
|
|
69
|
+
for (const resource of entry.testCase.resourceAttachments.resourceGraph) {
|
|
70
|
+
const definitions = new Map(updatedResources.get(resource.name));
|
|
71
|
+
const envelope = stableJson(resourceDefinitionEnvelope(resource));
|
|
72
|
+
const definition = definitions.get(envelope) ?? { resource, work: [] };
|
|
73
|
+
definitions.set(envelope, { resource, work: [...definition.work, entry.workId] });
|
|
74
|
+
updatedResources.set(resource.name, definitions);
|
|
75
|
+
}
|
|
76
|
+
return updatedResources;
|
|
77
|
+
}
|
|
78
|
+
function recordRuntimeDefinition(entry, runtimeId, runtimes) {
|
|
79
|
+
const runtime = runtimeSummaryForId(entry.testCase.resourceAttachments.runtimeGraphs, runtimeId);
|
|
80
|
+
if (runtime === null) {
|
|
81
|
+
return runtimes;
|
|
82
|
+
}
|
|
83
|
+
const runtimeKey = runtimeIdentityKey(runtimeId);
|
|
84
|
+
const existing = runtimes.get(runtimeKey);
|
|
85
|
+
const definitions = new Map(existing?.definitions);
|
|
86
|
+
const envelope = stableJson(runtime);
|
|
87
|
+
definitions.set(envelope, [...definitions.get(envelope) ?? [], entry.workId]);
|
|
88
|
+
return mapWith(runtimes, runtimeKey, { definitions, runtime: runtimeId });
|
|
89
|
+
}
|
|
90
|
+
function resourceDefinitionConflict(name, definitions) {
|
|
91
|
+
const values = Array.from(definitions.values());
|
|
92
|
+
const facts = values.flatMap(function definitionFacts(definition) {
|
|
93
|
+
const factsForResource = resourceFacts(definition.resource);
|
|
94
|
+
return factsForResource === null ? [] : [factsForResource];
|
|
95
|
+
});
|
|
96
|
+
const work = uniqueWork(values.flatMap(function definitionWork(definition) {
|
|
97
|
+
return definition.work;
|
|
98
|
+
}));
|
|
99
|
+
return definitions.size <= 1 || facts.length === 0 || work.length === 0 ? [] : [{
|
|
100
|
+
definitions: nonEmpty(facts, 'Resource definition conflict requires resource facts.'),
|
|
101
|
+
kind: 'resource-definition',
|
|
102
|
+
name,
|
|
103
|
+
work: nonEmpty(work, 'Resource definition conflict requires work.')
|
|
104
|
+
}];
|
|
105
|
+
}
|
|
106
|
+
function runtimeDefinitionConflict(record) {
|
|
107
|
+
const work = uniqueWork(Array.from(record.definitions.values()).flat());
|
|
108
|
+
return record.definitions.size <= 1 ? [] : [{
|
|
109
|
+
kind: 'runtime-definition',
|
|
110
|
+
runtime: record.runtime,
|
|
111
|
+
work: nonEmpty(work, 'Runtime definition conflict requires work.')
|
|
112
|
+
}];
|
|
113
|
+
}
|
|
114
|
+
function identityConflicts(plan) {
|
|
115
|
+
let resources = new Map();
|
|
116
|
+
let runtimes = new Map();
|
|
117
|
+
for (const entry of collectedRunCaseEntries(plan)) {
|
|
118
|
+
resources = recordResourceDefinitions(entry, resources);
|
|
119
|
+
for (const runtimeId of entry.workId.runtimes) {
|
|
120
|
+
runtimes = recordRuntimeDefinition(entry, runtimeId, runtimes);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return [
|
|
124
|
+
...Array
|
|
125
|
+
.from(resources, function resourceConflict([name, definitions]) {
|
|
126
|
+
return resourceDefinitionConflict(name, definitions);
|
|
127
|
+
})
|
|
128
|
+
.flat(),
|
|
129
|
+
...Array.from(runtimes.values()).flatMap(runtimeDefinitionConflict)
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
function dependencyConflictRecord(resource, dependency) {
|
|
133
|
+
const resourceValue = resourceFacts(resource);
|
|
134
|
+
const dependencyValue = resourceFacts(dependency);
|
|
135
|
+
if (resourceValue === null || dependencyValue === null) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
return resourceDependencyScopeAllowed(resourceValue, dependencyValue)
|
|
139
|
+
? null
|
|
140
|
+
: { dependency: dependencyValue, resource: resourceValue };
|
|
141
|
+
}
|
|
142
|
+
function recordResourceDependencyConflicts(entry, resource, resources, conflicts) {
|
|
143
|
+
let updatedConflicts = conflicts;
|
|
144
|
+
for (const dependencyName of resource.dependencies) {
|
|
145
|
+
const dependency = resources.get(dependencyName);
|
|
146
|
+
const record = dependency === undefined ? null : dependencyConflictRecord(resource, dependency);
|
|
147
|
+
if (record !== null) {
|
|
148
|
+
const key = stableJson(record);
|
|
149
|
+
const existing = updatedConflicts.get(key);
|
|
150
|
+
updatedConflicts = mapWith(updatedConflicts, key, {
|
|
151
|
+
...record,
|
|
152
|
+
work: [...existing?.work ?? [], entry.workId]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return updatedConflicts;
|
|
157
|
+
}
|
|
158
|
+
function recordDependencyConflicts(entry, conflicts) {
|
|
159
|
+
const resources = new Map(entry.testCase.resourceAttachments.resourceGraph.map(function resourceEntry(resource) {
|
|
160
|
+
return [resource.name, resource];
|
|
161
|
+
}));
|
|
162
|
+
let updatedConflicts = conflicts;
|
|
163
|
+
for (const resource of resources.values()) {
|
|
164
|
+
updatedConflicts = recordResourceDependencyConflicts(entry, resource, resources, updatedConflicts);
|
|
165
|
+
}
|
|
166
|
+
return updatedConflicts;
|
|
167
|
+
}
|
|
168
|
+
function dependencyScopeConflicts(plan) {
|
|
169
|
+
let conflicts = new Map();
|
|
170
|
+
for (const entry of collectedRunCaseEntries(plan)) {
|
|
171
|
+
conflicts = recordDependencyConflicts(entry, conflicts);
|
|
172
|
+
}
|
|
173
|
+
return Array.from(conflicts.values(), function dependencyConflict(conflict) {
|
|
174
|
+
return {
|
|
175
|
+
dependency: conflict.dependency,
|
|
176
|
+
kind: 'resource-dependency-scope',
|
|
177
|
+
resource: conflict.resource,
|
|
178
|
+
work: nonEmpty(uniqueWork(conflict.work), 'Resource dependency conflict requires work.')
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function caseBoundaryRecords(entry) {
|
|
183
|
+
return caseResourceOwnershipBoundaries({
|
|
184
|
+
id: entry.id,
|
|
185
|
+
resourceAttachments: entry.testCase.resourceAttachments,
|
|
186
|
+
workId: entry.workId
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const sharedResourceScopes = new Set(['per-file', 'per-run', 'per-suite']);
|
|
190
|
+
function isSharedBoundary(boundary) {
|
|
191
|
+
return sharedResourceScopes.has(boundary.scope);
|
|
192
|
+
}
|
|
193
|
+
function recordSharedBoundaries(entry, boundaries) {
|
|
194
|
+
return caseBoundaryRecords(entry).reduce(function addSharedBoundary(updatedBoundaries, boundary) {
|
|
195
|
+
if (!isSharedBoundary(boundary)) {
|
|
196
|
+
return updatedBoundaries;
|
|
197
|
+
}
|
|
198
|
+
const record = updatedBoundaries.get(boundary.key) ?? { boundary, work: [] };
|
|
199
|
+
return mapWith(updatedBoundaries, boundary.key, {
|
|
200
|
+
boundary,
|
|
201
|
+
work: [...record.work, entry.workId]
|
|
202
|
+
});
|
|
203
|
+
}, boundaries);
|
|
204
|
+
}
|
|
205
|
+
function sharedBoundaryWork(plan) {
|
|
206
|
+
let boundaries = new Map();
|
|
207
|
+
for (const entry of collectedRunCaseEntries(plan)) {
|
|
208
|
+
boundaries = recordSharedBoundaries(entry, boundaries);
|
|
209
|
+
}
|
|
210
|
+
return Array.from(boundaries.values(), function boundaryRecord(record) {
|
|
211
|
+
return { boundary: record.boundary, work: uniqueWork(record.work) };
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function unitsByWork(units) {
|
|
215
|
+
return new Map(units.flatMap(function unitWorkEntries(unit) {
|
|
216
|
+
return unit.work.map(function unitWorkEntry(work) {
|
|
217
|
+
return [workIdentityKey(work), unit];
|
|
218
|
+
});
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
function boundaryUnits(boundary, units) {
|
|
222
|
+
const unitsById = new Map(boundary.work.flatMap(function boundaryUnit(work) {
|
|
223
|
+
const unit = units.get(workIdentityKey(work));
|
|
224
|
+
return unit === undefined ? [] : [[stableJson(unit.id), unit]];
|
|
225
|
+
}));
|
|
226
|
+
return Array.from(unitsById.values());
|
|
227
|
+
}
|
|
228
|
+
function projectionConflicts(plan, units, workerCount) {
|
|
229
|
+
const indexedUnits = unitsByWork(units);
|
|
230
|
+
return sharedBoundaryWork(plan).flatMap(function boundaryConflict(record) {
|
|
231
|
+
const owners = boundaryUnits(record, indexedUnits);
|
|
232
|
+
const usesFreshWorker = owners.some(function unitUsesFreshWorker(unit) {
|
|
233
|
+
return unit.workerLifecycle === 'fresh-worker-per-unit';
|
|
234
|
+
});
|
|
235
|
+
const spansUnitsWithoutOneReusableLane = owners.length > 1 && (workerCount > 1 || usesFreshWorker);
|
|
236
|
+
const needsProjection = record.boundary.scope === 'per-run' || spansUnitsWithoutOneReusableLane;
|
|
237
|
+
if (!needsProjection || record.boundary.handleTransport === 'projected') {
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
return [{
|
|
241
|
+
boundaryKey: record.boundary.key,
|
|
242
|
+
kind: 'resource-projection-required',
|
|
243
|
+
resource: {
|
|
244
|
+
name: record.boundary.resourceName,
|
|
245
|
+
scope: record.boundary.scope
|
|
246
|
+
},
|
|
247
|
+
work: nonEmpty(record.work, 'Resource projection conflict requires work.')
|
|
248
|
+
}];
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
function lifecycleConflicts(units) {
|
|
252
|
+
const unitsByConstraint = new Map();
|
|
253
|
+
for (const unit of units) {
|
|
254
|
+
for (const constraint of hardConstraintKeys(unit.resourceConstraints)) {
|
|
255
|
+
const constrainedUnits = unitsByConstraint.get(constraint) ?? [];
|
|
256
|
+
constrainedUnits.push(unit);
|
|
257
|
+
unitsByConstraint.set(constraint, constrainedUnits);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return Array
|
|
261
|
+
.from(unitsByConstraint, function lifecycleConflict([constraint, constrainedUnits]) {
|
|
262
|
+
const lifecycleSet = new Set(constrainedUnits.map(function unitLifecycle(unit) {
|
|
263
|
+
return unit.workerLifecycle;
|
|
264
|
+
}));
|
|
265
|
+
const lifecycles = Array.from(lifecycleSet);
|
|
266
|
+
return lifecycles.length <= 1 ? [] : [{
|
|
267
|
+
constraint,
|
|
268
|
+
kind: 'worker-lifecycle',
|
|
269
|
+
lifecycles: nonEmpty(lifecycles, 'Worker lifecycle conflict requires lifecycles.'),
|
|
270
|
+
units: nonEmpty(constrainedUnits.map(function conflictingUnit(unit) {
|
|
271
|
+
return unit.id;
|
|
272
|
+
}), 'Worker lifecycle conflict requires units.')
|
|
273
|
+
}];
|
|
274
|
+
})
|
|
275
|
+
.flat();
|
|
276
|
+
}
|
|
277
|
+
function workerCapacityConflict(input) {
|
|
278
|
+
if (input.workerCount.resolved >= input.requiredLifecycleLanes) {
|
|
279
|
+
return [];
|
|
280
|
+
}
|
|
281
|
+
const lifecycleSet = new Set(input.units.map(function unitLifecycle(unit) {
|
|
282
|
+
return unit.workerLifecycle;
|
|
283
|
+
}));
|
|
284
|
+
const lifecycles = Array.from(lifecycleSet);
|
|
285
|
+
return [{
|
|
286
|
+
available: input.workerCount.resolved,
|
|
287
|
+
kind: 'worker-capacity',
|
|
288
|
+
lifecycles: nonEmpty(lifecycles, 'Worker capacity conflict requires lifecycles.'),
|
|
289
|
+
required: input.requiredLifecycleLanes
|
|
290
|
+
}];
|
|
291
|
+
}
|
|
292
|
+
function conflictKey(conflict) {
|
|
293
|
+
return `${conflict.kind}:${stableJson(conflict)}`;
|
|
294
|
+
}
|
|
295
|
+
function sortedConflicts(conflicts) {
|
|
296
|
+
return conflicts.toSorted(function compareConflicts(left, right) {
|
|
297
|
+
return conflictKey(left).localeCompare(conflictKey(right));
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
export function collectedPlanCompatibilityConflicts(plan) {
|
|
301
|
+
return sortedConflicts([...identityConflicts(plan), ...dependencyScopeConflicts(plan)]);
|
|
302
|
+
}
|
|
303
|
+
export function executionPlanCompatibilityConflicts(input) {
|
|
304
|
+
return sortedConflicts([
|
|
305
|
+
...collectedPlanCompatibilityConflicts(input.selectedPlan),
|
|
306
|
+
...projectionConflicts(input.selectedPlan, input.units, input.workerCount.resolved),
|
|
307
|
+
...lifecycleConflicts(input.units),
|
|
308
|
+
...workerCapacityConflict(input)
|
|
309
|
+
]);
|
|
310
|
+
}
|
|
311
|
+
function singleReuseLane(units, lanes) {
|
|
312
|
+
const lane = lanes[0];
|
|
313
|
+
const allUnitsReuseWorkers = units.every(function unitReusesWorker(unit) {
|
|
314
|
+
return unit.workerLifecycle === 'reuse';
|
|
315
|
+
});
|
|
316
|
+
return lanes.length === 1 && lane !== undefined && allUnitsReuseWorkers
|
|
317
|
+
? lane
|
|
318
|
+
: null;
|
|
319
|
+
}
|
|
320
|
+
function infrastructureOwner() {
|
|
321
|
+
return { id: 'resource-owner', kind: 'infrastructure-worker' };
|
|
322
|
+
}
|
|
323
|
+
function ownerPlacement(record, ownerUnits, reusableLane) {
|
|
324
|
+
if (record.boundary.scope === 'per-run') {
|
|
325
|
+
return reusableLane === null
|
|
326
|
+
? infrastructureOwner()
|
|
327
|
+
: { kind: 'executor-lane', lane: reusableLane.id };
|
|
328
|
+
}
|
|
329
|
+
const onlyUnit = ownerUnits[0];
|
|
330
|
+
if (ownerUnits.length === 1 && onlyUnit !== undefined) {
|
|
331
|
+
return { kind: 'work-unit', unit: onlyUnit.id };
|
|
332
|
+
}
|
|
333
|
+
return reusableLane === null
|
|
334
|
+
? infrastructureOwner()
|
|
335
|
+
: { kind: 'executor-lane', lane: reusableLane.id };
|
|
336
|
+
}
|
|
337
|
+
export function createResourceOwnershipPlan(input) {
|
|
338
|
+
const indexedUnits = unitsByWork(input.units);
|
|
339
|
+
const reusableLane = singleReuseLane(input.units, input.lanes);
|
|
340
|
+
const owners = sharedBoundaryWork(input.selectedPlan)
|
|
341
|
+
.map(function plannedOwner(record) {
|
|
342
|
+
const ownerUnits = boundaryUnits(record, indexedUnits);
|
|
343
|
+
return {
|
|
344
|
+
boundaryKey: record.boundary.key,
|
|
345
|
+
placement: ownerPlacement(record, ownerUnits, reusableLane),
|
|
346
|
+
resourceName: record.boundary.resourceName,
|
|
347
|
+
scope: record.boundary.scope,
|
|
348
|
+
work: nonEmpty(record.work, 'Resource owner requires work.')
|
|
349
|
+
};
|
|
350
|
+
})
|
|
351
|
+
.toSorted(function compareOwners(left, right) {
|
|
352
|
+
return left.boundaryKey.localeCompare(right.boundaryKey);
|
|
353
|
+
});
|
|
354
|
+
return { owners };
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=execution-plan-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-plan-resolution.js","sourceRoot":"","sources":["../../../../source/run/execution-plan-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,20 @@ const permissionDiagnosticsCapabilities = {
|
|
|
15
15
|
function permissionDiagnosticsPhase(loadComplete) {
|
|
16
16
|
return loadComplete ? 'out-of-test' : 'load';
|
|
17
17
|
}
|
|
18
|
+
function permissionWasDropped(message) {
|
|
19
|
+
return typeof message === 'object' && message !== null && Reflect.get(message, 'drop') === true;
|
|
20
|
+
}
|
|
21
|
+
function ignorePermissionDropDiagnostics(recordDiagnostic) {
|
|
22
|
+
return function recordPermissionDenial(message) {
|
|
23
|
+
if (!permissionWasDropped(message)) {
|
|
24
|
+
recordDiagnostic(message);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
18
28
|
export function createPermissionDiagnosticsSubscriptions(activeCaseStorage, phase, recordError) {
|
|
19
29
|
return Object.entries(permissionDiagnosticsCapabilities).map(function subscribeToPermissionChannel([name, capability]) {
|
|
20
30
|
const channel = diagnosticsChannel.channel(name);
|
|
21
|
-
const listener = function recordDiagnostic(message) {
|
|
31
|
+
const listener = ignorePermissionDropDiagnostics(function recordDiagnostic(message) {
|
|
22
32
|
const activeCase = activeCaseStorage.getStore();
|
|
23
33
|
recordError(permissionDeniedRunnerErrorFromDiagnostic({
|
|
24
34
|
channel: name,
|
|
@@ -32,7 +42,7 @@ export function createPermissionDiagnosticsSubscriptions(activeCaseStorage, phas
|
|
|
32
42
|
hook: null,
|
|
33
43
|
phase: activeCase === undefined ? phase() : 'body'
|
|
34
44
|
}));
|
|
35
|
-
};
|
|
45
|
+
});
|
|
36
46
|
channel.subscribe(listener);
|
|
37
47
|
return {
|
|
38
48
|
unsubscribe() {
|