Spaces:
Sleeping
Sleeping
File size: 1,316 Bytes
476094d | 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 | import test from "node:test";
import assert from "node:assert/strict";
import net from "node:net";
import { HistoryStore } from "./history-store.mjs";
import { ApiPoolProxyManager } from "./api-pool-proxy-manager.mjs";
function listenOnce(port) {
return new Promise((resolve, reject) => {
const server = net.createServer();
server.once("error", reject);
server.listen(port, "127.0.0.1", () => {
server.off("error", reject);
resolve(server);
});
});
}
test("ApiPoolProxyManager reports port conflicts with 409", async () => {
const occupied = await listenOnce(0);
const address = occupied.address();
const port = typeof address === "object" && address ? address.port : 8789;
const historyStore = new HistoryStore("/tmp/api-pool-proxy-manager-test");
historyStore.items = [];
historyStore.load = async () => {};
historyStore.add = async () => {};
const manager = new ApiPoolProxyManager(historyStore);
try {
await assert.rejects(
manager.start({
provider: "codex",
host: "127.0.0.1",
port,
}),
(error) => error?.statusCode === 409 && new RegExp(String(port)).test(error.message),
);
} finally {
await new Promise((resolve, reject) => occupied.close((error) => (error ? reject(error) : resolve())));
}
});
|