Files
electric-cherry/tests/helpers/provisioning.ts
T

47 lines
1.8 KiB
TypeScript

// Integration ticks reflect the production worker: callers submit/observe;
// Provisioning alone executes jobs between those reconciliation passes.
let campaignFlight: Promise<
Awaited<ReturnType<typeof import('../../src/lib/server/pipeline/sweep.js').sweep>>
> | null = null;
export function sweep() {
if (campaignFlight) return campaignFlight;
campaignFlight = (async () => {
const caller = await import('../../src/lib/server/pipeline/sweep.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.sweep();
await processProvisioning();
return caller.sweep();
})().finally(() => {
campaignFlight = null;
});
return campaignFlight;
}
let betaFlight: Promise<{ processed: number }> | null = null;
export function betaTick() {
if (betaFlight) return betaFlight;
betaFlight = (async () => {
const caller = await import('../../src/lib/server/pipeline/beta-runner.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.betaTick();
await processProvisioning();
return caller.betaTick();
})().finally(() => {
betaFlight = null;
});
return betaFlight;
}
let maintenanceFlight: Promise<void> | null = null;
export function maintenanceTick(): Promise<void> {
if (maintenanceFlight) return maintenanceFlight;
maintenanceFlight = (async () => {
const caller = await import('../../src/lib/server/fleet/plutonium.js');
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
await caller.maintenanceTick();
await processProvisioning();
await caller.maintenanceTick();
})().finally(() => {
maintenanceFlight = null;
});
return maintenanceFlight;
}