mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 21:14:31 +00:00
test: speed up subagent announce e2e and drop duplicate defer case
This commit is contained in:
@@ -22,6 +22,17 @@ let configOverride: ReturnType<(typeof import("../config/config.js"))["loadConfi
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function loadSessionStoreFixture(): Record<string, Record<string, unknown>> {
|
||||||
|
return new Proxy(sessionStore, {
|
||||||
|
get(target, key: string | symbol) {
|
||||||
|
if (typeof key === "string" && !(key in target) && key.includes(":subagent:")) {
|
||||||
|
return { inputTokens: 1, outputTokens: 1, totalTokens: 2 };
|
||||||
|
}
|
||||||
|
return target[key as keyof typeof target];
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
vi.mock("../gateway/call.js", () => ({
|
vi.mock("../gateway/call.js", () => ({
|
||||||
callGateway: vi.fn(async (req: unknown) => {
|
callGateway: vi.fn(async (req: unknown) => {
|
||||||
const typed = req as { method?: string; params?: { message?: string; sessionKey?: string } };
|
const typed = req as { method?: string; params?: { message?: string; sessionKey?: string } };
|
||||||
@@ -47,7 +58,7 @@ vi.mock("./tools/agent-step.js", () => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("../config/sessions.js", () => ({
|
vi.mock("../config/sessions.js", () => ({
|
||||||
loadSessionStore: vi.fn(() => sessionStore),
|
loadSessionStore: vi.fn(() => loadSessionStoreFixture()),
|
||||||
resolveAgentIdFromSessionKey: () => "main",
|
resolveAgentIdFromSessionKey: () => "main",
|
||||||
resolveStorePath: () => "/tmp/sessions.json",
|
resolveStorePath: () => "/tmp/sessions.json",
|
||||||
resolveMainSessionKey: () => "agent:main:main",
|
resolveMainSessionKey: () => "agent:main:main",
|
||||||
@@ -93,6 +104,9 @@ describe("subagent announce formatting", () => {
|
|||||||
sessionStore = {
|
sessionStore = {
|
||||||
"agent:main:subagent:test": {
|
"agent:main:subagent:test": {
|
||||||
sessionId: "child-session-123",
|
sessionId: "child-session-123",
|
||||||
|
inputTokens: 1,
|
||||||
|
outputTokens: 1,
|
||||||
|
totalTokens: 2,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
await runSubagentAnnounceFlow({
|
await runSubagentAnnounceFlow({
|
||||||
@@ -580,6 +594,9 @@ describe("subagent announce formatting", () => {
|
|||||||
sessionStore = {
|
sessionStore = {
|
||||||
"agent:main:subagent:test": {
|
"agent:main:subagent:test": {
|
||||||
sessionId: "child-session-1",
|
sessionId: "child-session-1",
|
||||||
|
inputTokens: 1,
|
||||||
|
outputTokens: 1,
|
||||||
|
totalTokens: 2,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -742,34 +759,6 @@ describe("subagent announce formatting", () => {
|
|||||||
expect(agentSpy).not.toHaveBeenCalled();
|
expect(agentSpy).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not delete child session when announce is deferred for an active run", async () => {
|
|
||||||
const { runSubagentAnnounceFlow } = await import("./subagent-announce.js");
|
|
||||||
embeddedRunMock.isEmbeddedPiRunActive.mockReturnValue(true);
|
|
||||||
embeddedRunMock.waitForEmbeddedPiRunEnd.mockResolvedValue(false);
|
|
||||||
sessionStore = {
|
|
||||||
"agent:main:subagent:test": {
|
|
||||||
sessionId: "child-session-active",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const didAnnounce = await runSubagentAnnounceFlow({
|
|
||||||
childSessionKey: "agent:main:subagent:test",
|
|
||||||
childRunId: "run-child-active-delete",
|
|
||||||
requesterSessionKey: "agent:main:main",
|
|
||||||
requesterDisplayKey: "main",
|
|
||||||
task: "context-stress-test",
|
|
||||||
timeoutMs: 1000,
|
|
||||||
cleanup: "delete",
|
|
||||||
waitForCompletion: false,
|
|
||||||
startedAt: 10,
|
|
||||||
endedAt: 20,
|
|
||||||
outcome: { status: "ok" },
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(didAnnounce).toBe(false);
|
|
||||||
expect(sessionsDeleteSpy).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("normalizes requesterOrigin for direct announce delivery", async () => {
|
it("normalizes requesterOrigin for direct announce delivery", async () => {
|
||||||
const { runSubagentAnnounceFlow } = await import("./subagent-announce.js");
|
const { runSubagentAnnounceFlow } = await import("./subagent-announce.js");
|
||||||
embeddedRunMock.isEmbeddedPiRunActive.mockReturnValue(false);
|
embeddedRunMock.isEmbeddedPiRunActive.mockReturnValue(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user