Skip to content

Commit da7ee99

Browse files
authored
test: bound the HTTP-date Retry-After delay by the call's own clock window (#157)
1 parent b1fe7e5 commit da7ee99

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

‎tests/test_retry.py‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ async def test_retry_after_seconds_overrides_backoff() -> None:
271271

272272
async def test_retry_after_http_date_overrides_backoff() -> None:
273273
sleeper = _SleepRecorder()
274-
future = datetime.datetime.now(datetime.UTC) + datetime.timedelta(seconds=3)
274+
before = datetime.datetime.now(datetime.UTC)
275+
future = before.replace(microsecond=0) + datetime.timedelta(seconds=3)
275276
http_date = email.utils.format_datetime(future, usegmt=True)
276277
handler = _ResponseSequenceWithHeaders(
277278
[
@@ -281,9 +282,10 @@ async def test_retry_after_http_date_overrides_backoff() -> None:
281282
)
282283
client = _client(handler, retry=AsyncRetry(_sleep=sleeper, base_delay=0.01, max_delay=10.0))
283284
response = await client.get("https://example.test/x")
285+
after = datetime.datetime.now(datetime.UTC)
284286
assert response.status_code == HTTPStatus.OK
285287
assert len(sleeper.calls) == 1
286-
assert 2.0 <= sleeper.calls[0] <= 4.0 # noqa: PLR2004 — ~3 seconds, with clock-skew tolerance
288+
assert (future - after).total_seconds() <= sleeper.calls[0] <= (future - before).total_seconds()
287289

288290

289291
async def test_retry_after_exceeding_max_delay_raises_with_note() -> None:

0 commit comments

Comments
 (0)