Skip to content
Snippets Groups Projects
Commit 8cb84a77 authored by Antoine Lambert's avatar Antoine Lambert
Browse files

test_retry: Fix mocking of sleep calls with tenacity 8.4.2

Latest tenacity release adds some internal changes that broke the
mocking of sleep calls in tests.

Fix it by directly mocking time.sleep (was not working previously).
parent e067afd6
No related branches found
Tags debian/upstream/0.6.3
No related merge requests found
Pipeline #9476 passed
......@@ -4,4 +4,4 @@ python-magic
pyyaml
requests
sentry-sdk >= 2
tenacity
tenacity >= 8.4.2
# Copyright (C) 2023 The Software Heritage developers
# Copyright (C) 2023-2024 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import time
import pytest
import requests
from requests.status_codes import codes
......@@ -20,6 +22,11 @@ def make_request():
return response
@pytest.fixture
def mock_sleep(mocker):
return mocker.patch.object(time, "sleep")
def assert_sleep_calls(mocker, mock_sleep, sleep_params):
mock_sleep.assert_has_calls([mocker.call(param) for param in sleep_params])
......@@ -33,7 +40,7 @@ def assert_sleep_calls(mocker, mock_sleep, sleep_params):
codes.service_unavailable,
],
)
def test_http_retry(requests_mock, mocker, status_code):
def test_http_retry(requests_mock, mocker, mock_sleep, status_code):
data = {"result": {}}
requests_mock.get(
TEST_URL,
......@@ -44,8 +51,6 @@ def test_http_retry(requests_mock, mocker, status_code):
],
)
mock_sleep = mocker.patch.object(make_request.retry, "sleep")
response = make_request()
assert_sleep_calls(mocker, mock_sleep, [1, WAIT_EXP_BASE])
......@@ -53,14 +58,12 @@ def test_http_retry(requests_mock, mocker, status_code):
assert response.json() == data
def test_http_retry_max_attemps(requests_mock, mocker):
def test_http_retry_max_attemps(requests_mock, mocker, mock_sleep):
requests_mock.get(
TEST_URL,
[{"status_code": codes.too_many_requests}] * (MAX_NUMBER_ATTEMPTS),
)
mock_sleep = mocker.patch.object(make_request.retry, "sleep")
with pytest.raises(requests.exceptions.HTTPError) as e:
make_request()
......@@ -80,7 +83,7 @@ def make_request_wait_fixed():
return response
def test_http_retry_wait_fixed(requests_mock, mocker):
def test_http_retry_wait_fixed(requests_mock, mocker, mock_sleep):
requests_mock.get(
TEST_URL,
[
......@@ -90,8 +93,6 @@ def test_http_retry_wait_fixed(requests_mock, mocker):
],
)
mock_sleep = mocker.patch.object(make_request_wait_fixed.retry, "sleep")
make_request_wait_fixed()
assert_sleep_calls(mocker, mock_sleep, [WAIT_EXP_BASE] * 2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment