mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-25 11:43:03 +00:00
test: guard cron heartbeat requests
This commit is contained in:
@@ -57,6 +57,19 @@ describe("cron main job passes heartbeat target=last", () => {
|
||||
return { ...callArgs, heartbeat };
|
||||
}
|
||||
|
||||
function requireRequestHeartbeatCall(requestHeartbeat: ReturnType<typeof vi.fn>) {
|
||||
const callArgs = requestHeartbeat.mock.calls[0]?.[0];
|
||||
if (!callArgs) {
|
||||
throw new Error("expected requestHeartbeat call");
|
||||
}
|
||||
return callArgs as {
|
||||
source?: string;
|
||||
intent?: string;
|
||||
reason?: string;
|
||||
heartbeat?: unknown;
|
||||
};
|
||||
}
|
||||
|
||||
async function runSingleTick(cron: CronService) {
|
||||
const startPromise = cron.start();
|
||||
await vi.advanceTimersByTimeAsync(2_000);
|
||||
@@ -123,11 +136,11 @@ describe("cron main job passes heartbeat target=last", () => {
|
||||
await runSingleTick(cron);
|
||||
|
||||
expect(runHeartbeatOnce).toHaveBeenCalled();
|
||||
const heartbeatRequest = requestHeartbeat.mock.calls[0]?.[0];
|
||||
expect(heartbeatRequest?.source).toBe("cron");
|
||||
expect(heartbeatRequest?.intent).toBe("immediate");
|
||||
expect(heartbeatRequest?.reason).toBe("cron:test-main-delivery-busy");
|
||||
expect(heartbeatRequest?.heartbeat).toEqual({ target: "last" });
|
||||
const heartbeatRequest = requireRequestHeartbeatCall(requestHeartbeat);
|
||||
expect(heartbeatRequest.source).toBe("cron");
|
||||
expect(heartbeatRequest.intent).toBe("immediate");
|
||||
expect(heartbeatRequest.reason).toBe("cron:test-main-delivery-busy");
|
||||
expect(heartbeatRequest.heartbeat).toEqual({ target: "last" });
|
||||
});
|
||||
|
||||
it("should preserve heartbeat.target=last for wakeMode=next-heartbeat main jobs", async () => {
|
||||
@@ -155,11 +168,11 @@ describe("cron main job passes heartbeat target=last", () => {
|
||||
await runSingleTick(cron);
|
||||
|
||||
expect(requestHeartbeat).toHaveBeenCalled();
|
||||
const heartbeatRequest = requestHeartbeat.mock.calls[0]?.[0];
|
||||
expect(heartbeatRequest?.source).toBe("cron");
|
||||
expect(heartbeatRequest?.intent).toBe("event");
|
||||
expect(heartbeatRequest?.reason).toBe("cron:test-next-heartbeat");
|
||||
expect(heartbeatRequest?.heartbeat).toEqual({ target: "last" });
|
||||
const heartbeatRequest = requireRequestHeartbeatCall(requestHeartbeat);
|
||||
expect(heartbeatRequest.source).toBe("cron");
|
||||
expect(heartbeatRequest.intent).toBe("event");
|
||||
expect(heartbeatRequest.reason).toBe("cron:test-next-heartbeat");
|
||||
expect(heartbeatRequest.heartbeat).toEqual({ target: "last" });
|
||||
expect(runHeartbeatOnce).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user