@overkill-dev/run 0.0.37 → 0.0.39
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/compare/serialized-value.d.ts +1 -1
- package/compare/serialized-value.d.ts.map +1 -1
- package/compare/serialized-value.js +4 -2
- package/compare/serialized-value.js.map +1 -1
- package/engine/assertion-recorder.js +12 -3
- package/engine/assertion-recorder.js.map +1 -1
- package/engine/async-control.d.ts +33 -0
- package/engine/async-control.d.ts.map +1 -0
- package/engine/async-control.js +153 -0
- package/engine/async-control.js.map +1 -0
- package/engine/async-leak-diagnostics.d.ts +20 -0
- package/engine/async-leak-diagnostics.d.ts.map +1 -0
- package/engine/async-leak-diagnostics.js +157 -0
- package/engine/async-leak-diagnostics.js.map +1 -0
- package/engine/case-execution.d.ts +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +127 -65
- package/engine/case-execution.js.map +1 -1
- package/engine/engine.d.ts +2 -1
- package/engine/engine.d.ts.map +1 -1
- package/engine/engine.js +1 -0
- package/engine/engine.js.map +1 -1
- package/engine/execution-async-leak-policy.d.ts +24 -0
- package/engine/execution-async-leak-policy.d.ts.map +1 -0
- package/engine/execution-async-leak-policy.js +56 -0
- package/engine/execution-async-leak-policy.js.map +1 -0
- package/engine/execution-options.d.ts +26 -0
- package/engine/execution-options.d.ts.map +1 -0
- package/engine/execution-options.js +25 -0
- package/engine/execution-options.js.map +1 -0
- package/engine/execution-resource-tracked-cases.js +35 -0
- package/engine/execution-resource-tracked-cases.js.map +1 -0
- package/engine/execution-result.js +16 -0
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.js +2 -2
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts +7 -20
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +49 -85
- package/engine/execution.js.map +1 -1
- package/engine/node-assertion-error.js +47 -0
- package/engine/node-assertion-error.js.map +1 -0
- package/engine/run-result.d.ts +19 -1
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-body-resource-attachment.js +8 -0
- package/engine/test-body-resource-attachment.js.map +1 -0
- package/engine/test-node.d.ts +28 -1
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +24 -2
- package/engine/test-node.js.map +1 -1
- package/engine/test-plan.js +1 -1
- package/engine/test-plan.js.map +1 -1
- package/engine/test-scope-lifecycle.js +63 -0
- package/engine/test-scope-lifecycle.js.map +1 -0
- package/engine/throwing-test-scope.js +27 -0
- package/engine/throwing-test-scope.js.map +1 -0
- package/package.json +10 -3
- package/packages/engine/engine.entry-point.js +12 -3
- package/packages/engine/engine.entry-point.js.map +1 -1
- package/packages/run/run.entry-point.d.ts +1 -1
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/readme.md +10 -4
- package/reporters/line-failure-rendering.js +1 -1
- package/reporters/line-failure-rendering.js.map +1 -1
- package/run/default-run-engine.d.ts.map +1 -1
- package/run/default-run-engine.js +6 -0
- package/run/default-run-engine.js.map +1 -1
- package/run/run-collected-resolution.js +59 -0
- package/run/run-collected-resolution.js.map +1 -0
- package/run/run-config-schema.d.ts +30 -10
- package/run/run-config-schema.d.ts.map +1 -1
- package/run/run-config-schema.js +19 -6
- package/run/run-config-schema.js.map +1 -1
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +24 -4
- package/run/run-config.js.map +1 -1
- package/run/run-facts.js +27 -14
- package/run/run-facts.js.map +1 -1
- package/run/run-isolated-command.js +63 -0
- package/run/run-isolated-command.js.map +1 -0
- package/run/run-list-renderer.js +1 -1
- package/run/run-list-renderer.js.map +1 -1
- package/run/run-local-resolution.js +62 -0
- package/run/run-local-resolution.js.map +1 -0
- package/run/run-orchestrator-dependencies.d.ts +18 -0
- package/run/run-orchestrator-dependencies.d.ts.map +1 -1
- package/run/run-orchestrator.d.ts.map +1 -1
- package/run/run-orchestrator.js +7 -0
- package/run/run-orchestrator.js.map +1 -1
- package/run/run-process-engine.js +15 -9
- package/run/run-process-engine.js.map +1 -1
- package/run/run-selection.js +9 -0
- package/run/run-selection.js.map +1 -1
- package/run/run-support.js +8 -1
- package/run/run-support.js.map +1 -1
- package/run/run-types.d.ts +23 -5
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/run.js +69 -154
- package/run/run.js.map +1 -1
- package/run/supervised-child-test-plan.js +4 -1
- package/run/supervised-child-test-plan.js.map +1 -1
- package/run/supervised-child.js +5 -0
- package/run/supervised-child.js.map +1 -1
- package/run/supervised-run.js.map +1 -1
- package/run/tinypool-node-compatibility.js +15 -0
- package/run/tinypool-node-compatibility.js.map +1 -0
- package/run/worker-pool-collection.js +96 -0
- package/run/worker-pool-collection.js.map +1 -0
- package/run/worker-pool-execution.js +342 -0
- package/run/worker-pool-execution.js.map +1 -0
- package/run/worker-pool-output.js +87 -0
- package/run/worker-pool-output.js.map +1 -0
- package/run/worker-pool-results.js +98 -0
- package/run/worker-pool-results.js.map +1 -0
- package/run/worker-pool-run.js +33 -0
- package/run/worker-pool-run.js.map +1 -0
- package/run/worker-pool-runtime.js +106 -0
- package/run/worker-pool-runtime.js.map +1 -0
- package/run/worker-pool-worker-plan.js +54 -0
- package/run/worker-pool-worker-plan.js.map +1 -0
- package/run/worker-pool-worker.js +95 -0
- package/run/worker-pool-worker.js.map +1 -0
- package/sbom.cdx.json +21 -4
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { defineReporter } from "../packages/engine/engine.entry-point.js";
|
|
2
|
+
function ignoredLine() {
|
|
3
|
+
return undefined;
|
|
4
|
+
}
|
|
5
|
+
function outputBuffer(chunk) {
|
|
6
|
+
return Buffer.from(chunk);
|
|
7
|
+
}
|
|
8
|
+
function selectedStream(streamName) {
|
|
9
|
+
return streamName === 'stdout' ? process.stdout : process.stderr;
|
|
10
|
+
}
|
|
11
|
+
function replaceStreamWrite(streamName, write) {
|
|
12
|
+
const stream = selectedStream(streamName);
|
|
13
|
+
const originalWrite = stream.write.bind(stream);
|
|
14
|
+
stream.write = write;
|
|
15
|
+
return function restoreStream() {
|
|
16
|
+
stream.write = originalWrite;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function invokeWriteCallbacks(encodingOrCallback, callback) {
|
|
20
|
+
if (typeof encodingOrCallback === 'function') {
|
|
21
|
+
encodingOrCallback(null);
|
|
22
|
+
}
|
|
23
|
+
callback?.(null);
|
|
24
|
+
}
|
|
25
|
+
function captureStream(streamName, task, wallClock) {
|
|
26
|
+
function writeCapturedOutput(chunk, encodingOrCallback, callback) {
|
|
27
|
+
const output = {
|
|
28
|
+
capturedAtMilliseconds: wallClock.currentTimestampInMilliseconds,
|
|
29
|
+
chunk: outputBuffer(chunk),
|
|
30
|
+
kind: 'output',
|
|
31
|
+
stream: streamName
|
|
32
|
+
};
|
|
33
|
+
task.port.postMessage(output, []);
|
|
34
|
+
invokeWriteCallbacks(encodingOrCallback, callback);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return replaceStreamWrite(streamName, writeCapturedOutput);
|
|
38
|
+
}
|
|
39
|
+
export function captureOutput(task, wallClock) {
|
|
40
|
+
const restoreStdout = captureStream('stdout', task, wallClock);
|
|
41
|
+
const restoreStderr = captureStream('stderr', task, wallClock);
|
|
42
|
+
return {
|
|
43
|
+
restore() {
|
|
44
|
+
restoreStdout();
|
|
45
|
+
restoreStderr();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function suppressStream(streamName) {
|
|
50
|
+
function writeSuppressedOutput(_chunk, encodingOrCallback, callback) {
|
|
51
|
+
invokeWriteCallbacks(encodingOrCallback, callback);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return replaceStreamWrite(streamName, writeSuppressedOutput);
|
|
55
|
+
}
|
|
56
|
+
export function suppressOutput() {
|
|
57
|
+
const restoreStdout = suppressStream('stdout');
|
|
58
|
+
const restoreStderr = suppressStream('stderr');
|
|
59
|
+
return {
|
|
60
|
+
restore() {
|
|
61
|
+
restoreStdout();
|
|
62
|
+
restoreStderr();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function createWorkerPoolReporter(task) {
|
|
67
|
+
return defineReporter(function createWorkerPoolRuntimeReporter() {
|
|
68
|
+
return {
|
|
69
|
+
dispose: null,
|
|
70
|
+
kind: 'real-time',
|
|
71
|
+
name: 'worker-pool-thread',
|
|
72
|
+
onEvent(event) {
|
|
73
|
+
if (event.kind !== 'run-start' && event.kind !== 'run-end') {
|
|
74
|
+
const message = { event, kind: 'event' };
|
|
75
|
+
task.port.postMessage(message, []);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
onFinish: null,
|
|
79
|
+
sinks: [{ kind: 'memory' }]
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export const silentOutputSinks = {
|
|
84
|
+
stderr: { writeLine: ignoredLine },
|
|
85
|
+
stdout: { writeLine: ignoredLine }
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=worker-pool-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-output.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { caseIdentityKey } from "../engine/identity.js";
|
|
2
|
+
import { collectedRunCaseEntries, createRunResultFromCollectedPlan } from "./collected-run-plan.js";
|
|
3
|
+
import { createReporterDelivery } from "./supervised-run-runtime.js";
|
|
4
|
+
import { workerPoolCollectedPlan } from "./worker-pool-runtime.js";
|
|
5
|
+
function taskArtifacts(runtime) {
|
|
6
|
+
return Array.from(runtime.activeTasks).flatMap(function toArtifacts(taskRun) {
|
|
7
|
+
return taskRun.state.artifacts();
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function allTaskArtifacts(completedTaskRuns) {
|
|
11
|
+
return completedTaskRuns.flatMap(function toArtifacts(taskRun) {
|
|
12
|
+
return taskRun.state.artifacts();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function allTaskErrors(runtime, completedTaskRuns) {
|
|
16
|
+
return [
|
|
17
|
+
...runtime.collectionRunnerErrors,
|
|
18
|
+
...runtime.runState.runnerErrors(),
|
|
19
|
+
...completedTaskRuns.flatMap(function toErrors(taskRun) {
|
|
20
|
+
return taskRun.state.runnerErrors();
|
|
21
|
+
}),
|
|
22
|
+
...runtime.taskResults.flatMap(function toErrors(result) {
|
|
23
|
+
return result.runnerErrors;
|
|
24
|
+
})
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
function orderedPerTest(collectedPlan, perTest) {
|
|
28
|
+
const results = new Map(perTest.map(function toEntry(result) {
|
|
29
|
+
return [caseIdentityKey(result.id), result];
|
|
30
|
+
}));
|
|
31
|
+
return collectedRunCaseEntries(collectedPlan).flatMap(function toResult(entry) {
|
|
32
|
+
const result = results.get(caseIdentityKey(entry.id));
|
|
33
|
+
return result === undefined ? [] : [result];
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function resultWithArtifacts(result, artifacts) {
|
|
37
|
+
if (artifacts.length === 0) {
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...result,
|
|
42
|
+
artifacts: [...result.artifacts, ...artifacts]
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function finishPoolResourceUsage(runtime) {
|
|
46
|
+
return runtime.poolResourceUsageTracker?.finish() ?? null;
|
|
47
|
+
}
|
|
48
|
+
async function reportFinalResult(result, runtime) {
|
|
49
|
+
const runEndErrors = await runtime.reporterDelivery.reportEvent({ kind: 'run-end', result });
|
|
50
|
+
const resultForFinalReporting = {
|
|
51
|
+
...result,
|
|
52
|
+
runnerErrors: [...result.runnerErrors, ...runEndErrors]
|
|
53
|
+
};
|
|
54
|
+
const finalReporterErrors = await runtime.reporterDelivery.reportResult(resultForFinalReporting);
|
|
55
|
+
const disposeErrors = await runtime.reporterDelivery.disposeReporters();
|
|
56
|
+
return {
|
|
57
|
+
...resultForFinalReporting,
|
|
58
|
+
runnerErrors: [...resultForFinalReporting.runnerErrors, ...finalReporterErrors, ...disposeErrors]
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export async function finishWorkerPoolRun(runtime, completedTaskRuns, startedAtMilliseconds) {
|
|
62
|
+
await runtime.reporterEvents.wait();
|
|
63
|
+
const perTest = orderedPerTest(runtime.collectedPlan, [
|
|
64
|
+
...completedTaskRuns.flatMap(function toPerTest(taskRun) {
|
|
65
|
+
return taskRun.state.perTestResults();
|
|
66
|
+
}),
|
|
67
|
+
...runtime.taskResults.flatMap(function toPerTest(result) {
|
|
68
|
+
return result.perTest;
|
|
69
|
+
})
|
|
70
|
+
]);
|
|
71
|
+
const result = resultWithArtifacts(createRunResultFromCollectedPlan(runtime.collectedPlan, perTest, allTaskErrors(runtime, completedTaskRuns), {
|
|
72
|
+
resourceUsage: finishPoolResourceUsage(runtime),
|
|
73
|
+
startedAtMs: startedAtMilliseconds,
|
|
74
|
+
wallClock: runtime.dependencies.wallClock
|
|
75
|
+
}), [...runtime.runState.artifacts(), ...allTaskArtifacts(completedTaskRuns), ...taskArtifacts(runtime)]);
|
|
76
|
+
return await reportFinalResult(result, runtime);
|
|
77
|
+
}
|
|
78
|
+
export async function createEmptyWorkerPoolResult(resolvedRun, dependencies, collectionRunState) {
|
|
79
|
+
const reporterDelivery = await createReporterDelivery(resolvedRun, dependencies);
|
|
80
|
+
const startedAtMilliseconds = dependencies.wallClock.currentTimestampInMilliseconds;
|
|
81
|
+
const result = resultWithArtifacts(createRunResultFromCollectedPlan(workerPoolCollectedPlan(resolvedRun), [], [...resolvedRun.collectionRunnerErrors, ...collectionRunState.runnerErrors()], {
|
|
82
|
+
resourceUsage: null,
|
|
83
|
+
startedAtMs: startedAtMilliseconds,
|
|
84
|
+
wallClock: dependencies.wallClock
|
|
85
|
+
}), collectionRunState.artifacts());
|
|
86
|
+
const runEndErrors = await reporterDelivery.reportEvent({ kind: 'run-end', result });
|
|
87
|
+
const resultForFinalReporting = {
|
|
88
|
+
...result,
|
|
89
|
+
runnerErrors: [...result.runnerErrors, ...runEndErrors]
|
|
90
|
+
};
|
|
91
|
+
const finalReporterErrors = await reporterDelivery.reportResult(resultForFinalReporting);
|
|
92
|
+
const disposeErrors = await reporterDelivery.disposeReporters();
|
|
93
|
+
return {
|
|
94
|
+
...resultForFinalReporting,
|
|
95
|
+
runnerErrors: [...resultForFinalReporting.runnerErrors, ...finalReporterErrors, ...disposeErrors]
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=worker-pool-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-results.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createSupervisedRunState } from "./supervised-run-state.js";
|
|
2
|
+
import { collectInWorkerPool } from "./worker-pool-collection.js";
|
|
3
|
+
import { executeWorkerPoolUnits, reportRunStart, startPoolResourceTracking } from "./worker-pool-execution.js";
|
|
4
|
+
import { createEmptyWorkerPoolResult, finishWorkerPoolRun } from "./worker-pool-results.js";
|
|
5
|
+
import { createWorkerPoolRuntime, fileUnits, workerPoolCollectedPlan } from "./worker-pool-runtime.js";
|
|
6
|
+
export async function collectWorkerPoolRun(command, dependencies) {
|
|
7
|
+
return await collectInWorkerPool(command, dependencies, createSupervisedRunState());
|
|
8
|
+
}
|
|
9
|
+
async function executeWorkerPoolRunWithState(resolvedRun, dependencies, collectionRunState) {
|
|
10
|
+
if (fileUnits(workerPoolCollectedPlan(resolvedRun)).length === 0) {
|
|
11
|
+
return await createEmptyWorkerPoolResult(resolvedRun, dependencies, collectionRunState);
|
|
12
|
+
}
|
|
13
|
+
const runtime = await createWorkerPoolRuntime(resolvedRun, dependencies, resolvedRun.collectionRunnerErrors, collectionRunState);
|
|
14
|
+
const startedAtMilliseconds = dependencies.wallClock.currentTimestampInMilliseconds;
|
|
15
|
+
try {
|
|
16
|
+
await reportRunStart(runtime, startedAtMilliseconds);
|
|
17
|
+
startPoolResourceTracking(runtime);
|
|
18
|
+
const completedTaskRuns = await executeWorkerPoolUnits(runtime, fileUnits(runtime.collectedPlan), startedAtMilliseconds);
|
|
19
|
+
return await finishWorkerPoolRun(runtime, completedTaskRuns, startedAtMilliseconds);
|
|
20
|
+
}
|
|
21
|
+
finally {
|
|
22
|
+
await runtime.pool.destroy();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function executeWorkerPoolRun(resolvedRun, dependencies) {
|
|
26
|
+
return await executeWorkerPoolRunWithState(resolvedRun, dependencies, createSupervisedRunState());
|
|
27
|
+
}
|
|
28
|
+
export async function runWorkerPoolCommand(command, dependencies, createResolvedRun) {
|
|
29
|
+
const collectionRunState = createSupervisedRunState();
|
|
30
|
+
const collection = await collectInWorkerPool(command, dependencies, collectionRunState);
|
|
31
|
+
return await executeWorkerPoolRunWithState(createResolvedRun(collection), dependencies, collectionRunState);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=worker-pool-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-run.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,wBAAwB,EAE3B,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACH,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,uBAAuB,EACvB,SAAS,EACT,uBAAuB,EAE1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,OAA0B,EAC1B,YAAyC;IAEzC,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,6BAA6B,CACxC,WAAwB,EACxB,YAAyC,EACzC,kBAAsC;IAEtC,IAAI,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,MAAM,2BAA2B,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CACzC,WAAW,EACX,YAAY,EACZ,WAAW,CAAC,sBAAsB,EAClC,kBAAkB,CACrB,CAAC;IACF,MAAM,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;IAEpF,IAAI,CAAC;QACD,MAAM,cAAc,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACrD,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAClD,OAAO,EACP,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAChC,qBAAqB,CACxB,CAAC;QAEF,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IACxF,CAAC;YAAS,CAAC;QACP,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,WAAwB,EACxB,YAAyC;IAEzC,OAAO,MAAM,6BAA6B,CAAC,WAAW,EAAE,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,OAA0B,EAC1B,YAAyC,EACzC,iBAA0E;IAE1E,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAExF,OAAO,MAAM,6BAA6B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAChH,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import { createCaseId } from "../engine/identity.js";
|
|
3
|
+
import { createReporterDelivery, createReporterEventQueue } from "./supervised-run-runtime.js";
|
|
4
|
+
import { createStoredRunValue } from "./supervised-run-state.js";
|
|
5
|
+
import { loadTinypoolConstructor } from "./tinypool-node-compatibility.js";
|
|
6
|
+
import { runTask as workerPoolWorkerEntryPoint } from "./worker-pool-worker.js";
|
|
7
|
+
const Tinypool = loadTinypoolConstructor();
|
|
8
|
+
const maximumWorkerCount = 8;
|
|
9
|
+
function workerPoolEntryPointHref(entryPoint) {
|
|
10
|
+
const entryPointWorkerName = entryPoint.worker.name;
|
|
11
|
+
const workerPoolEntryPointUrl = new URL('./worker-pool-worker.ts', import.meta.url);
|
|
12
|
+
return workerPoolEntryPointUrl.href + entryPointWorkerName.slice(0, 0);
|
|
13
|
+
}
|
|
14
|
+
const workerPoolEntryPoint = workerPoolEntryPointHref({
|
|
15
|
+
compatibility: null,
|
|
16
|
+
worker: workerPoolWorkerEntryPoint
|
|
17
|
+
});
|
|
18
|
+
export function runStartTimeFromMilliseconds(milliseconds) {
|
|
19
|
+
const startedAt = new Date(milliseconds);
|
|
20
|
+
return startedAt.toISOString();
|
|
21
|
+
}
|
|
22
|
+
function defaultWorkerCount(unitCount) {
|
|
23
|
+
if (unitCount === 0) {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
return Math.min(Math.max(os.availableParallelism() - 1, 1), maximumWorkerCount, unitCount);
|
|
27
|
+
}
|
|
28
|
+
function isolateWorkers(options) {
|
|
29
|
+
return options.workerLifecycle === 'fresh-worker-per-unit';
|
|
30
|
+
}
|
|
31
|
+
export function createTinypoolWorkerPool(options) {
|
|
32
|
+
return new Tinypool({
|
|
33
|
+
concurrentTasksPerWorker: 1,
|
|
34
|
+
filename: options.filename,
|
|
35
|
+
isolateWorkers: isolateWorkers(options),
|
|
36
|
+
maxThreads: options.workerCount,
|
|
37
|
+
minThreads: options.workerCount,
|
|
38
|
+
runtime: 'worker_threads'
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export function createPool(options) {
|
|
42
|
+
return createTinypoolWorkerPool({
|
|
43
|
+
...options,
|
|
44
|
+
filename: workerPoolEntryPoint
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export function workerPoolCollectedPlan(resolvedRun) {
|
|
48
|
+
if (resolvedRun.plan.kind !== 'worker-pool') {
|
|
49
|
+
throw new Error('Worker-pool execution requires a worker-pool collected plan.');
|
|
50
|
+
}
|
|
51
|
+
return resolvedRun.plan.collectedPlan;
|
|
52
|
+
}
|
|
53
|
+
function collectFileCaseIds(file) {
|
|
54
|
+
return file.cases.map(function toCaseId(testCase) {
|
|
55
|
+
return createCaseId(file.file, testCase.suitePath.map(function toSuiteTitle(entry) {
|
|
56
|
+
return entry.title;
|
|
57
|
+
}), testCase.title, testCase.params);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export function fileUnits(collectedPlan) {
|
|
61
|
+
return collectedPlan.files.map(function toFileUnit(file) {
|
|
62
|
+
return {
|
|
63
|
+
assignedCases: collectFileCaseIds(file),
|
|
64
|
+
file: file.file
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function createPoolResourceUsageTracker(resolvedRun, dependencies) {
|
|
69
|
+
if (!resolvedRun.facts.execution.resourceUsagePolicy.measure) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return dependencies.createResourceUsageTracker({
|
|
73
|
+
samplingIntervalMilliseconds: resolvedRun.facts.execution.resourceUsagePolicy.samplingIntervalMilliseconds
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function workerPoolExecutionFacts(resolvedRun) {
|
|
77
|
+
if (resolvedRun.facts.execution.processModel !== 'worker-pool') {
|
|
78
|
+
throw new Error('Worker-pool execution requires worker-pool execution facts.');
|
|
79
|
+
}
|
|
80
|
+
return resolvedRun.facts.execution;
|
|
81
|
+
}
|
|
82
|
+
export async function createWorkerPoolRuntime(resolvedRun, dependencies, collectionRunnerErrors, runState) {
|
|
83
|
+
const units = fileUnits(workerPoolCollectedPlan(resolvedRun));
|
|
84
|
+
const workerCount = defaultWorkerCount(units.length);
|
|
85
|
+
const execution = workerPoolExecutionFacts(resolvedRun);
|
|
86
|
+
const taskResults = [];
|
|
87
|
+
return {
|
|
88
|
+
activeTasks: new Set(),
|
|
89
|
+
collectedPlan: workerPoolCollectedPlan(resolvedRun),
|
|
90
|
+
collectionRunnerErrors,
|
|
91
|
+
dependencies,
|
|
92
|
+
pool: dependencies.createWorkerPool({
|
|
93
|
+
workerCount,
|
|
94
|
+
workerLifecycle: execution.workerLifecycle
|
|
95
|
+
}),
|
|
96
|
+
poolResourceUsageTracker: createPoolResourceUsageTracker(resolvedRun, dependencies),
|
|
97
|
+
previousPoolSample: createStoredRunValue(null),
|
|
98
|
+
reporterDelivery: await createReporterDelivery(resolvedRun, dependencies),
|
|
99
|
+
reporterEvents: createReporterEventQueue(),
|
|
100
|
+
resolvedRun,
|
|
101
|
+
runState,
|
|
102
|
+
taskResults,
|
|
103
|
+
terminalFailure: createStoredRunValue(false)
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=worker-pool-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-runtime.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAC;AAgBlE,OAAO,EACH,sBAAsB,EACtB,wBAAwB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,oBAAoB,EAGvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,uBAAuB,EAG1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AAyD3C,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAM7B,SAAS,wBAAwB,CAAC,UAAqC;IACnE,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IACpD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpF,OAAO,uBAAuB,CAAC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;IAClD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,0BAA0B;CACrC,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAAC,YAAoB;IAC7D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IACzC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAC/F,CAAC;AAQD,SAAS,cAAc,CAAC,OAAkC;IACtD,OAAO,OAAO,CAAC,eAAe,KAAK,uBAAuB,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAkC;IACvE,OAAO,IAAI,QAAQ,CAAC;QAChB,wBAAwB,EAAE,CAAC;QAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC;QACvC,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,UAAU,EAAE,OAAO,CAAC,WAAW;QAC/B,OAAO,EAAE,gBAAgB;KAC5B,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAkC;IACzD,OAAO,wBAAwB,CAAC;QAC5B,GAAG,OAAO;QACV,QAAQ,EAAE,oBAAoB;KACjC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAwB;IAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAsB;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,QAAQ;QAC5C,OAAO,YAAY,CACf,IAAI,CAAC,IAAI,EACT,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,KAAK;YAC9C,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,EACF,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,MAAM,CAClB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,aAA+B;IACrD,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,IAAI;QACnD,OAAO;YACH,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,8BAA8B,CACnC,WAAwB,EACxB,YAAyC;IAEzC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,YAAY,CAAC,0BAA0B,CAAC;QAC3C,4BAA4B,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,4BAA4B;KAC7G,CAAC,CAAC;AACP,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAwB;IACtD,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,WAAwB,EACxB,YAAyC,EACzC,sBAA8C,EAC9C,QAA4B;IAE5B,MAAM,KAAK,GAAG,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,WAAW,GAAgB,EAAE,CAAC;IAEpC,OAAO;QACH,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,aAAa,EAAE,uBAAuB,CAAC,WAAW,CAAC;QACnD,sBAAsB;QACtB,YAAY;QACZ,IAAI,EAAE,YAAY,CAAC,gBAAgB,CAAC;YAChC,WAAW;YACX,eAAe,EAAE,SAAS,CAAC,eAAe;SAC7C,CAAC;QACF,wBAAwB,EAAE,8BAA8B,CAAC,WAAW,EAAE,YAAY,CAAC;QACnF,kBAAkB,EAAE,oBAAoB,CAA+B,IAAI,CAAC;QAC5E,gBAAgB,EAAE,MAAM,sBAAsB,CAAC,WAAW,EAAE,YAAY,CAAC;QACzE,cAAc,EAAE,wBAAwB,EAAE;QAC1C,WAAW;QACX,QAAQ;QACR,WAAW;QACX,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC;KAC/C,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { caseIdentityKey } from "../engine/identity.js";
|
|
2
|
+
import { collectedRunPlanFromTestPlan, createRunResultFromCollectedPlan } from "./collected-run-plan.js";
|
|
3
|
+
import { defaultRunEngine } from "./default-run-engine.js";
|
|
4
|
+
import { loadRunEngineModule, loadRunTestModules, runDiscovery } from "./node-run-dependencies.entry-point.js";
|
|
5
|
+
import { createRunTestPlan } from "./run-test-plan.js";
|
|
6
|
+
async function selectedEngine(command) {
|
|
7
|
+
return command.engine.kind === 'module' ? await loadRunEngineModule(command.engine) : defaultRunEngine;
|
|
8
|
+
}
|
|
9
|
+
async function createWorkerPoolTestPlan(command) {
|
|
10
|
+
return await createRunTestPlan({
|
|
11
|
+
cwd: command.cwd,
|
|
12
|
+
discoverRunFiles: runDiscovery.discoverRunFiles,
|
|
13
|
+
engine: await selectedEngine(command),
|
|
14
|
+
loadRunTestModules,
|
|
15
|
+
paths: command.paths,
|
|
16
|
+
testFamily: command.testFamily
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export async function collectTestPlan(command) {
|
|
20
|
+
return {
|
|
21
|
+
runnerErrors: [],
|
|
22
|
+
testPlan: await createWorkerPoolTestPlan(command)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function sendCollectedPlan(collectedPlan) {
|
|
26
|
+
return {
|
|
27
|
+
collectedPlan: collectedRunPlanFromTestPlan(collectedPlan.testPlan),
|
|
28
|
+
runnerErrors: collectedPlan.runnerErrors
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function selectedAssignedCases(testPlan, assignedCases) {
|
|
32
|
+
const assigned = new Set(assignedCases.map(caseIdentityKey));
|
|
33
|
+
const cases = testPlan.cases.filter(function assignedCase(testCase) {
|
|
34
|
+
return assigned.has(caseIdentityKey(testCase.id));
|
|
35
|
+
});
|
|
36
|
+
const firstCase = cases[0];
|
|
37
|
+
if (firstCase === undefined || cases.length !== assigned.size) {
|
|
38
|
+
throw new Error('Worker-pool test plan did not match assigned case identities.');
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...testPlan,
|
|
42
|
+
cases: [firstCase, ...cases.slice(1)]
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function createEmptyAssignmentResult(testPlan, wallClock, startedAtMilliseconds) {
|
|
46
|
+
return {
|
|
47
|
+
result: createRunResultFromCollectedPlan(collectedRunPlanFromTestPlan(testPlan), [], [], {
|
|
48
|
+
resourceUsage: null,
|
|
49
|
+
startedAtMs: startedAtMilliseconds,
|
|
50
|
+
wallClock
|
|
51
|
+
})
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=worker-pool-worker-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-worker-plan.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-worker-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EACH,4BAA4B,EAC5B,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAYvD,KAAK,UAAU,cAAc,CAAC,OAA0B;IACpD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAA0B;IAC9D,OAAO,MAAM,iBAAiB,CAAC;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,MAAM,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC;QACrC,kBAAkB;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC5D,OAAO;QACH,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC;KACpD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAA0C;IACxE,OAAO;QACH,aAAa,EAAE,4BAA4B,CAAC,aAAa,CAAC,QAAQ,CAAC;QACnE,YAAY,EAAE,aAAa,CAAC,YAAY;KAC3C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAkB,EAAE,aAAgC;IACtF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,YAAY,CAAC,QAAQ;QAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACH,GAAG,QAAQ;QACX,KAAK,EAAE,CAAE,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE;KAC1C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,2BAA2B,CACvC,QAAkB,EAClB,SAA6C,EAC7C,qBAA6B;IAE7B,OAAO;QACH,MAAM,EAAE,gCAAgC,CACpC,4BAA4B,CAAC,QAAQ,CAAC,EACtC,EAAE,EACF,EAAE,EACF;YACI,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,qBAAqB;YAClC,SAAS;SACZ,CACJ;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { createWallClock } from '@enormora/wall-clock';
|
|
2
|
+
import { createExecute } from "../engine/execution.js";
|
|
3
|
+
import { createReporterDispatcher } from "../engine/reporter-dispatcher.js";
|
|
4
|
+
import { createPlainOutputRenderer } from "../packages/engine/engine.entry-point.js";
|
|
5
|
+
import { createNodeResourceUsageTracker } from "./resource-usage.js";
|
|
6
|
+
import { captureOutput, createWorkerPoolReporter, silentOutputSinks, suppressOutput } from "./worker-pool-output.js";
|
|
7
|
+
import { collectTestPlan, createEmptyAssignmentResult, selectedAssignedCases, sendCollectedPlan } from "./worker-pool-worker-plan.js";
|
|
8
|
+
function executionMode(command) {
|
|
9
|
+
return command.scheduling === 'concurrent' ? 'concurrent-in-process' : 'serial-in-process';
|
|
10
|
+
}
|
|
11
|
+
function workerResourceBudgets(command) {
|
|
12
|
+
return {
|
|
13
|
+
activeResourceCount: command.resourceBudgets.activeResourceCount,
|
|
14
|
+
javaScriptEngineHeapBytes: command.resourceBudgets.javaScriptEngineHeapBytes,
|
|
15
|
+
residentSetBytes: null,
|
|
16
|
+
residentSetGrowthBytesPerSecond: null
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function createResourceUsageTracker(command) {
|
|
20
|
+
return createNodeResourceUsageTracker(createWallClock(), {
|
|
21
|
+
samplingIntervalMilliseconds: command.resourceUsageSamplingIntervalMilliseconds
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function startedAtIso(startedAtMilliseconds) {
|
|
25
|
+
const startedAt = new Date(startedAtMilliseconds);
|
|
26
|
+
return startedAt.toISOString();
|
|
27
|
+
}
|
|
28
|
+
function readActiveResourceTypes() {
|
|
29
|
+
return process.getActiveResourcesInfo();
|
|
30
|
+
}
|
|
31
|
+
async function collectAssignmentTestPlan(task) {
|
|
32
|
+
const bootstrapOutput = suppressOutput();
|
|
33
|
+
try {
|
|
34
|
+
return await collectTestPlan(task.command);
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
bootstrapOutput.restore();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function runAssignment(task, wallClock) {
|
|
41
|
+
const collectedPlan = await collectAssignmentTestPlan(task);
|
|
42
|
+
if (task.assignedCases.length === 0) {
|
|
43
|
+
return createEmptyAssignmentResult(collectedPlan.testPlan, wallClock, task.startedAtMilliseconds);
|
|
44
|
+
}
|
|
45
|
+
const outputCapture = captureOutput(task, wallClock);
|
|
46
|
+
const execute = createExecute({
|
|
47
|
+
asyncLeakDiagnostics: 'enabled',
|
|
48
|
+
readActiveResourceTypes,
|
|
49
|
+
reporterDispatcher: createReporterDispatcher({
|
|
50
|
+
...silentOutputSinks,
|
|
51
|
+
wallClock
|
|
52
|
+
}),
|
|
53
|
+
wallClock
|
|
54
|
+
});
|
|
55
|
+
try {
|
|
56
|
+
const result = await execute(selectedAssignedCases(collectedPlan.testPlan, task.assignedCases), {
|
|
57
|
+
execution: { mode: executionMode(task.command) },
|
|
58
|
+
outputRenderer: createPlainOutputRenderer(),
|
|
59
|
+
reporters: [createWorkerPoolReporter(task)],
|
|
60
|
+
resourceBudgets: workerResourceBudgets(task.command),
|
|
61
|
+
resourceUsageTracker: createResourceUsageTracker(task.command),
|
|
62
|
+
runtimePolicy: null,
|
|
63
|
+
runFacts: {},
|
|
64
|
+
startedAt: startedAtIso(task.startedAtMilliseconds),
|
|
65
|
+
timeoutPolicy: {
|
|
66
|
+
hardTimeoutMilliseconds: task.command.hardTimeoutMilliseconds,
|
|
67
|
+
timeoutMilliseconds: task.command.timeoutMilliseconds
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return { result };
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
outputCapture.restore();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export async function runTask(task) {
|
|
77
|
+
const wallClock = createWallClock();
|
|
78
|
+
if (task.kind === 'collect') {
|
|
79
|
+
const outputCapture = captureOutput(task, wallClock);
|
|
80
|
+
try {
|
|
81
|
+
return sendCollectedPlan(await collectTestPlan(task.command));
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
outputCapture.restore();
|
|
85
|
+
task.port.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
return await runAssignment(task, wallClock);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
task.port.close();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=worker-pool-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-worker.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-worker.ts"],"names":[],"mappings":"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"}
|
package/sbom.cdx.json
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"component": {
|
|
17
17
|
"type": "library",
|
|
18
18
|
"name": "@overkill-dev/run",
|
|
19
|
-
"version": "0.0.
|
|
20
|
-
"bom-ref": "pkg:npm/@overkill-dev/run@0.0.
|
|
21
|
-
"purl": "pkg:npm/@overkill-dev/run@0.0.
|
|
19
|
+
"version": "0.0.39",
|
|
20
|
+
"bom-ref": "pkg:npm/@overkill-dev/run@0.0.39",
|
|
21
|
+
"purl": "pkg:npm/@overkill-dev/run@0.0.39"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"components": [
|
|
@@ -113,6 +113,19 @@
|
|
|
113
113
|
],
|
|
114
114
|
"purl": "pkg:npm/string-width@8.2.2"
|
|
115
115
|
},
|
|
116
|
+
{
|
|
117
|
+
"type": "library",
|
|
118
|
+
"name": "tinypool",
|
|
119
|
+
"version": "2.1.2",
|
|
120
|
+
"bom-ref": "pkg:npm/tinypool@2.1.2",
|
|
121
|
+
"scope": "required",
|
|
122
|
+
"licenses": [
|
|
123
|
+
{
|
|
124
|
+
"expression": "MIT"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"purl": "pkg:npm/tinypool@2.1.2"
|
|
128
|
+
},
|
|
116
129
|
{
|
|
117
130
|
"type": "library",
|
|
118
131
|
"name": "yoctocolors",
|
|
@@ -145,7 +158,7 @@
|
|
|
145
158
|
"ref": "pkg:npm/@enormora/wall-clock@0.0.3"
|
|
146
159
|
},
|
|
147
160
|
{
|
|
148
|
-
"ref": "pkg:npm/@overkill-dev/run@0.0.
|
|
161
|
+
"ref": "pkg:npm/@overkill-dev/run@0.0.39",
|
|
149
162
|
"dependsOn": [
|
|
150
163
|
"pkg:npm/@enormora/wall-clock@0.0.3",
|
|
151
164
|
"pkg:npm/@schema-hub/zod-error-formatter@0.0.16",
|
|
@@ -154,6 +167,7 @@
|
|
|
154
167
|
"pkg:npm/figures@6.1.0",
|
|
155
168
|
"pkg:npm/pure-rand@8.4.2",
|
|
156
169
|
"pkg:npm/string-width@8.2.2",
|
|
170
|
+
"pkg:npm/tinypool@2.1.2",
|
|
157
171
|
"pkg:npm/yoctocolors@2.2.0",
|
|
158
172
|
"pkg:npm/zod@4.5.4"
|
|
159
173
|
]
|
|
@@ -176,6 +190,9 @@
|
|
|
176
190
|
{
|
|
177
191
|
"ref": "pkg:npm/string-width@8.2.2"
|
|
178
192
|
},
|
|
193
|
+
{
|
|
194
|
+
"ref": "pkg:npm/tinypool@2.1.2"
|
|
195
|
+
},
|
|
179
196
|
{
|
|
180
197
|
"ref": "pkg:npm/yoctocolors@2.2.0"
|
|
181
198
|
},
|