@overkill-dev/run 0.0.78 → 0.0.79

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 (106) hide show
  1. package/bench/benchmark-host-snapshot.d.ts +18 -0
  2. package/bench/benchmark-host-snapshot.d.ts.map +1 -1
  3. package/bench/benchmark-host-snapshot.js +20 -0
  4. package/bench/benchmark-host-snapshot.js.map +1 -1
  5. package/bench/benchmark-run-report.js +13 -5
  6. package/bench/benchmark-run-report.js.map +1 -1
  7. package/config/config.d.ts.map +1 -1
  8. package/config/config.js +1 -0
  9. package/config/config.js.map +1 -1
  10. package/config/schema.d.ts +8 -0
  11. package/config/schema.d.ts.map +1 -1
  12. package/config/schema.js +1 -0
  13. package/config/schema.js.map +1 -1
  14. package/config/snapshot.js +1 -0
  15. package/config/snapshot.js.map +1 -1
  16. package/config/types.d.ts +2 -0
  17. package/config/types.d.ts.map +1 -1
  18. package/config/validation.js +5 -0
  19. package/config/validation.js.map +1 -1
  20. package/engine/benchmark-garbage-collection.d.ts +13 -0
  21. package/engine/benchmark-garbage-collection.d.ts.map +1 -0
  22. package/engine/benchmark-garbage-collection.js +4 -0
  23. package/engine/benchmark-garbage-collection.js.map +1 -0
  24. package/engine/benchmark-node.d.ts +3 -0
  25. package/engine/benchmark-node.d.ts.map +1 -1
  26. package/engine/benchmark-result.d.ts +63 -0
  27. package/engine/benchmark-result.d.ts.map +1 -1
  28. package/engine/benchmark-result.js +2 -0
  29. package/engine/benchmark-result.js.map +1 -0
  30. package/engine/case-body-execution.js +43 -1
  31. package/engine/case-body-execution.js.map +1 -1
  32. package/engine/case-execution.d.ts.map +1 -1
  33. package/engine/case-execution.js +8 -37
  34. package/engine/case-execution.js.map +1 -1
  35. package/engine/execution-options.d.ts.map +1 -1
  36. package/engine/execution-options.js +2 -2
  37. package/engine/execution-options.js.map +1 -1
  38. package/engine/execution-supervision-state.js +6 -0
  39. package/engine/execution-supervision-state.js.map +1 -1
  40. package/engine/execution-supervision.d.ts +2 -0
  41. package/engine/execution-supervision.d.ts.map +1 -1
  42. package/engine/execution-supervision.js +2 -7
  43. package/engine/execution-supervision.js.map +1 -1
  44. package/engine/execution.d.ts.map +1 -1
  45. package/engine/execution.js +2 -1
  46. package/engine/execution.js.map +1 -1
  47. package/package.json +2 -1
  48. package/packages/run/run.entry-point.d.ts +3 -2
  49. package/packages/run/run.entry-point.d.ts.map +1 -1
  50. package/readme.md +11 -5
  51. package/run/benchmark-definition-schema.js +2 -1
  52. package/run/benchmark-definition-schema.js.map +1 -1
  53. package/run/benchmark-execution-environment.js +21 -0
  54. package/run/benchmark-execution-environment.js.map +1 -0
  55. package/run/benchmark-garbage-collection.js +29 -0
  56. package/run/benchmark-garbage-collection.js.map +1 -0
  57. package/run/benchmark-placement.js +101 -0
  58. package/run/benchmark-placement.js.map +1 -0
  59. package/run/benchmark-report-metadata.js +4 -2
  60. package/run/benchmark-report-metadata.js.map +1 -1
  61. package/run/benchmark-result-schema.js +87 -18
  62. package/run/benchmark-result-schema.js.map +1 -1
  63. package/run/collected-placement.js +85 -0
  64. package/run/collected-placement.js.map +1 -0
  65. package/run/default-run-engine.js +1 -0
  66. package/run/default-run-engine.js.map +1 -1
  67. package/run/execution-session-supervised.js +13 -2
  68. package/run/execution-session-supervised.js.map +1 -1
  69. package/run/node-run-execution.js +1 -0
  70. package/run/node-run-execution.js.map +1 -1
  71. package/run/run-collected-planning.js +19 -61
  72. package/run/run-collected-planning.js.map +1 -1
  73. package/run/run-collected-resolution.js +3 -1
  74. package/run/run-collected-resolution.js.map +1 -1
  75. package/run/run-command-schema.js +1 -0
  76. package/run/run-command-schema.js.map +1 -1
  77. package/run/run-facts.js +23 -8
  78. package/run/run-facts.js.map +1 -1
  79. package/run/run-host-process.js +1 -1
  80. package/run/run-host-process.js.map +1 -1
  81. package/run/run-isolated-command.js +2 -0
  82. package/run/run-isolated-command.js.map +1 -1
  83. package/run/run-local-planning.js +4 -0
  84. package/run/run-local-planning.js.map +1 -1
  85. package/run/run-types.d.ts +4 -2
  86. package/run/run-types.d.ts.map +1 -1
  87. package/run/run-types.js.map +1 -1
  88. package/run/supervised-child-execution.js +7 -1
  89. package/run/supervised-child-execution.js.map +1 -1
  90. package/run/supervised-child-process.js +1 -1
  91. package/run/supervised-child-process.js.map +1 -1
  92. package/run/supervised-child.js +1 -1
  93. package/run/supervised-child.js.map +1 -1
  94. package/run/supervised-protocol.js.map +1 -1
  95. package/run/worker-execution-engine.js +21 -0
  96. package/run/worker-execution-engine.js.map +1 -0
  97. package/run/worker-pool-command.js +1 -0
  98. package/run/worker-pool-command.js.map +1 -1
  99. package/run/worker-pool-lanes.js +1 -1
  100. package/run/worker-pool-lanes.js.map +1 -1
  101. package/run/worker-pool-placement-planning.js +3 -2
  102. package/run/worker-pool-placement-planning.js.map +1 -1
  103. package/run/worker-pool-protocol.js.map +1 -1
  104. package/run/worker-pool-worker.js +3 -15
  105. package/run/worker-pool-worker.js.map +1 -1
  106. package/software-bill-of-materials.cyclonedx.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-execution-environment.js","sourceRoot":"","sources":["../../../../source/run/benchmark-execution-environment.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mCAAmC,CAC/C,MAA+C,EAC/C,QAA2D;IAE3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAC9B,OAAO;QACH,wBAAwB,EAAE,MAAM;QAChC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU;YACrE,CAAC,CAAC;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO;oBACH,OAAO,EAAE,CAAC;gBACd,CAAC;aACJ;YACD,CAAC,CAAC;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,8FAA8F;aACzG;KACR,CAAC;AACN,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { resolveBenchmarkGarbageCollection } from "../engine/benchmark-garbage-collection.js";
2
+ import { invalidRequest } from "./run-errors.js";
3
+ function requiresGarbageCollection(cases, profile) {
4
+ return cases.some(function requestsCollection({ testCase }) {
5
+ const request = testCase.benchmark?.lifecycle?.garbageCollection ?? 'off';
6
+ return testCase.skipReason === null && resolveBenchmarkGarbageCollection(request, profile) === 'after-sample';
7
+ });
8
+ }
9
+ function garbageCollectionArguments(nodeArguments) {
10
+ if (nodeArguments.some(function disablesGarbageCollection(argument) {
11
+ return /^--no[-_]?expose[-_]gc$/u.test(argument);
12
+ })) {
13
+ invalidRequest('Requested benchmark garbage collection conflicts with a GC-disable host argument.');
14
+ }
15
+ const exposed = nodeArguments.some(function exposesGarbageCollection(argument) {
16
+ return argument.replaceAll('_', '-') === '--expose-gc';
17
+ });
18
+ return exposed ? nodeArguments : [...nodeArguments, '--expose-gc'];
19
+ }
20
+ export function resolveBenchmarkGarbageCollectionHost(hostProcess, profile, cases) {
21
+ if (!requiresGarbageCollection(cases, profile)) {
22
+ return hostProcess;
23
+ }
24
+ return {
25
+ kind: 'child',
26
+ nodeArguments: garbageCollectionArguments(hostProcess.kind === 'child' ? hostProcess.nodeArguments : [])
27
+ };
28
+ }
29
+ //# sourceMappingURL=benchmark-garbage-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-garbage-collection.js","sourceRoot":"","sources":["../../../../source/run/benchmark-garbage-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAI9F,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,SAAS,yBAAyB,CAAC,KAAqB,EAAE,OAAyC;IAC/F,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAE,QAAQ,EAAE;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,IAAI,KAAK,CAAC;QAC1E,OAAO,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,cAAc,CAAC;IAClH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,0BAA0B,CAAC,aAAgC;IAChE,IACI,aAAa,CAAC,IAAI,CAAC,SAAS,yBAAyB,CAAC,QAAQ;QAC1D,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,EACJ,CAAC;QACC,cAAc,CAAC,mFAAmF,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,wBAAwB,CAAC,QAAQ;QACzE,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,aAAa,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,GAAG,aAAa,EAAE,aAAa,CAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACjD,WAAwB,EACxB,OAAyC,EACzC,KAAqB;IAErB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,0BAA0B,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,CAAC;AACN,CAAC"}
@@ -0,0 +1,101 @@
1
+ const timingMetrics = new Set(['durationMicroseconds', 'operationsPerSecond']);
2
+ const percentScale = 100;
3
+ function parallelMeasurement(definition) {
4
+ if (definition?.kind !== 'bundle-size' || definition.measurement.collectors.length > 0) {
5
+ return false;
6
+ }
7
+ const metrics = [
8
+ ...definition.diagnostics,
9
+ ...Object.values(definition.budgets).flatMap(function budgetMetrics(budgets) {
10
+ return budgets.map(function metric(budget) {
11
+ return budget.metric;
12
+ });
13
+ })
14
+ ];
15
+ return metrics.every(function artifactMetric(name) {
16
+ return !timingMetrics.has(name);
17
+ });
18
+ }
19
+ function validPercentage(reading) {
20
+ return reading.availability === 'available' && Number.isFinite(reading.value) &&
21
+ reading.value >= 0 && reading.value <= percentScale;
22
+ }
23
+ function validCount(reading) {
24
+ return reading.availability === 'available' && Number.isSafeInteger(reading.value) && reading.value > 0;
25
+ }
26
+ function platformPressure(snapshot) {
27
+ const readings = snapshot.runtime.operatingSystem === 'linux'
28
+ ? [
29
+ snapshot.signals.linuxCpuStallPercent,
30
+ snapshot.signals.linuxMemoryStallPercent,
31
+ snapshot.signals.linuxIoStallPercent
32
+ ]
33
+ : [];
34
+ const throttling = snapshot.runtime.operatingSystem === 'darwin'
35
+ ? [snapshot.signals.darwinCpuSpeedPercent, snapshot.signals.darwinCpuSchedulerPercent]
36
+ : [];
37
+ return readings.some(function stalled(reading) {
38
+ return reading.availability === 'available' && (!validPercentage(reading) || reading.value > 0);
39
+ }) || throttling.some(function throttled(reading) {
40
+ return reading.availability === 'available' && (!validPercentage(reading) || reading.value < percentScale);
41
+ });
42
+ }
43
+ function observedLoad(reading) {
44
+ if (reading.availability === 'unavailable') {
45
+ return 0;
46
+ }
47
+ const load = reading.value[0];
48
+ return Number.isFinite(load) && load >= 0 ? load : null;
49
+ }
50
+ function cpuHeadroom(snapshot) {
51
+ const { availableParallelism, logicalCpuCount } = snapshot.capacity;
52
+ const { cpuBusyPercent } = snapshot.signals;
53
+ if (!validCount(availableParallelism) || !validCount(logicalCpuCount) || !validPercentage(cpuBusyPercent)) {
54
+ return null;
55
+ }
56
+ const load = observedLoad(snapshot.capacity.loadAverage);
57
+ if (load === null) {
58
+ return null;
59
+ }
60
+ const demand = Math.max(logicalCpuCount.value * cpuBusyPercent.value / percentScale, load);
61
+ return Math.max(1, Math.floor(availableParallelism.value - demand - 1));
62
+ }
63
+ function hostLimits(host) {
64
+ if (host === null) {
65
+ return [{ reason: 'uncalibrated', maximumWorkers: 1 }];
66
+ }
67
+ const { snapshot } = host;
68
+ const maximumWorkers = cpuHeadroom(snapshot);
69
+ const { availableMemoryPercent } = snapshot.signals;
70
+ if (maximumWorkers === null || !validPercentage(availableMemoryPercent)) {
71
+ return [{ reason: 'host-evidence', maximumWorkers: 1 }];
72
+ }
73
+ return [
74
+ { reason: 'cpu-headroom', maximumWorkers },
75
+ ...availableMemoryPercent.value === 0
76
+ ? [{ reason: 'memory-pressure', maximumWorkers: 1 }]
77
+ : [],
78
+ ...platformPressure(snapshot)
79
+ ? [{ reason: 'platform-pressure', maximumWorkers: 1 }]
80
+ : []
81
+ ];
82
+ }
83
+ export function resolveBenchmarkPlacement(input) {
84
+ const limits = [
85
+ ...input.definitions.every(parallelMeasurement)
86
+ ? []
87
+ : [{ reason: 'measurement', maximumWorkers: 1 }],
88
+ ...hostLimits(input.host),
89
+ ...input.processModel === 'supervised-process'
90
+ ? [{ reason: 'process-model', maximumWorkers: 1 }]
91
+ : []
92
+ ];
93
+ return {
94
+ policy: 'conservative-size-only-v1',
95
+ maximumWorkers: Math.min(...limits.map(function maximum(limit) {
96
+ return limit.maximumWorkers;
97
+ })),
98
+ limits
99
+ };
100
+ }
101
+ //# sourceMappingURL=benchmark-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-placement.js","sourceRoot":"","sources":["../../../../source/run/benchmark-placement.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,9 @@ export function withBenchmarkRunMetadata(result, facts, capturedAtMicroseconds)
32
32
  return result;
