diff --git a/requirements.txt b/requirements.txt index 87e7f99f638cf0597e10a14069fa6ba64f650765..90d46982e6761da9d04675a8d7c09cdeddd181ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,7 @@ iso8601 pkginfo python-debian python-dateutil +tenacity >= 8.4.2 typing-extensions toml packaging diff --git a/swh/loader/core/tests/test_loader.py b/swh/loader/core/tests/test_loader.py index 999a4dcf3af46fd8a478c9a24c68d57770371398..5af3054dc3c2b219a8640b235dc301915a6070e4 100644 --- a/swh/loader/core/tests/test_loader.py +++ b/swh/loader/core/tests/test_loader.py @@ -21,7 +21,6 @@ from swh.loader.core.loader import ( BaseLoader, ContentLoader, TarballDirectoryLoader, - download_orig, ) from swh.loader.core.metadata_fetchers import MetadataFetcherProtocol from swh.loader.core.tests.dummy_loader import ( @@ -625,7 +624,13 @@ def test_directory_loader_404_with_fallback( def test_directory_loader_500_with_fallback( - caplog, swh_storage, requests_mock_datadir, tarball_path, requests_mock, mocker + caplog, + swh_storage, + requests_mock_datadir, + tarball_path, + requests_mock, + mocker, + mock_sleep, ): """It should not ingest origin when there is no tarball to be found""" unknown_origin = Origin(f"{DIRECTORY_MIRROR}/archives/unknown.tbz2") @@ -633,8 +638,6 @@ def test_directory_loader_500_with_fallback( requests_mock.get(unknown_origin.url, status_code=500) requests_mock.get(fallback_url_ko, status_code=500) - mock_sleep = mocker.patch.object(download_orig.retry, "sleep") - loader = TarballDirectoryLoader( swh_storage, unknown_origin.url, diff --git a/swh/loader/pytest_plugin.py b/swh/loader/pytest_plugin.py index 19e9db97f4e76afcd38a7308063a4cfc5a1c52ed..1b148220b4788ab3bf31f8f6db4fb92488a4619b 100644 --- a/swh/loader/pytest_plugin.py +++ b/swh/loader/pytest_plugin.py @@ -9,11 +9,15 @@ from typing import Any, Dict import pytest import yaml -from swh.loader.core.utils import download, get_url_body from swh.scheduler.model import ListedOrigin, Lister from swh.scheduler.utils import create_origin_task +@pytest.fixture(autouse=True) +def mock_sleep(mocker): + return mocker.patch("time.sleep") + + @pytest.fixture def swh_storage_backend_config(swh_storage_postgresql) -> Dict[str, Any]: return { @@ -64,7 +68,12 @@ def loading_task_creation_for_listed_origin_test( swh_scheduler_celery_app, swh_scheduler_celery_worker, swh_config, + mock_sleep, ): + # unset mocking of time.sleep as celery task execution takes + # too many time otherwise + mocker.stop(mock_sleep) + def test_implementation( loader_class_name: str, task_function_name: str, @@ -73,7 +82,6 @@ def loading_task_creation_for_listed_origin_test( ): mock_load = mocker.patch(f"{loader_class_name}.load") mock_load.return_value = {"status": "eventful"} - task = create_origin_task(listed_origin, lister) res = swh_scheduler_celery_app.send_task( @@ -81,15 +89,10 @@ def loading_task_creation_for_listed_origin_test( kwargs=task.arguments.kwargs, ) assert res + res.wait() assert res.successful() assert mock_load.called assert res.result == {"status": "eventful"} return test_implementation - - -@pytest.fixture(autouse=True) -def mock_retry_sleep(mocker): - mocker.patch.object(download.retry, "sleep") - mocker.patch.object(get_url_body.retry, "sleep")