IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

graceful-shutdown.test.ts

Open raw
import { describe, expect, it, vi } from "vitest";
import { closeServerGracefully } from "@/lib/server/http/graceful-shutdown";

describe("closeServerGracefully", () => {
  it("closes idle connections and resolves when the server closes cleanly", async () => {
    const closeIdleConnections = vi.fn();
    const close = vi.fn((callback: () => void) => {
      callback();
      return {} as never;
    });

    await closeServerGracefully({
      close,
      closeIdleConnections,
    });

    expect(close).toHaveBeenCalledTimes(1);
    expect(closeIdleConnections).toHaveBeenCalledTimes(1);
  });

  it("forces remaining connections closed when the shutdown timeout expires", async () => {
    vi.useFakeTimers();

    const closeIdleConnections = vi.fn();
    const closeAllConnections = vi.fn();
    const close = vi.fn(() => ({} as never));

    const shutdownPromise = closeServerGracefully(
      {
        close,
        closeIdleConnections,
        closeAllConnections,
      },
      50,
    );

    await vi.advanceTimersByTimeAsync(50);
    await shutdownPromise;

    expect(close).toHaveBeenCalledTimes(1);
    expect(closeIdleConnections).toHaveBeenCalledTimes(2);
    expect(closeAllConnections).toHaveBeenCalledTimes(1);

    vi.useRealTimers();
  });
});
bytes
1,276
lines
47
Type
ts
Latest commit
16 October 2026