mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:10:44 +00:00
test: bound canvas auth helper waits
This commit is contained in:
@@ -13,6 +13,8 @@ import { withTempConfig } from "./test-temp-config.js";
|
||||
|
||||
const WS_REJECT_TIMEOUT_MS = 2_000;
|
||||
const WS_CONNECT_TIMEOUT_MS = 5_000;
|
||||
const HTTP_REQUEST_TIMEOUT_MS = 5_000;
|
||||
const SERVER_CLOSE_TIMEOUT_MS = 5_000;
|
||||
|
||||
function isConnectionReset(value: unknown): boolean {
|
||||
let current: unknown = value;
|
||||
@@ -30,13 +32,33 @@ function isConnectionReset(value: unknown): boolean {
|
||||
}
|
||||
|
||||
async function fetchCanvas(input: string, init?: RequestInit): Promise<Response> {
|
||||
const controller = new AbortController();
|
||||
const timer = setTimeout(() => controller.abort(), HTTP_REQUEST_TIMEOUT_MS);
|
||||
try {
|
||||
return await fetch(input, init);
|
||||
return await fetch(input, { ...init, signal: controller.signal });
|
||||
} catch (err) {
|
||||
if (isConnectionReset(err)) {
|
||||
return await fetch(input, init);
|
||||
return await fetch(input, { ...init, signal: controller.signal });
|
||||
}
|
||||
throw err;
|
||||
} finally {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
}
|
||||
|
||||
async function withTimeout<T>(promise: Promise<T>, timeoutMs: number, label: string): Promise<T> {
|
||||
let timer: ReturnType<typeof setTimeout> | undefined;
|
||||
try {
|
||||
return await Promise.race([
|
||||
promise,
|
||||
new Promise<never>((_, reject) => {
|
||||
timer = setTimeout(() => reject(new Error(`${label} timed out`)), timeoutMs);
|
||||
}),
|
||||
]);
|
||||
} finally {
|
||||
if (timer) {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,8 +87,12 @@ async function listen(
|
||||
for (const socket of sockets) {
|
||||
socket.destroy();
|
||||
}
|
||||
await new Promise<void>((resolve, reject) =>
|
||||
server.close((err) => (err ? reject(err) : resolve())),
|
||||
await withTimeout(
|
||||
new Promise<void>((resolve, reject) =>
|
||||
server.close((err) => (err ? reject(err) : resolve())),
|
||||
),
|
||||
SERVER_CLOSE_TIMEOUT_MS,
|
||||
"gateway test server close",
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user