33
33
  }
34
34
  const metadata = {
35
- version: 2,
35
+ version: 3,
36
36
  host: facts.benchmarkHost,
37
+ placement: facts.benchmarkPlacement,
37
38
  node: facts.environment.node,
38
39
  calibration: facts.benchmarkCalibration,
39
40
  execution: {
@@ -53,8 +54,9 @@ export function withBenchmarkErrorMetadata(result, command, host) {
53
54
  return result;
54
55
  }
55
56
  const metadata = {
56
- version: 2,
57
+ version: 3,
57
58
  host,
59
+ placement: null,
58
60
  node: { arch: process.arch, platform: process.platform, version: process.version },
59
61
  calibration: null,
60
62
  execution: {
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-report-metadata.js","sourceRoot":"","sources":["../../../../source/run/benchmark-report-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark-report-metadata.js","sourceRoot":"","sources":["../../../../source/run/benchmark-report-metadata.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,26 @@
1
1
  import { z } from 'zod/v4';
2
+ import { benchmarkLifecycleVersion } from "../engine/benchmark-result.js";
2
3
  import { workloadIdSchema } from "../engine/identity-schema.js";
3
4
  import { minimumInferentialSamples, maximumRetainedSamples } from "../engine/benchmark-limits.js";
5
+ const minimumCooldownMilliseconds = 100;
6
+ const maximumCooldownMilliseconds = 60_000;
7
+ const legacyLifecyclePolicySchema = z.strictObject({
8
+ warmupSamples: z.number().int().min(0).max(maximumRetainedSamples),
9
+ cooldown: z.discriminatedUnion('mode', [
10
+ z.strictObject({ mode: z.literal('off') }),
11
+ z.strictObject({
12
+ mode: z.literal('runtime'),
13
+ maximumEventLoopUtilization: z.number().min(0).max(1),
14
+ timeoutMilliseconds: z.number().int().gt(minimumCooldownMilliseconds).max(maximumCooldownMilliseconds)
15
+ })
16
+ ])
17
+ });
18
+ export const benchmarkLifecyclePolicySchema = legacyLifecyclePolicySchema.extend({
19
+ garbageCollection: z.enum(['off', 'after-sample', 'profile-default']).default('off')
20
+ });
21
+ const resolvedLifecyclePolicySchema = legacyLifecyclePolicySchema.extend({
22
+ garbageCollection: z.enum(['off', 'after-sample'])
23
+ });
4
24
  export const budgetStatisticSchema = z.discriminatedUnion('kind', [
5
25
  z.strictObject({ kind: z.literal('quantile'), probability: z.number().gt(0).lt(1) }),
6
26
  z.strictObject({ kind: z.literal('mean'), range: z.strictObject({ minimum: z.number(), maximum: z.number() }) }),
@@ -14,25 +34,78 @@ export const samplingPolicySchema = z.strictObject({
14
34
  minimumSamples: z.number().int().min(minimumInferentialSamples),
15
35
  maximumSamples: z.number().int().min(minimumInferentialSamples).max(maximumRetainedSamples)
16
36
  });
37
+ const metricSummarySchema = z.strictObject({
38
+ count: z.number().int().nonnegative(),
39
+ minimum: z.number().nullable(),
40
+ maximum: z.number().nullable(),
41
+ mean: z.number().nullable(),
42
+ median: z.number().nullable(),
43
+ provenance: z.strictObject({
44
+ collector: z.string(),
45
+ scope: z.enum(['region', 'thread', 'process', 'runtime', 'custom']),
46
+ unit: z.string()
47
+ }),
48
+ unavailableReasons: z.array(z.string())
49
+ });
50
+ const rawSamplesSchema = z.strictObject({
51
+ status: z.enum(['recorded', 'omitted', 'truncated']),
52
+ reference: z.string().nullable(),
53
+ reason: z.string().nullable()
54
+ });
55
+ const legacyLifecycleResultSchema = z.strictObject({
56
+ version: z.literal(1),
57
+ policy: legacyLifecyclePolicySchema,
58
+ warmup: z.strictObject({
59
+ samples: z.number().int().nonnegative(),
60
+ metrics: z.record(z.string(), metricSummarySchema),
61
+ rawSamples: rawSamplesSchema
62
+ }),
63
+ cleanup: z.strictObject({ callbacks: z.number().int().nonnegative(), failures: z.number().int().nonnegative() }),
64
+ cooldown: z.discriminatedUnion('mode', [
65
+ z.strictObject({ mode: z.literal('off') }),
66
+ z.strictObject({
67
+ mode: z.literal('runtime'),
68
+ strategy: z.literal('event-loop-utilization-v1'),
69
+ completed: z.number().int().nonnegative(),
70
+ windows: z.number().int().nonnegative(),
71
+ durationMicroseconds: z.number().nonnegative(),
72
+ lastUtilization: z.number().min(0).max(1).nullable(),
73
+ outcome: z.enum(['pending', 'settled', 'timed-out', 'cancelled', 'unavailable'])
74
+ })
75
+ ])
76
+ });
77
+ const lifecycleResultSchema = z.union([
78
+ legacyLifecycleResultSchema.extend({
79
+ version: z.literal(benchmarkLifecycleVersion),
80
+ policy: resolvedLifecyclePolicySchema,
81
+ garbageCollection: z
82
+ .discriminatedUnion('mode', [
83
+ z.strictObject({ mode: z.literal('off') }),
84
+ z.strictObject({
85
+ mode: z.literal('after-sample'),
86
+ completed: z.number().int().nonnegative(),
87
+ failures: z.number().int().nonnegative()
88
+ })
89
+ ])
90
+ .nullable()
91
+ }),
92
+ legacyLifecycleResultSchema.transform(function historicalGarbageCollection(value) {
93
+ return {
94
+ ...value,
95
+ version: benchmarkLifecycleVersion,
96
+ policy: { ...value.policy, garbageCollection: 'off' },
97
+ garbageCollection: null
98
+ };
99
+ })
100
+ ]);
17
101
  export const benchmarkResultSchema = z.strictObject({
102
+ lifecycle: lifecycleResultSchema.nullable().default(null),
18
103
  workload: workloadIdSchema,
19
104
  policy: samplingPolicySchema,
20
105
  samples: z.number().int().nonnegative(),
21
106
  status: z.enum(['sampling', 'complete', 'incomplete']),
22
107
  assumption: z.literal('independent-stationary-observations'),
23
- metrics: z.record(z.string(), z.strictObject({
24
- count: z.number().int().nonnegative(),
25
- minimum: z.number().nullable(),
26
- maximum: z.number().nullable(),
27
- mean: z.number().nullable(),
28
- median: z.number().nullable(),
29
- provenance: z.strictObject({
30
- collector: z.string(),
31
- scope: z.enum(['region', 'thread', 'process', 'runtime', 'custom']),
32
- unit: z.string()
33
- }),
34
- unavailableReasons: z.array(z.string())
35
- })),
108
+ metrics: z.record(z.string(), metricSummarySchema),
36
109
  budgets: z.array(z.strictObject({
37
110
  metric: z.string(),
38
111
  statistic: budgetStatisticSchema,
@@ -43,10 +116,6 @@ export const benchmarkResultSchema = z.strictObject({
43
116
  precise: z.boolean(),
44
117
  decision: z.enum(['pass', 'fail', 'undecided', 'unavailable'])
45
118
  })),
46
- rawSamples: z.strictObject({
47
- status: z.enum(['recorded', 'omitted', 'truncated']),
48
- reference: z.string().nullable(),
49
- reason: z.string().nullable()
50
- })
119
+ rawSamples: rawSamplesSchema
51
120
  });
52
121
  //# sourceMappingURL=benchmark-result-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-result-schema.js","sourceRoot":"","sources":["../../../../source/run/benchmark-result-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAElG,MAAM,CAAC,MAAM,qBAAqB,GAA+B,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC1F,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IAChH,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC3C,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;IACjE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAC/D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;CAC9F,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwC,CAAC,CAAC,YAAY,CAAC;IACrF,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAE,CAAC;IACxD,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,qCAAqC,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,CACb,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,YAAY,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;YACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAE,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC1C,CAAC,CACL;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAE,CAAC;KACnE,CAAC,CAAC;IACH,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAE,CAAC;QACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"benchmark-result-schema.js","sourceRoot":"","sources":["../../../../source/run/benchmark-result-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { emptyWorkUnitResourceConstraints } from "./run-types.js";
2
+ import { collectedRunCaseEntriesFromWorkUnits, createWorkerPoolPlacementResolution } from "./worker-pool-placement-planning.js";
3
+ import { workUnitsFromCollectedPlan } from "./work-unit-planning.js";
4
+ function fileSetForDiscoveredFiles(files) {
5
+ const fileSets = new Map(files.map(function toFileSetEntry(file) {
6
+ return [file.file, file.fileSet];
7
+ }));
8
+ return function fileSetForFile(file) {
9
+ return file === null ? null : fileSets.get(file) ?? null;
10
+ };
11
+ }
12
+ function workerPoolAssignmentPolicy(profile) {
13
+ return profile.execution.processModel === 'worker-pool'
14
+ ? profile.execution.assignmentPolicy
15
+ : 'case-count-balanced';
16
+ }
17
+ function workDistribution(profile) {
18
+ return profile.execution.processModel === 'worker-pool'
19
+ ? profile.execution.workDistribution
20
+ : { mode: 'file' };
21
+ }
22
+ function workerLifecycle(profile) {
23
+ return profile.execution.processModel === 'worker-pool'
24
+ ? profile.execution.workerLifecycle
25
+ : 'reuse';
26
+ }
27
+ function profileMaximumWorkers(profile) {
28
+ return profile.execution.processModel === 'worker-pool'
29
+ ? profile.execution.maxWorkers
30
+ : null;
31
+ }
32
+ function selectedBenchmarkDefinition(entry) {
33
+ const summary = entry.testCase.benchmark;
34
+ const workload = entry.workId.workload?.name;
35
+ if (summary === null || workload === undefined) {
36
+ return summary;
37
+ }
38
+ const budgets = summary.budgets[workload];
39
+ return budgets === undefined ? null : { ...summary, budgets: { [workload]: budgets } };
40
+ }
41
+ export async function benchmarkPlacementForCases(input, entries) {
42
+ if (input.profile.testFamily !== 'benchmark') {
43
+ return null;
44
+ }
45
+ const { resolveBenchmarkPlacement } = await import("./benchmark-placement.js");
46
+ return resolveBenchmarkPlacement({
47
+ definitions: entries.map(selectedBenchmarkDefinition),
48
+ host: input.benchmarkHost,
49
+ processModel: input.profile.execution.processModel
50
+ });
51
+ }
52
+ export async function createPlacementResolution(input, shardHasher) {
53
+ if (input.planKind !== 'worker-pool') {
54
+ return null;
55
+ }
56
+ const units = workUnitsFromCollectedPlan({
57
+ runConstraints: emptyWorkUnitResourceConstraints,
58
+ fileSetForFile: fileSetForDiscoveredFiles(input.files),
59
+ order: input.request.order,
60
+ seed: input.request.seed,
61
+ selectedPlan: input.collectedPlan,
62
+ shard: input.request.shard,
63
+ shardHasher,
64
+ scheduling: input.profile.execution.scheduling,
65
+ workDistribution: workDistribution(input.profile),
66
+ workerLifecycle: workerLifecycle(input.profile)
67
+ });
68
+ const entries = collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, units);
69
+ const benchmarkPlacement = await benchmarkPlacementForCases(input, entries);
70
+ return {
71
+ ...createWorkerPoolPlacementResolution({
72
+ units,
73
+ maximumWorkers: benchmarkPlacement?.maximumWorkers ?? null,
74
+ assignmentPolicy: workerPoolAssignmentPolicy(input.profile),
75
+ availableParallelism: input.dependencies.availableParallelism,
76
+ durationHistoryIndex: input.durationHistoryIndex,
77
+ nowMilliseconds: input.dependencies.wallClock.currentUnixEpochMilliseconds,
78
+ profileMaximumWorkers: profileMaximumWorkers(input.profile),
79
+ requestedWorkers: input.request.workers,
80
+ selectedPlan: input.collectedPlan
81
+ }),
82
+ benchmarkPlacement
83
+ };
84
+ }
85
+ //# sourceMappingURL=collected-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collected-placement.js","sourceRoot":"","sources":["../../../../source/run/collected-placement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAkC,MAAM,gBAAgB,CAAC;AAIlG,OAAO,EACH,oCAAoC,EACpC,mCAAmC,EAItC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAqBrE,SAAS,yBAAyB,CAAC,KAAgC;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,IAAI;QAC3D,OAAO,CAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC;IACvC,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,SAAS,cAAc,CAAC,IAAI;QAC/B,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7D,CAAC,CAAC;AACN,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAsB;IACtD,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,aAAa;QACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB;QACpC,CAAC,CAAC,qBAAqB,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAsB;IAC5C,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,aAAa;QACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB;QACpC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,OAAsB;IAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,aAAa;QACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe;QACnC,CAAC,CAAC,OAAO,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAsB;IACjD,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,aAAa;QACnD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU;QAC9B,CAAC,CAAC,IAAI,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA4B;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC5C,KAAkC,EAClC,OAAyC;IAEzC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC/E,OAAO,yBAAyB,CAAC;QAC7B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACrD,IAAI,EAAE,KAAK,CAAC,aAAa;QACzB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY;KACrD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,KAAkC,EAClC,WAAkC;IAElC,IAAI,KAAK,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACrC,cAAc,EAAE,gCAAgC;QAChD,cAAc,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC;QACtD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QACxB,YAAY,EAAE,KAAK,CAAC,aAAa;QACjC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,WAAW;QACX,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU;QAC9C,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;QACjD,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;KAClD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,oCAAoC,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,MAAM,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO;QACH,GAAG,mCAAmC,CAAC;YACnC,KAAK;YACL,cAAc,EAAE,kBAAkB,EAAE,cAAc,IAAI,IAAI;YAC1D,gBAAgB,EAAE,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3D,oBAAoB,EAAE,KAAK,CAAC,YAAY,CAAC,oBAAoB;YAC7D,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,4BAA4B;YAC1E,qBAAqB,EAAE,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3D,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;YACvC,YAAY,EAAE,KAAK,CAAC,aAAa;SACpC,CAAC;QACF,kBAAkB;KACrB,CAAC;AACN,CAAC"}
@@ -17,6 +17,7 @@ function createEngineDependencies() {
17
17
  const wallClock = createClock();
18
18
  return {
19
19
  execute: createExecute({
20
+ benchmarkEnvironment: null,
20
21
  asyncLeakDiagnostics: 'enabled',
21
22
  readActiveResourceTypes,
22
23
  reporterDispatcher: createReporterDispatcher({
@@ -1 +1 @@
1
- {"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAEhC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;IACvD,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
1
+ {"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAEhC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;IACvD,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
@@ -7,6 +7,9 @@ import { withExecutionSession } from "./execution-session-context.js";
7
7
  import { runExecutionFailure } from "./execution-failure.js";
8
8
  function readExecutionData(observation, message) {
9
9
  const decoded = envelopeMessage(message, supervisedChildCorrelationId, supervisedChildMessageSchema);
10
+ if (decoded?.kind === 'result') {
11
+ observation.result.write(decoded.result);
12
+ }
10
13
  if (decoded?.kind !== 'execution-data') {
11
14
  return;
12
15
  }
@@ -63,14 +66,22 @@ function observedReply(result, call, observation) {
63
66
  if (!observation.delivered.read()) {
64
67
  return missingDataReply(result, call);
65
68
  }
66
- return { kind: 'result', result, data: observation.data.read(), deadlineExceeded: false };
69
+ const completed = observation.result.read();
70
+ const selected = completed === null ? result : {
71
+ ...result,
72
+ bySuite: completed.bySuite,
73
+ planStatus: completed.planStatus,
74
+ summary: { ...result.summary, planned: completed.summary.planned }
75
+ };
76
+ return { kind: 'result', result: selected, data: observation.data.read(), deadlineExceeded: false };
67
77
  }
68
78
  export async function runSupervisedExecutionSession(options, dependencies, call) {
69
79
  const observation = {
70
80
  data: createStoredValue(null),
71
81
  delivered: createStoredValue(false),
72
82
  failure: createStoredValue(null),
73
- invalid: new AbortController()
83
+ invalid: new AbortController(),
84
+ result: createStoredValue(null)
74
85
  };
75
86
  const operations = createRunOperations(observedDependencies(dependencies, observation), 'test');
76
87
  const signal = AbortSignal.any([call.signal, observation.invalid.signal]);
@@ -1 +1 @@
1
- {"version":3,"file":"execution-session-supervised.js","sourceRoot":"","sources":["../../../../source/run/execution-session-supervised.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-session-supervised.js","sourceRoot":"","sources":["../../../../source/run/execution-session-supervised.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export function createNodeExecutionDependencies(input) {
14
14
  return createWorkerPoolWithHostProcess(options, input.readEnvironment(), input.startWorkerPoolHost);
15
15
  },
16
16
  execute: createExecute({
17
+ benchmarkEnvironment: null,
17
18
  asyncLeakDiagnostics: 'enabled',
18
19
  readActiveResourceTypes,
19
20
  reporterDispatcher: input.reporterDispatcher,
@@ -1 +1 @@
1
- {"version":3,"file":"node-run-execution.js","sourceRoot":"","sources":["../../../../source/run/node-run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAenE,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAyB;IACrE,OAAO;QACH,yBAAyB,CAAC,OAAO;YAC7B,OAAO,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,gBAAgB,CAAC,OAAO;YACpB,OAAO,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC;QACF,iBAAiB,EAAE,mBAAmB,EAAE;KAC3C,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"node-run-execution.js","sourceRoot":"","sources":["../../../../source/run/node-run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAenE,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAyB;IACrE,OAAO;QACH,yBAAyB,CAAC,OAAO;YAC7B,OAAO,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,gBAAgB,CAAC,OAAO;YACpB,OAAO,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC;QACF,iBAAiB,EAAE,mBAAmB,EAAE;KAC3C,CAAC;AACN,CAAC"}
@@ -1,68 +1,11 @@
1
+ import { hostProcessFacts } from "./run-host-process.js";
1
2
  import { createRunShardHasher, shardCollectedRunPlanCases } from "./run-sharding.js";
2
3
  import { orderedRunItems } from "./run-ordering.js";
3
- import { emptyWorkUnitResourceConstraints } from "./run-types.js";
4
- import { collectedRunCaseEntriesFromWorkUnits, createWorkerPoolPlacementResolution } from "./worker-pool-placement-planning.js";
4
+ import { collectedRunCaseEntriesFromWorkUnits } from "./worker-pool-placement-planning.js";
5
5
  import { constrainedScheduling, workResourceConstraints } from "./work-unit-resource-constraints.js";
6
6
  import { assertCollectedPlanCompatible } from "./execution-plan-resolution.js";
7
7
  import { resolveRunScheduling } from "./run-profile-facts.js";
8
- function fileSetForDiscoveredFiles(files) {
9
- const fileSets = new Map(files.map(function toFileSetEntry(file) {
10
- return [file.file, file.fileSet];
11
- }));
12
- return function fileSetForFile(file) {
13
- return file === null ? null : fileSets.get(file) ?? null;
14
- };
15
- }
16
- function workerPoolAssignmentPolicy(profile) {
17
- return profile.execution.processModel === 'worker-pool'
18
- ? profile.execution.assignmentPolicy
19
- : 'case-count-balanced';
20
- }
21
- function workDistribution(profile) {
22
- return profile.execution.processModel === 'worker-pool'
23
- ? profile.execution.workDistribution
24
- : { mode: 'file' };
25
- }
26
- function workerLifecycle(profile) {
27
- return profile.execution.processModel === 'worker-pool'
28
- ? profile.execution.workerLifecycle
29
- : 'reuse';
30
- }
31
- function profileMaximumWorkers(profile) {
32
- return profile.execution.processModel === 'worker-pool'
33
- ? profile.execution.maxWorkers
34
- : null;
35
- }
36
- function createPlacementResolution(input, shardHasher) {
37
- if (input.planKind !== 'worker-pool') {
38
- return null;
39
- }
40
- const runConstraints = input.profile.testFamily === 'benchmark'
41
- ? {
42
- ...emptyWorkUnitResourceConstraints,
43
- serialKeys: ['run:benchmark-serialization'],
44
- singleWorkerKeys: ['run:benchmark-serialization']
45
- }
46
- : emptyWorkUnitResourceConstraints;
47
- return createWorkerPoolPlacementResolution({
48
- runConstraints,
49
- assignmentPolicy: workerPoolAssignmentPolicy(input.profile),
50
- availableParallelism: input.dependencies.availableParallelism,
51
- durationHistoryIndex: input.durationHistoryIndex,
52
- fileSetForFile: fileSetForDiscoveredFiles(input.files),
53
- nowMilliseconds: input.dependencies.wallClock.currentUnixEpochMilliseconds,
54
- order: input.request.order,
55
- profileMaximumWorkers: profileMaximumWorkers(input.profile),
56
- requestedWorkers: input.request.workers,
57
- seed: input.request.seed,
58
- selectedPlan: input.collectedPlan,
59
- shard: input.request.shard,
60
- shardHasher,
61
- scheduling: input.profile.execution.scheduling,
62
- workDistribution: workDistribution(input.profile),
63
- workerLifecycle: workerLifecycle(input.profile)
64
- });
65
- }
8
+ import { benchmarkPlacementForCases, createPlacementResolution } from "./collected-placement.js";
66
9
  function orderedCollectedCases(input, placementPlan, shardHasher) {
67
10
  if (placementPlan !== null) {
68
11
  return collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, placementPlan.units);
@@ -78,12 +21,23 @@ function resolvedScheduling(input, orderedCases) {
78
21
  }), input.collectedPlan);
79
22
  return constrainedScheduling(resolveRunScheduling(input.request, input.profile), constraints);
80
23
  }
24
+ async function resolveCollectedHost(input, cases) {
25
+ if (input.profile.execution.processModel !== 'worker-pool') {
26
+ return null;
27
+ }
28
+ let { hostProcess } = input.profile.execution;
29
+ if (input.profile.testFamily === 'benchmark') {
30
+ const { resolveBenchmarkGarbageCollectionHost } = await import("./benchmark-garbage-collection.js");
31
+ hostProcess = resolveBenchmarkGarbageCollectionHost(hostProcess, input.profile.garbageCollection, cases);
32
+ }
33
+ return hostProcessFacts(hostProcess);
34
+ }
81
35
  export async function createCollectedExecutionPlan(input) {
82
36
  if (input.planKind === 'supervised') {
83
37
  assertCollectedPlanCompatible(input.collectedPlan);
84
38
  }
85
39
  const shardHasher = await createRunShardHasher(input.request.shard);
86
- const placementResolution = createPlacementResolution(input, shardHasher);
40
+ const placementResolution = await createPlacementResolution(input, shardHasher);
87
41
  const planningFacts = placementResolution ?? {
88
42
  durationHistory: null,
89
43
  placementPlan: null,
@@ -92,6 +46,10 @@ export async function createCollectedExecutionPlan(input) {
92
46
  const { placementPlan, workerCount } = planningFacts;
93
47
  const orderedCases = orderedCollectedCases(input, placementPlan, shardHasher);
94
48
  return {
49
+ hostProcess: await resolveCollectedHost(input, orderedCases),
50
+ benchmarkPlacement: placementResolution === null
51
+ ? await benchmarkPlacementForCases(input, orderedCases)
52
+ : placementResolution.benchmarkPlacement,
95
53
  durationHistory: planningFacts.durationHistory,
96
54
  orderedCases,
97
55
  placementPlan,