import { assertEquals } from 'jsr:@std/assert@^1.0.0'; import { ClusterManager } from '../ts/cluster/cluster-manager.ts'; import { UiServer } from '../ts/ui/server.ts'; Deno.test('UiServer overview mirrors degraded API health semantics', async () => { const port = 20300 + Math.floor(Math.random() * 1000); const cluster = new ClusterManager(); cluster.configure({ enabled: false, nodeName: 'ui-test-node', role: 'standalone', bindHost: '127.0.0.1', gossipPort: 7946, heartbeatIntervalMs: 5000, seedNodes: [], }); const server = new UiServer( { enabled: true, port, host: '127.0.0.1', assetSource: 'disk' }, { async getAllStatus() { return new Map([ ['vllm-1', { running: false, health: 'unhealthy' }], ]); }, async getAllAvailableModels() { return new Map(); }, } as never, cluster, ); (server as unknown as { gpuDetector: { detectGpus: () => Promise }; }).gpuDetector = { async detectGpus() { return [{ id: 'nvidia-0' }]; }, }; await server.start(); try { const response = await fetch(`http://127.0.0.1:${port}/_ui/overview`); const body = await response.json(); assertEquals(response.status, 200); assertEquals(body.health.status, 'degraded'); assertEquals(body.health.reasons.includes('unhealthy_container'), true); assertEquals(body.health.reasons.includes('no_models_available'), true); assertEquals(body.node.name, 'ui-test-node'); } finally { await server.stop(); } });