cc-libs/tools/trapos-server/test-integration/health.test.ts

50 lines
1.6 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { formatFailure, startCraftos, startFakeOpencode, startServer } from "./harness.js";
test("probe_server reports opencodeOk=true when opencode is healthy", async () => {
const opencode = await startFakeOpencode({ status: 200 });
const server = await startServer({ opencodeUrl: opencode.url });
const craftos = startCraftos("gateway-client.lua", {
computerId: 7,
computerLabel: "health-ok",
shellArgs: [server.baseUrl, "-", "health"],
});
try {
const result = await craftos.done;
assert.match(
result.output,
/__CLOUD_HEALTH__ serverOk=true opencodeOk=true/,
formatFailure("expected serverOk=true opencodeOk=true", result.output),
);
} finally {
craftos.abort();
await craftos.done.catch(() => undefined);
await server.close();
await opencode.close();
}
});
test("probe_server reports opencodeOk=false when opencode is unhealthy", async () => {
const opencode = await startFakeOpencode({ status: 500 });
const server = await startServer({ opencodeUrl: opencode.url });
const craftos = startCraftos("gateway-client.lua", {
computerId: 7,
computerLabel: "health-bad",
shellArgs: [server.baseUrl, "-", "health"],
});
try {
const result = await craftos.done;
assert.match(
result.output,
/__CLOUD_HEALTH__ serverOk=true opencodeOk=false/,
formatFailure("expected serverOk=true opencodeOk=false", result.output),
);
} finally {
craftos.abort();
await craftos.done.catch(() => undefined);
await server.close();
await opencode.close();
}
});