refactor(planning): remove the original decision trace
CI / policy (push) Successful in 7s
CI / validate (push) Successful in 1m15s
CI / test (push) Successful in 3m18s
CI / benchmark (push) Failing after 5m53s
CI / build (push) Successful in 1m23s
CI / security (push) Successful in 7m6s
CI / policy (pull_request) Successful in 7s
CI / validate (pull_request) Successful in 1m9s
CI / build (pull_request) Successful in 43s
CI / test (pull_request) Successful in 3m19s
CI / images (push) Successful in 3m7s
CI / required (push) Successful in 2s
CI / benchmark (pull_request) Failing after 5m28s
CI / security (pull_request) Successful in 6m37s
CI / images (pull_request) Successful in 3m18s
CI / required (pull_request) Successful in 1s
CI / policy (push) Successful in 7s
CI / validate (push) Successful in 1m15s
CI / test (push) Successful in 3m18s
CI / benchmark (push) Failing after 5m53s
CI / build (push) Successful in 1m23s
CI / security (push) Successful in 7m6s
CI / policy (pull_request) Successful in 7s
CI / validate (pull_request) Successful in 1m9s
CI / build (pull_request) Successful in 43s
CI / test (pull_request) Successful in 3m19s
CI / images (push) Successful in 3m7s
CI / required (push) Successful in 2s
CI / benchmark (pull_request) Failing after 5m28s
CI / security (pull_request) Successful in 6m37s
CI / images (pull_request) Successful in 3m18s
CI / required (pull_request) Successful in 1s
This commit is contained in:
1 parent
ea4256107f
commit
d9d9befa12
43 files changed
+729
-8880
No files matched your search
@@ -13,6 +13,8 @@ describe('calendar objectives in the real worker', () => {
|
||||
let directory: string;
|
||||
let bundle: string;
|
||||
const threads = new Set<NodeWorker>();
|
||||
const messages: string[] = [];
|
||||
let stopped = 0;
|
||||
|
||||
beforeAll(async () => {
|
||||
directory = mkdtempSync(join(tmpdir(), 'vac-calendar-worker-'));
|
||||
@@ -30,6 +32,8 @@ parentPort.on('message', (data) => globalThis.self.onmessage({ data }));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
messages.length = 0;
|
||||
stopped = 0;
|
||||
vi.setSystemTime(new Date('2024-04-01T12:00:00Z'));
|
||||
class BrowserWorker {
|
||||
onmessage: ((event: MessageEvent) => void) | null = null;
|
||||
@@ -37,13 +41,17 @@ parentPort.on('message', (data) => globalThis.self.onmessage({ data }));
|
||||
private readonly thread = new NodeWorker(bundle);
|
||||
constructor() {
|
||||
threads.add(this.thread);
|
||||
this.thread.on('message', (data) => this.onmessage?.({ data } as MessageEvent));
|
||||
this.thread.on('message', (data) => {
|
||||
messages.push(data.type);
|
||||
this.onmessage?.({ data } as MessageEvent);
|
||||
});
|
||||
this.thread.on('error', () => this.onerror?.());
|
||||
}
|
||||
postMessage(message: unknown) {
|
||||
this.thread.postMessage(message);
|
||||
}
|
||||
terminate() {
|
||||
stopped++;
|
||||
void this.thread.terminate();
|
||||
}
|
||||
}
|
||||
@@ -109,14 +117,19 @@ parentPort.on('message', (data) => globalThis.self.onmessage({ data }));
|
||||
if (explanation?.kind !== 'PlanExplanation')
|
||||
throw new Error('Expected a worker explanation');
|
||||
expect(explanation.placements[0].firstDecisiveObjective).toBe(first);
|
||||
expect((await calculation.trace)?.phases.map((phase) => phase.name)).toEqual([
|
||||
'validation',
|
||||
'obligations',
|
||||
first,
|
||||
`optimization:${rules[1].id}`,
|
||||
'expiry',
|
||||
'dates',
|
||||
]);
|
||||
await calculation.timings;
|
||||
expect(new Set(messages)).toEqual(
|
||||
new Set([
|
||||
'heartbeat',
|
||||
'progress',
|
||||
'checkpoint',
|
||||
'result',
|
||||
'explanation',
|
||||
'artifacts',
|
||||
]),
|
||||
);
|
||||
expect(messages.indexOf('result')).toBeLessThan(messages.indexOf('explanation'));
|
||||
expect(stopped).toBe(1);
|
||||
const comparison = await calculation.analyzeCounterfactual(plan.placements[0]);
|
||||
if (comparison.kind !== 'Counterfactual')
|
||||
throw new Error('Expected a worker comparison');
|
||||
@@ -169,29 +182,6 @@ parentPort.on('message', (data) => globalThis.self.onmessage({ data }));
|
||||
name: 'Captured supporting economy',
|
||||
configuration: OPTIMIZATION_PRESETS.supportingPlacements,
|
||||
});
|
||||
const trace = await calculation.trace;
|
||||
expect(trace?.phases.map(({ name }) => name)).toEqual([
|
||||
'validation',
|
||||
'obligations',
|
||||
`optimization:${rules[0].id}`,
|
||||
`optimization:${rules[1].id}`,
|
||||
'expiry',
|
||||
'dates',
|
||||
]);
|
||||
const candidates = trace?.phases.flatMap(({ decisions }) =>
|
||||
decisions.flatMap(({ candidates }) => candidates),
|
||||
);
|
||||
expect(candidates).toContainEqual(
|
||||
expect.objectContaining({
|
||||
status: economyFirst ? 'evaluated-rejected' : 'chosen',
|
||||
dates: ['2026-11-12', '2026-11-13'],
|
||||
comparison: expect.objectContaining({
|
||||
firstDecisiveObjective: economyFirst
|
||||
? 'optimization:economy'
|
||||
: 'optimization:holiday',
|
||||
}),
|
||||
}),
|
||||
);
|
||||
const explanation = await calculation.explanation;
|
||||
if (explanation?.kind !== 'PlanExplanation') throw new Error('Expected an explanation');
|
||||
if (economyFirst) {
|
||||
|
||||
Reference in new issue
Block a user