33
44import { describe , expect , it , vi } from "vitest" ;
55
6+ import { createVirtualClock } from "./__test-helpers__/virtual-clock" ;
67import {
78 getOpenShellGatewayUserServiceBinaryPaths ,
89 getOpenShellGatewayUserServicePaths ,
910 hasOpenShellGatewayUserService ,
10- startPackageManagedDockerDriverGateway ,
11- startOpenShellGatewayUserService ,
1211 type SpawnSyncLikeResult ,
12+ startOpenShellGatewayUserService ,
13+ startPackageManagedDockerDriverGateway ,
1314} from "./docker-driver-gateway-service" ;
1415
1516const STATUS_CONNECTED = `
@@ -254,6 +255,7 @@ describe("docker-driver-gateway-service", () => {
254255
255256 it ( "uses the package-managed service only after endpoint, metadata, and gRPC health are ready" , async ( ) => {
256257 const events : string [ ] = [ ] ;
258+ const clock = createVirtualClock ( ) ;
257259 let registerCount = 0 ;
258260 const registerDockerDriverGatewayEndpoint = vi . fn ( ( ) => {
259261 events . push ( "register" ) ;
@@ -268,14 +270,18 @@ describe("docker-driver-gateway-service", () => {
268270 gatewayName : "nemoclaw" ,
269271 hasOpenShellGatewayUserService : ( ) => true ,
270272 healthPollCount : 3 ,
271- healthPollInterval : 0 ,
273+ healthPollInterval : 1 ,
272274 isDockerDriverGatewayReady : async ( ) => {
273275 events . push ( "ready" ) ;
274276 return true ;
275277 } ,
278+ now : clock . now ,
276279 registerDockerDriverGatewayEndpoint,
277280 runCaptureOpenshell : ( args ) => ( args [ 0 ] === "status" ? STATUS_CONNECTED : GATEWAY_INFO ) ,
278- sleepSeconds : ( ) => events . push ( "sleep" ) ,
281+ sleepSeconds : ( seconds ) => {
282+ events . push ( "sleep" ) ;
283+ clock . advance ( seconds ) ;
284+ } ,
279285 skipSandboxBridgeReachability : false ,
280286 startOpenShellGatewayUserService : ( ) => ( {
281287 attempted : true ,
@@ -318,6 +324,7 @@ describe("docker-driver-gateway-service", () => {
318324
319325 it ( "keeps standalone runtime breadcrumbs when service health never becomes ready" , async ( ) => {
320326 const clearDockerDriverGatewayRuntimeFiles = vi . fn ( ) ;
327+ const clock = createVirtualClock ( ) ;
321328
322329 await expect (
323330 startPackageManagedDockerDriverGateway ( {
@@ -326,9 +333,12 @@ describe("docker-driver-gateway-service", () => {
326333 gatewayName : "nemoclaw" ,
327334 hasOpenShellGatewayUserService : ( ) => true ,
328335 healthPollCount : 1 ,
336+ healthPollInterval : 1 ,
329337 isDockerDriverGatewayReady : async ( ) => false ,
338+ now : clock . now ,
330339 registerDockerDriverGatewayEndpoint : ( ) => true ,
331340 runCaptureOpenshell : ( args ) => ( args [ 0 ] === "status" ? STATUS_CONNECTED : GATEWAY_INFO ) ,
341+ sleepSeconds : clock . advance ,
332342 skipSandboxBridgeReachability : false ,
333343 startOpenShellGatewayUserService : ( ) => ( {
334344 attempted : true ,
@@ -337,7 +347,7 @@ describe("docker-driver-gateway-service", () => {
337347 } ) ,
338348 verifySandboxBridgeGatewayReachableOrExit : vi . fn ( ) ,
339349 } ) ,
340- ) . rejects . toThrow ( "did not become healthy " ) ;
350+ ) . rejects . toThrow ( "configured 1s health deadline " ) ;
341351
342352 expect ( clearDockerDriverGatewayRuntimeFiles ) . not . toHaveBeenCalled ( ) ;
343353 } ) ;
0 commit comments