mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 20:58:26 +00:00
test: dedupe agent tests and session helpers
This commit is contained in:
@@ -34,26 +34,22 @@ describe("compaction retry integration", () => {
|
||||
model: "claude-3-opus",
|
||||
} as unknown as NonNullable<ExtensionContext["model"]>;
|
||||
|
||||
const invokeGenerateSummary = (signal = new AbortController().signal) =>
|
||||
mockGenerateSummary(testMessages, testModel, 1000, "test-api-key", signal);
|
||||
|
||||
const runSummaryRetry = (options: Parameters<typeof retryAsync>[1]) =>
|
||||
retryAsync(() => invokeGenerateSummary(), options);
|
||||
|
||||
it("should successfully call generateSummary with retry wrapper", async () => {
|
||||
mockGenerateSummary.mockResolvedValueOnce("Test summary");
|
||||
|
||||
const result = await retryAsync(
|
||||
() =>
|
||||
mockGenerateSummary(
|
||||
testMessages,
|
||||
testModel,
|
||||
1000,
|
||||
"test-api-key",
|
||||
new AbortController().signal,
|
||||
),
|
||||
{
|
||||
attempts: 3,
|
||||
minDelayMs: 500,
|
||||
maxDelayMs: 5000,
|
||||
jitter: 0.2,
|
||||
label: "compaction/generateSummary",
|
||||
},
|
||||
);
|
||||
const result = await runSummaryRetry({
|
||||
attempts: 3,
|
||||
minDelayMs: 500,
|
||||
maxDelayMs: 5000,
|
||||
jitter: 0.2,
|
||||
label: "compaction/generateSummary",
|
||||
});
|
||||
|
||||
expect(result).toBe("Test summary");
|
||||
expect(mockGenerateSummary).toHaveBeenCalledTimes(1);
|
||||
@@ -64,22 +60,12 @@ describe("compaction retry integration", () => {
|
||||
.mockRejectedValueOnce(new Error("Network timeout"))
|
||||
.mockResolvedValueOnce("Success after retry");
|
||||
|
||||
const result = await retryAsync(
|
||||
() =>
|
||||
mockGenerateSummary(
|
||||
testMessages,
|
||||
testModel,
|
||||
1000,
|
||||
"test-api-key",
|
||||
new AbortController().signal,
|
||||
),
|
||||
{
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
maxDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
},
|
||||
);
|
||||
const result = await runSummaryRetry({
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
maxDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
});
|
||||
|
||||
expect(result).toBe("Success after retry");
|
||||
expect(mockGenerateSummary).toHaveBeenCalledTimes(2);
|
||||
@@ -93,22 +79,12 @@ describe("compaction retry integration", () => {
|
||||
mockGenerateSummary.mockRejectedValueOnce(abortErr);
|
||||
|
||||
await expect(
|
||||
retryAsync(
|
||||
() =>
|
||||
mockGenerateSummary(
|
||||
testMessages,
|
||||
testModel,
|
||||
1000,
|
||||
"test-api-key",
|
||||
new AbortController().signal,
|
||||
),
|
||||
{
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
shouldRetry: (err: unknown) => !(err instanceof Error && err.name === "AbortError"),
|
||||
},
|
||||
),
|
||||
retryAsync(() => invokeGenerateSummary(), {
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
shouldRetry: (err: unknown) => !(err instanceof Error && err.name === "AbortError"),
|
||||
}),
|
||||
).rejects.toThrow("aborted");
|
||||
|
||||
// Should NOT retry on user cancellation (AbortError filtered by shouldRetry)
|
||||
@@ -119,22 +95,12 @@ describe("compaction retry integration", () => {
|
||||
mockGenerateSummary.mockRejectedValue(new Error("Persistent API error"));
|
||||
|
||||
await expect(
|
||||
retryAsync(
|
||||
() =>
|
||||
mockGenerateSummary(
|
||||
testMessages,
|
||||
testModel,
|
||||
1000,
|
||||
"test-api-key",
|
||||
new AbortController().signal,
|
||||
),
|
||||
{
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
maxDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
},
|
||||
),
|
||||
runSummaryRetry({
|
||||
attempts: 3,
|
||||
minDelayMs: 0,
|
||||
maxDelayMs: 0,
|
||||
label: "compaction/generateSummary",
|
||||
}),
|
||||
).rejects.toThrow("Persistent API error");
|
||||
|
||||
expect(mockGenerateSummary).toHaveBeenCalledTimes(3);
|
||||
@@ -149,24 +115,14 @@ describe("compaction retry integration", () => {
|
||||
.mockResolvedValueOnce("Success on 3rd attempt");
|
||||
|
||||
const delays: number[] = [];
|
||||
const promise = retryAsync(
|
||||
() =>
|
||||
mockGenerateSummary(
|
||||
testMessages,
|
||||
testModel,
|
||||
1000,
|
||||
"test-api-key",
|
||||
new AbortController().signal,
|
||||
),
|
||||
{
|
||||
attempts: 3,
|
||||
minDelayMs: 500,
|
||||
maxDelayMs: 5000,
|
||||
jitter: 0,
|
||||
label: "compaction/generateSummary",
|
||||
onRetry: (info) => delays.push(info.delayMs),
|
||||
},
|
||||
);
|
||||
const promise = runSummaryRetry({
|
||||
attempts: 3,
|
||||
minDelayMs: 500,
|
||||
maxDelayMs: 5000,
|
||||
jitter: 0,
|
||||
label: "compaction/generateSummary",
|
||||
onRetry: (info) => delays.push(info.delayMs),
|
||||
});
|
||||
|
||||
await vi.runAllTimersAsync();
|
||||
const result = await promise;
|
||||
|
||||
Reference in New Issue
Block a user