Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/mercurial/tests/test_tasks.py
# Copyright (C) 2018-2022 The Software Heritage developers | # Copyright (C) 2018-2022 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import uuid | import uuid | ||||
import pytest | import pytest | ||||
from swh.scheduler.model import ListedOrigin, Lister | from swh.scheduler.model import ListedOrigin, Lister | ||||
from swh.scheduler.utils import create_origin_task_dict | |||||
NAMESPACE = "swh.loader.mercurial" | |||||
@pytest.fixture(autouse=True) | |||||
def celery_worker_and_swh_config(swh_scheduler_celery_worker, swh_config): | |||||
pass | |||||
@pytest.fixture | @pytest.fixture | ||||
def hg_lister(): | def hg_lister(): | ||||
return Lister(name="hg-lister", instance_name="example", id=uuid.uuid4()) | return Lister(name="hg-lister", instance_name="example", id=uuid.uuid4()) | ||||
@pytest.fixture | @pytest.fixture | ||||
def hg_listed_origin(hg_lister): | def hg_listed_origin(hg_lister): | ||||
return ListedOrigin( | return ListedOrigin( | ||||
lister_id=hg_lister.id, url="https://hg.example.org/repo", visit_type="hg" | lister_id=hg_lister.id, url="https://hg.example.org/repo", visit_type="hg" | ||||
) | ) | ||||
def test_loader( | @pytest.mark.parametrize("extra_loader_arguments", [{}, {"visit_date": "now"}]) | ||||
mocker, | def test_mercurial_loader_for_listed_origin( | ||||
swh_scheduler_celery_app, | loading_task_creation_for_listed_origin_test, | ||||
): | |||||
mock_loader = mocker.patch("swh.loader.mercurial.loader.HgLoader.load") | |||||
mock_loader.return_value = {"status": "eventful"} | |||||
res = swh_scheduler_celery_app.send_task( | |||||
"swh.loader.mercurial.tasks.LoadMercurial", | |||||
kwargs={"url": "origin_url", "visit_date": "now"}, | |||||
) | |||||
assert res | |||||
res.wait() | |||||
assert res.successful() | |||||
assert res.result == {"status": "eventful"} | |||||
mock_loader.assert_called_once_with() | |||||
def test_loader_for_listed_origin( | |||||
mocker, | |||||
swh_scheduler_celery_app, | |||||
hg_lister, | hg_lister, | ||||
hg_listed_origin, | hg_listed_origin, | ||||
extra_loader_arguments, | |||||
): | ): | ||||
mock_loader = mocker.patch("swh.loader.mercurial.loader.HgLoader.load") | hg_listed_origin.extra_loader_arguments = extra_loader_arguments | ||||
mock_loader.return_value = {"status": "eventful"} | |||||
task_dict = create_origin_task_dict(hg_listed_origin, hg_lister) | |||||
res = swh_scheduler_celery_app.send_task( | loading_task_creation_for_listed_origin_test( | ||||
"swh.loader.mercurial.tasks.LoadMercurial", | loader_class_name=f"{NAMESPACE}.loader.HgLoader", | ||||
kwargs=task_dict["arguments"]["kwargs"], | task_function_name=f"{NAMESPACE}.tasks.LoadMercurial", | ||||
lister=hg_lister, | |||||
listed_origin=hg_listed_origin, | |||||
) | ) | ||||
assert res | |||||
res.wait() | |||||
assert res.successful() | |||||
assert res.result == {"status": "eventful"} | @pytest.mark.parametrize( | ||||
mock_loader.assert_called_once_with() | "extra_loader_arguments", | ||||
[ | |||||
{"archive_path": "/some/tar.tgz"}, | |||||
def test_archive_loader( | {"archive_path": "/some/tar.tgz", "visit_date": "now"}, | ||||
mocker, | ], | ||||
swh_scheduler_celery_app, | |||||
): | |||||
mock_loader = mocker.patch("swh.loader.mercurial.loader.HgArchiveLoader.load") | |||||
mock_loader.return_value = {"status": "uneventful"} | |||||
res = swh_scheduler_celery_app.send_task( | |||||
"swh.loader.mercurial.tasks.LoadArchiveMercurial", | |||||
kwargs={ | |||||
"url": "another_url", | |||||
"archive_path": "/some/tar.tgz", | |||||
"visit_date": "now", | |||||
}, | |||||
) | ) | ||||
assert res | def test_mercurial_archive_loader_for_listed_origin( | ||||
res.wait() | loading_task_creation_for_listed_origin_test, | ||||
assert res.successful() | |||||
assert res.result == {"status": "uneventful"} | |||||
mock_loader.assert_called_once_with() | |||||
def test_archive_loader_for_listed_origin( | |||||
mocker, | |||||
swh_scheduler_celery_app, | |||||
hg_lister, | hg_lister, | ||||
hg_listed_origin, | hg_listed_origin, | ||||
extra_loader_arguments, | |||||
): | ): | ||||
mock_loader = mocker.patch("swh.loader.mercurial.loader.HgArchiveLoader.load") | hg_listed_origin.extra_loader_arguments = extra_loader_arguments | ||||
mock_loader.return_value = {"status": "uneventful"} | |||||
hg_listed_origin.extra_loader_arguments = { | loading_task_creation_for_listed_origin_test( | ||||
"archive_path": "/some/tar.tgz", | loader_class_name=f"{NAMESPACE}.loader.HgArchiveLoader", | ||||
} | task_function_name=f"{NAMESPACE}.tasks.LoadArchiveMercurial", | ||||
lister=hg_lister, | |||||
task_dict = create_origin_task_dict(hg_listed_origin, hg_lister) | listed_origin=hg_listed_origin, | ||||
res = swh_scheduler_celery_app.send_task( | |||||
"swh.loader.mercurial.tasks.LoadArchiveMercurial", | |||||
kwargs=task_dict["arguments"]["kwargs"], | |||||
) | ) | ||||
assert res | |||||
res.wait() | |||||
assert res.successful() | |||||
assert res.result == {"status": "uneventful"} | |||||
mock_loader.assert_called_once_with() |