1313from pytest_simcore .helpers .logging_tools import log_context
1414from servicelib .fastapi .cancellation_middleware import RequestCancellationMiddleware
1515from servicelib .utils import unused_port
16+ from tenacity import retry , stop_after_delay , wait_fixed
1617from yarl import URL
1718
1819
@@ -32,6 +33,12 @@ def fastapi_router(
3233) -> APIRouter :
3334 router = APIRouter ()
3435
36+ @router .get ("/" )
37+ async def root () -> dict [str , str ]:
38+ with log_context (logging .INFO , msg = "root endpoint" ) as ctx :
39+ ctx .logger .info ("root endpoint called" )
40+ return {"message" : "Hello, World!" }
41+
3542 @router .get ("/sleep" )
3643 async def sleep (sleep_time : float ) -> dict [str , str ]:
3744 with log_context (logging .INFO , msg = "sleeper" ) as ctx :
@@ -93,6 +100,16 @@ def uvicorn_server(fastapi_app: FastAPI) -> Iterator[URL]:
93100 thread .daemon = True
94101 thread .start ()
95102
103+ @retry (wait = wait_fixed (0.1 ), stop = stop_after_delay (10 ), reraise = True )
104+ def wait_for_server_ready () -> None :
105+ with httpx .Client () as client :
106+ response = client .get (f"http://127.0.1:{ random_port } /" )
107+ assert (
108+ response .is_success
109+ ), f"Server did not start successfully: { response .status_code } { response .text } "
110+
111+ wait_for_server_ready ()
112+
96113 ctx .logger .info (
97114 "server ready at: %s" ,
98115 f"http://127.0.0.1:{ random_port } " ,
0 commit comments