refactor(api): inject server dependencies in tests
This commit is contained in:
+21
-24
@@ -47,15 +47,14 @@ Deno.test('ApiServer serves health metrics and authenticated model listings', as
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
} as never,
|
} as never,
|
||||||
);
|
{
|
||||||
|
gpuDetector: {
|
||||||
(server as unknown as {
|
async detectGpus() {
|
||||||
gpuDetector: { detectGpus: () => Promise<unknown[]> };
|
return [{ id: 'nvidia-0' }];
|
||||||
}).gpuDetector = {
|
},
|
||||||
async detectGpus() {
|
} as never,
|
||||||
return [{ id: 'nvidia-0' }];
|
|
||||||
},
|
},
|
||||||
};
|
);
|
||||||
|
|
||||||
await server.start();
|
await server.start();
|
||||||
|
|
||||||
@@ -142,15 +141,14 @@ Deno.test('ApiServer metrics expose 5xx counts for failing endpoints', async ()
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
} as never,
|
} as never,
|
||||||
);
|
{
|
||||||
|
gpuDetector: {
|
||||||
(server as unknown as {
|
async detectGpus() {
|
||||||
gpuDetector: { detectGpus: () => Promise<unknown[]> };
|
return [];
|
||||||
}).gpuDetector = {
|
},
|
||||||
async detectGpus() {
|
} as never,
|
||||||
return [];
|
|
||||||
},
|
},
|
||||||
};
|
);
|
||||||
|
|
||||||
await server.start();
|
await server.start();
|
||||||
|
|
||||||
@@ -209,15 +207,14 @@ Deno.test('ApiServer enforces api rate limits while exempting health and metrics
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
} as never,
|
} as never,
|
||||||
);
|
{
|
||||||
|
gpuDetector: {
|
||||||
(server as unknown as {
|
async detectGpus() {
|
||||||
gpuDetector: { detectGpus: () => Promise<unknown[]> };
|
return [];
|
||||||
}).gpuDetector = {
|
},
|
||||||
async detectGpus() {
|
} as never,
|
||||||
return [];
|
|
||||||
},
|
},
|
||||||
};
|
);
|
||||||
|
|
||||||
await server.start();
|
await server.start();
|
||||||
|
|
||||||
|
|||||||
+10
-3
@@ -17,6 +17,12 @@ import { ModelLoader } from '../models/loader.ts';
|
|||||||
import { GpuDetector } from '../hardware/gpu-detector.ts';
|
import { GpuDetector } from '../hardware/gpu-detector.ts';
|
||||||
import { ClusterHandler } from './handlers/cluster.ts';
|
import { ClusterHandler } from './handlers/cluster.ts';
|
||||||
|
|
||||||
|
interface IApiServerOptions {
|
||||||
|
gpuDetector?: GpuDetector;
|
||||||
|
router?: ApiRouter;
|
||||||
|
clusterHandler?: ClusterHandler;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API Server for ModelGrid
|
* API Server for ModelGrid
|
||||||
*/
|
*/
|
||||||
@@ -42,15 +48,16 @@ export class ApiServer {
|
|||||||
modelRegistry: ModelRegistry,
|
modelRegistry: ModelRegistry,
|
||||||
modelLoader: ModelLoader,
|
modelLoader: ModelLoader,
|
||||||
clusterCoordinator: ClusterCoordinator,
|
clusterCoordinator: ClusterCoordinator,
|
||||||
|
options: IApiServerOptions = {},
|
||||||
) {
|
) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.containerManager = containerManager;
|
this.containerManager = containerManager;
|
||||||
this.modelRegistry = modelRegistry;
|
this.modelRegistry = modelRegistry;
|
||||||
this.gpuDetector = new GpuDetector();
|
this.gpuDetector = options.gpuDetector || new GpuDetector();
|
||||||
this.modelLoader = modelLoader;
|
this.modelLoader = modelLoader;
|
||||||
this.clusterCoordinator = clusterCoordinator;
|
this.clusterCoordinator = clusterCoordinator;
|
||||||
this.clusterHandler = new ClusterHandler(clusterCoordinator);
|
this.clusterHandler = options.clusterHandler || new ClusterHandler(clusterCoordinator);
|
||||||
this.router = new ApiRouter(
|
this.router = options.router || new ApiRouter(
|
||||||
containerManager,
|
containerManager,
|
||||||
modelRegistry,
|
modelRegistry,
|
||||||
this.modelLoader,
|
this.modelLoader,
|
||||||
|
|||||||
Reference in New Issue
Block a user