mirror of https://github.com/openclaw/openclaw.git
refactor: share agent wait dedupe test entries
This commit is contained in:
parent
db9c755045
commit
31c8bb9167
|
|
@ -7,6 +7,25 @@ import {
|
||||||
} from "./agent-wait-dedupe.js";
|
} from "./agent-wait-dedupe.js";
|
||||||
|
|
||||||
describe("agent wait dedupe helper", () => {
|
describe("agent wait dedupe helper", () => {
|
||||||
|
function setRunEntry(params: {
|
||||||
|
dedupe: Map<unknown, unknown>;
|
||||||
|
kind: "agent" | "chat";
|
||||||
|
runId: string;
|
||||||
|
ts?: number;
|
||||||
|
ok?: boolean;
|
||||||
|
payload: Record<string, unknown>;
|
||||||
|
}) {
|
||||||
|
setGatewayDedupeEntry({
|
||||||
|
dedupe: params.dedupe,
|
||||||
|
key: `${params.kind}:${params.runId}`,
|
||||||
|
entry: {
|
||||||
|
ts: params.ts ?? Date.now(),
|
||||||
|
ok: params.ok ?? true,
|
||||||
|
payload: params.payload,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
__testing.resetWaiters();
|
__testing.resetWaiters();
|
||||||
vi.useFakeTimers();
|
vi.useFakeTimers();
|
||||||
|
|
@ -29,18 +48,15 @@ describe("agent wait dedupe helper", () => {
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
expect(__testing.getWaiterCount(runId)).toBe(1);
|
expect(__testing.getWaiterCount(runId)).toBe(1);
|
||||||
|
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: {
|
||||||
ok: true,
|
runId,
|
||||||
payload: {
|
status: "ok",
|
||||||
runId,
|
startedAt: 100,
|
||||||
status: "ok",
|
endedAt: 200,
|
||||||
startedAt: 100,
|
|
||||||
endedAt: 200,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -56,28 +72,22 @@ describe("agent wait dedupe helper", () => {
|
||||||
it("keeps stale chat dedupe blocked while agent dedupe is in-flight", async () => {
|
it("keeps stale chat dedupe blocked while agent dedupe is in-flight", async () => {
|
||||||
const dedupe = new Map();
|
const dedupe = new Map();
|
||||||
const runId = "run-stale-chat";
|
const runId = "run-stale-chat";
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: {
|
||||||
ok: true,
|
runId,
|
||||||
payload: {
|
status: "ok",
|
||||||
runId,
|
|
||||||
status: "ok",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `agent:${runId}`,
|
kind: "agent",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: {
|
||||||
ok: true,
|
runId,
|
||||||
payload: {
|
status: "accepted",
|
||||||
runId,
|
|
||||||
status: "accepted",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -100,30 +110,26 @@ describe("agent wait dedupe helper", () => {
|
||||||
it("uses newer terminal chat snapshot when agent entry is non-terminal", () => {
|
it("uses newer terminal chat snapshot when agent entry is non-terminal", () => {
|
||||||
const dedupe = new Map();
|
const dedupe = new Map();
|
||||||
const runId = "run-nonterminal-agent-with-newer-chat";
|
const runId = "run-nonterminal-agent-with-newer-chat";
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `agent:${runId}`,
|
kind: "agent",
|
||||||
entry: {
|
runId,
|
||||||
ts: 100,
|
ts: 100,
|
||||||
ok: true,
|
payload: {
|
||||||
payload: {
|
runId,
|
||||||
runId,
|
status: "accepted",
|
||||||
status: "accepted",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: 200,
|
ts: 200,
|
||||||
ok: true,
|
payload: {
|
||||||
payload: {
|
runId,
|
||||||
runId,
|
status: "ok",
|
||||||
status: "ok",
|
startedAt: 1,
|
||||||
startedAt: 1,
|
endedAt: 2,
|
||||||
endedAt: 2,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -143,16 +149,13 @@ describe("agent wait dedupe helper", () => {
|
||||||
it("ignores stale agent snapshots when waiting for an active chat run", async () => {
|
it("ignores stale agent snapshots when waiting for an active chat run", async () => {
|
||||||
const dedupe = new Map();
|
const dedupe = new Map();
|
||||||
const runId = "run-chat-active-ignore-agent";
|
const runId = "run-chat-active-ignore-agent";
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `agent:${runId}`,
|
kind: "agent",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: {
|
||||||
ok: true,
|
runId,
|
||||||
payload: {
|
status: "ok",
|
||||||
runId,
|
|
||||||
status: "ok",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -173,18 +176,15 @@ describe("agent wait dedupe helper", () => {
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
expect(__testing.getWaiterCount(runId)).toBe(1);
|
expect(__testing.getWaiterCount(runId)).toBe(1);
|
||||||
|
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: {
|
||||||
ok: true,
|
runId,
|
||||||
payload: {
|
status: "ok",
|
||||||
runId,
|
startedAt: 123,
|
||||||
status: "ok",
|
endedAt: 456,
|
||||||
startedAt: 123,
|
|
||||||
endedAt: 456,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -200,23 +200,20 @@ describe("agent wait dedupe helper", () => {
|
||||||
const runId = "run-collision";
|
const runId = "run-collision";
|
||||||
const dedupe = new Map();
|
const dedupe = new Map();
|
||||||
|
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `agent:${runId}`,
|
kind: "agent",
|
||||||
entry: {
|
runId,
|
||||||
ts: 100,
|
ts: 100,
|
||||||
ok: true,
|
payload: { runId, status: "ok", startedAt: 10, endedAt: 20 },
|
||||||
payload: { runId, status: "ok", startedAt: 10, endedAt: 20 },
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: 200,
|
ts: 200,
|
||||||
ok: false,
|
ok: false,
|
||||||
payload: { runId, status: "error", startedAt: 30, endedAt: 40, error: "chat failed" },
|
payload: { runId, status: "error", startedAt: 30, endedAt: 40, error: "chat failed" },
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
|
|
@ -232,23 +229,19 @@ describe("agent wait dedupe helper", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
const dedupeReverse = new Map();
|
const dedupeReverse = new Map();
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe: dedupeReverse,
|
dedupe: dedupeReverse,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: 100,
|
ts: 100,
|
||||||
ok: true,
|
payload: { runId, status: "ok", startedAt: 1, endedAt: 2 },
|
||||||
payload: { runId, status: "ok", startedAt: 1, endedAt: 2 },
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe: dedupeReverse,
|
dedupe: dedupeReverse,
|
||||||
key: `agent:${runId}`,
|
kind: "agent",
|
||||||
entry: {
|
runId,
|
||||||
ts: 200,
|
ts: 200,
|
||||||
ok: true,
|
payload: { runId, status: "timeout", startedAt: 3, endedAt: 4, error: "still running" },
|
||||||
payload: { runId, status: "timeout", startedAt: 3, endedAt: 4, error: "still running" },
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
|
|
@ -281,14 +274,11 @@ describe("agent wait dedupe helper", () => {
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
expect(__testing.getWaiterCount(runId)).toBe(2);
|
expect(__testing.getWaiterCount(runId)).toBe(2);
|
||||||
|
|
||||||
setGatewayDedupeEntry({
|
setRunEntry({
|
||||||
dedupe,
|
dedupe,
|
||||||
key: `chat:${runId}`,
|
kind: "chat",
|
||||||
entry: {
|
runId,
|
||||||
ts: Date.now(),
|
payload: { runId, status: "ok" },
|
||||||
ok: true,
|
|
||||||
payload: { runId, status: "ok" },
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(first).resolves.toEqual(
|
await expect(first).resolves.toEqual(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue