Skip to content

Commit 4ba68bf

Browse files
committed
minor
1 parent 6e238f2 commit 4ba68bf

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

packages/service-library/tests/fastapi/test_cancellation_middleware.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import httpx
1010
import pytest
1111
import uvicorn
12+
import uvloop
1213
from fastapi import APIRouter, BackgroundTasks, FastAPI
1314
from pytest_simcore.helpers.logging_tools import log_context
1415
from servicelib.fastapi.cancellation_middleware import RequestCancellationMiddleware
@@ -61,6 +62,7 @@ async def _sleep_in_the_back(sleep_time: float) -> None:
6162
await server_cancelled_mock()
6263
finally:
6364
server_done_event.set()
65+
ctx.logger.info("current_loop_id=%s", id(asyncio.get_running_loop()))
6466

6567
@router.get("/sleep-with-background-task")
6668
async def sleep_with_background_task(
@@ -84,15 +86,19 @@ def fastapi_app(fastapi_router: APIRouter) -> FastAPI:
8486

8587
@pytest.fixture
8688
def uvicorn_server(fastapi_app: FastAPI) -> Iterator[URL]:
89+
90+
server_host = "127.0.0.1"
8791
server_port = unused_port()
92+
server_url = f"http://{server_host}:{server_port}"
93+
8894
with log_context(
8995
logging.INFO,
90-
msg=f"with uvicorn server on 127.0.0.1:{server_port}",
96+
msg=f"with uvicorn server on {server_url}",
9197
) as ctx:
9298

9399
config = uvicorn.Config(
94100
fastapi_app,
95-
host="127.0.0.1",
101+
host=server_host,
96102
port=server_port,
97103
log_level="error",
98104
loop="uvloop",
@@ -103,8 +109,6 @@ def uvicorn_server(fastapi_app: FastAPI) -> Iterator[URL]:
103109
thread.daemon = True
104110
thread.start()
105111

106-
server_url = f"http://127.0.0.1:{server_port}"
107-
108112
@retry(wait=wait_fixed(0.1), stop=stop_after_delay(10), reraise=True)
109113
def wait_for_server_ready() -> None:
110114
response = httpx.get(f"{server_url}/")
@@ -114,10 +118,7 @@ def wait_for_server_ready() -> None:
114118

115119
wait_for_server_ready()
116120

117-
ctx.logger.info(
118-
"server ready at: %s",
119-
server_url,
120-
)
121+
ctx.logger.info("server ready at: %s", server_url)
121122

122123
yield URL(server_url)
123124

@@ -131,6 +132,7 @@ async def test_server_cancels_when_client_disconnects(
131132
server_cancelled_mock: AsyncMock,
132133
):
133134
# Implementation of RequestCancellationMiddleware is under test here
135+
assert isinstance(asyncio.get_running_loop(), uvloop.Loop)
134136

135137
async with httpx.AsyncClient(base_url=f"{uvicorn_server}") as client:
136138
# 1. check standard call still complete as expected
@@ -156,6 +158,8 @@ async def test_server_cancels_when_client_disconnects(
156158
)
157159
ctx.logger.info("client disconnected from server")
158160

161+
await asyncio.sleep(0.1) # ensure context switches ???
162+
159163
# request should have been cancelled after the ReadTimoeut!
160164
async with asyncio.timeout(5):
161165
await server_done_event.wait()

0 commit comments

Comments
 (0)