Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions tests/unit/http_clients/test_http_clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -413,14 +413,20 @@ async def test_read_twice_returns_same_body(http_client: HttpClient, server_url:
assert await response.read() == HELLO_WORLD


async def test_read_again_after_timeout(http_client: HttpClient, server_url: URL) -> None:
async def test_read_again_after_timeout(
http_client: HttpClient, server_url: URL, monkeypatch: pytest.MonkeyPatch
) -> None:
"""Test that a body read within the timeout is returned again by `read` once the timeout has passed."""
async with await http_client.send_request(str(server_url), timeout=timedelta(milliseconds=200)) as response:
body = await response.read()
loop = asyncio.get_running_loop()
loop_time = loop.time

await asyncio.sleep(0.3)
async with await http_client.send_request(str(server_url), timeout=timedelta(seconds=10)) as response:
body = await response.read()

assert await response.read() == body
# The response deadline is measured on the loop clock, so moving the clock passes it without waiting.
with monkeypatch.context() as m:
m.setattr(loop, 'time', lambda: loop_time() + 60)
assert await response.read() == body


async def test_aclose_is_idempotent(http_client: HttpClient, server_url: URL) -> None:
Expand Down Expand Up @@ -891,7 +897,9 @@ async def handle(reader: asyncio.StreamReader, writer: asyncio.StreamWriter) ->
async with response:
assert await response.read() == b'ok'

connection_opened.assert_called_once()
# `impit` returns a drained connection to its pool in the background, so a request sent right after a close can
# still open a second connection. Dropping the connections of the closed responses would take three.
assert connection_opened.call_count <= 2


@pytest.mark.parametrize(
Expand Down
Loading