test: replace slow gateway SIGTERM integration coverage

This commit is contained in:
Peter Steinberger
2026-02-22 16:40:48 +00:00
parent d01cc69ef0
commit ee7a43b895
2 changed files with 40 additions and 157 deletions

View File

@@ -91,6 +91,42 @@ function createRuntimeWithExitSignal(exitCallOrder?: string[]) {
}
describe("runGatewayLoop", () => {
it("exits 0 on SIGTERM after graceful close", async () => {
vi.clearAllMocks();
await withIsolatedSignals(async () => {
const close = vi.fn(async () => {});
let resolveStarted: (() => void) | null = null;
const started = new Promise<void>((resolve) => {
resolveStarted = resolve;
});
const start = vi.fn(async () => {
resolveStarted?.();
return { close };
});
const { runtime, exited } = createRuntimeWithExitSignal();
vi.resetModules();
const { runGatewayLoop } = await import("./run-loop.js");
const _loopPromise = runGatewayLoop({
start: start as unknown as Parameters<typeof runGatewayLoop>[0]["start"],
runtime: runtime as unknown as Parameters<typeof runGatewayLoop>[0]["runtime"],
});
await started;
await new Promise<void>((resolve) => setImmediate(resolve));
process.emit("SIGTERM");
await expect(exited).resolves.toBe(0);
expect(close).toHaveBeenCalledWith({
reason: "gateway stopping",
restartExpectedMs: null,
});
expect(runtime.exit).toHaveBeenCalledWith(0);
});
});
it("restarts after SIGUSR1 even when drain times out, and resets lanes for the new iteration", async () => {
vi.clearAllMocks();