mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-08-19 21:53:48 +00:00
Keep command parsing under cli/experimental and adapt missing model identities to the current Harness shape.
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { afterEach, describe, expect, test, vi } from "vitest";
|
|
import { ServerLifetime } from "../src/experimental/server.ts";
|
|
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
describe("server lifecycle", () => {
|
|
test("holds a foreground server until explicit shutdown", () => {
|
|
vi.useFakeTimers();
|
|
const retire = vi.fn();
|
|
const lifetime = new ServerLifetime(true);
|
|
lifetime.start(retire);
|
|
vi.advanceTimersByTime(60_000);
|
|
expect(retire).not.toHaveBeenCalled();
|
|
lifetime.stop();
|
|
});
|
|
|
|
test("retires an automatic server if no first client arrives", () => {
|
|
vi.useFakeTimers();
|
|
const retire = vi.fn();
|
|
const lifetime = new ServerLifetime(false);
|
|
lifetime.start(retire);
|
|
vi.advanceTimersByTime(10_999);
|
|
expect(retire).not.toHaveBeenCalled();
|
|
vi.advanceTimersByTime(1);
|
|
expect(retire).toHaveBeenCalledOnce();
|
|
lifetime.stop();
|
|
});
|
|
|
|
test("requires both client and worker demand to disappear", () => {
|
|
vi.useFakeTimers();
|
|
const retire = vi.fn();
|
|
const lifetime = new ServerLifetime(false);
|
|
lifetime.start(retire);
|
|
lifetime.setConnectionCount(1);
|
|
lifetime.setWorkerCount(1);
|
|
lifetime.setConnectionCount(0);
|
|
vi.advanceTimersByTime(10_000);
|
|
expect(retire).not.toHaveBeenCalled();
|
|
|
|
lifetime.setWorkerCount(0);
|
|
vi.advanceTimersByTime(999);
|
|
expect(retire).not.toHaveBeenCalled();
|
|
vi.advanceTimersByTime(1);
|
|
expect(retire).toHaveBeenCalledOnce();
|
|
lifetime.stop();
|
|
});
|
|
});
|