File size: 2,301 Bytes
f778c12 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | import type { OpenClawConfig } from "../../config/types.openclaw.js";
import type { RespawnSupervisor } from "../../infra/supervisor-markers.js";
import "./run.js";
type GatewayRunTestLogger = {
info(message: string): void;
warn(message: string): void;
};
type GatewayRunTestApi = {
createConfiguredGatewayHealthProbe(
cfg: OpenClawConfig,
): (params: { host: string; port: number }) => Promise<boolean>;
isGatewayHealthzResponse(statusCode: number | undefined, body: string): boolean;
normalizeGatewayHealthProbeHost(host: string): string;
probeGatewayHealthz(params: {
host: string;
port: number;
timeoutMs?: number;
tlsFingerprint?: string;
}): Promise<boolean>;
resolveGatewayLockErrorExitCode(err: unknown): number;
resolveGatewayStartupFailureExitCode(err: unknown): number;
runGatewayLoopWithSupervisedLockRecovery(params: {
startLoop: (lifecycleDeadlineMs?: number) => Promise<void>;
supervisor: RespawnSupervisor | null;
port: number;
healthHost: string;
log: GatewayRunTestLogger;
now?: () => number;
sleep?: (ms: number) => Promise<void>;
probeHealth?: (params: { host: string; port: number }) => Promise<boolean>;
retryMs?: number;
timeoutMs?: number;
}): Promise<void>;
};
function getTestApi(): GatewayRunTestApi {
return (globalThis as Record<PropertyKey, unknown>)[
Symbol.for("openclaw.gatewayRunTestApi")
] as GatewayRunTestApi;
}
export const testing: GatewayRunTestApi = {
createConfiguredGatewayHealthProbe(cfg) {
return getTestApi().createConfiguredGatewayHealthProbe(cfg);
},
isGatewayHealthzResponse(statusCode, body) {
return getTestApi().isGatewayHealthzResponse(statusCode, body);
},
normalizeGatewayHealthProbeHost(host) {
return getTestApi().normalizeGatewayHealthProbeHost(host);
},
async probeGatewayHealthz(params) {
return await getTestApi().probeGatewayHealthz(params);
},
resolveGatewayLockErrorExitCode(err) {
return getTestApi().resolveGatewayLockErrorExitCode(err);
},
resolveGatewayStartupFailureExitCode(err) {
return getTestApi().resolveGatewayStartupFailureExitCode(err);
},
async runGatewayLoopWithSupervisedLockRecovery(params) {
await getTestApi().runGatewayLoopWithSupervisedLockRecovery(params);
},
};
|