Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/svn/tests/test_task.py
| # Copyright (C) 2019-2021 The Software Heritage developers | # Copyright (C) 2019-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 | ||||
| from datetime import datetime, timezone | import uuid | ||||
| import pytest | import pytest | ||||
| from swh.loader.svn.tasks import convert_to_datetime | from swh.scheduler.model import ListedOrigin, Lister | ||||
| from swh.scheduler.utils import create_origin_task_dict | |||||
| @pytest.fixture(autouse=True) | |||||
| def celery_worker_and_swh_config(swh_scheduler_celery_worker, swh_config): | |||||
| pass | |||||
| @pytest.fixture | |||||
| def svn_lister(): | |||||
| return Lister(name="svn-lister", instance_name="example", id=uuid.uuid4()) | |||||
| @pytest.fixture | |||||
| def svn_listed_origin(svn_lister): | |||||
| return ListedOrigin( | |||||
| lister_id=svn_lister.id, url="svn://example.org/repo", visit_type="svn" | |||||
| ) | |||||
| @pytest.fixture | |||||
| def task_dict(svn_lister, svn_listed_origin): | |||||
| return create_origin_task_dict(svn_listed_origin, svn_lister) | |||||
| def test_svn_loader( | def test_svn_loader( | ||||
| mocker, swh_scheduler_celery_app, swh_scheduler_celery_worker, swh_config | mocker, | ||||
| swh_scheduler_celery_app, | |||||
| ): | ): | ||||
| mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoader.load") | mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoader.load") | ||||
| mock_loader.return_value = {"status": "eventful"} | mock_loader.return_value = {"status": "eventful"} | ||||
| res = swh_scheduler_celery_app.send_task( | res = swh_scheduler_celery_app.send_task( | ||||
| "swh.loader.svn.tasks.LoadSvnRepository", | "swh.loader.svn.tasks.LoadSvnRepository", | ||||
| kwargs=dict(url="some-technical-url", origin_url="origin-url"), | kwargs=dict(url="some-technical-url", origin_url="origin-url"), | ||||
| ) | ) | ||||
| assert res | assert res | ||||
| res.wait() | res.wait() | ||||
| assert res.successful() | assert res.successful() | ||||
| assert res.result == {"status": "eventful"} | assert res.result == {"status": "eventful"} | ||||
| def test_svn_loader_for_listed_origin( | |||||
| mocker, | |||||
| swh_scheduler_celery_app, | |||||
| task_dict, | |||||
| ): | |||||
| mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoader.load") | |||||
| mock_loader.return_value = {"status": "eventful"} | |||||
| res = swh_scheduler_celery_app.send_task( | |||||
| "swh.loader.svn.tasks.LoadSvnRepository", | |||||
| args=task_dict["arguments"]["args"], | |||||
| kwargs=task_dict["arguments"]["kwargs"], | |||||
| ) | |||||
| assert res | |||||
| res.wait() | |||||
| assert res.successful() | |||||
| assert res.result == {"status": "eventful"} | |||||
| def test_svn_loader_from_dump( | def test_svn_loader_from_dump( | ||||
| mocker, swh_scheduler_celery_app, swh_scheduler_celery_worker, swh_config | mocker, | ||||
| swh_scheduler_celery_app, | |||||
| ): | ): | ||||
| mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromDumpArchive.load") | mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromDumpArchive.load") | ||||
| mock_loader.return_value = {"status": "eventful"} | mock_loader.return_value = {"status": "eventful"} | ||||
| res = swh_scheduler_celery_app.send_task( | res = swh_scheduler_celery_app.send_task( | ||||
| "swh.loader.svn.tasks.MountAndLoadSvnRepository", | "swh.loader.svn.tasks.MountAndLoadSvnRepository", | ||||
| kwargs=dict(url="some-url", archive_path="some-path"), | kwargs=dict(url="some-url", archive_path="some-path"), | ||||
| ) | ) | ||||
| assert res | assert res | ||||
| res.wait() | res.wait() | ||||
| assert res.successful() | assert res.successful() | ||||
| assert res.result == {"status": "eventful"} | assert res.result == {"status": "eventful"} | ||||
| def test_svn_loader_from_dump_for_listed_origin( | |||||
| mocker, | |||||
| swh_scheduler_celery_app, | |||||
| svn_lister, | |||||
| svn_listed_origin, | |||||
| ): | |||||
| mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromDumpArchive.load") | |||||
| mock_loader.return_value = {"status": "eventful"} | |||||
| svn_listed_origin.extra_loader_arguments = {"archive_path": "some-path"} | |||||
| task_dict = create_origin_task_dict(svn_listed_origin, svn_lister) | |||||
| res = swh_scheduler_celery_app.send_task( | |||||
| "swh.loader.svn.tasks.MountAndLoadSvnRepository", | |||||
| args=task_dict["arguments"]["args"], | |||||
| kwargs=task_dict["arguments"]["kwargs"], | |||||
| ) | |||||
| assert res | |||||
| res.wait() | |||||
| assert res.successful() | |||||
| assert res.result == {"status": "eventful"} | |||||
| def test_svn_loader_from_remote_dump( | def test_svn_loader_from_remote_dump( | ||||
| mocker, swh_scheduler_celery_app, swh_scheduler_celery_worker, swh_config | mocker, | ||||
| swh_scheduler_celery_app, | |||||
| ): | ): | ||||
| mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromRemoteDump.load") | mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromRemoteDump.load") | ||||
| mock_loader.return_value = {"status": "eventful"} | mock_loader.return_value = {"status": "eventful"} | ||||
| res = swh_scheduler_celery_app.send_task( | res = swh_scheduler_celery_app.send_task( | ||||
| "swh.loader.svn.tasks.DumpMountAndLoadSvnRepository", | "swh.loader.svn.tasks.DumpMountAndLoadSvnRepository", | ||||
| kwargs=dict(url="some-remote-dump-url", origin_url="origin-url"), | kwargs=dict(url="some-remote-dump-url", origin_url="origin-url"), | ||||
| ) | ) | ||||
| assert res | assert res | ||||
| res.wait() | res.wait() | ||||
| assert res.successful() | assert res.successful() | ||||
| assert res.result == {"status": "eventful"} | assert res.result == {"status": "eventful"} | ||||
| @pytest.mark.parametrize( | def test_svn_loader_from_remote_dump_for_listed_origin( | ||||
| "date,expected_result", | mocker, | ||||
| [ | swh_scheduler_celery_app, | ||||
| (None, None), | task_dict, | ||||
| ( | ): | ||||
| "2021-11-23 09:41:02.434195+00:00", | mock_loader = mocker.patch("swh.loader.svn.loader.SvnLoaderFromRemoteDump.load") | ||||
| datetime(2021, 11, 23, 9, 41, 2, 434195, tzinfo=timezone.utc), | mock_loader.return_value = {"status": "eventful"} | ||||
| ), | |||||
| ( | res = swh_scheduler_celery_app.send_task( | ||||
| "23112021", | "swh.loader.svn.tasks.DumpMountAndLoadSvnRepository", | ||||
| None, | args=task_dict["arguments"]["args"], | ||||
| ), # failure to parse | kwargs=task_dict["arguments"]["kwargs"], | ||||
| ], | |||||
| ) | ) | ||||
| def test_convert_to_datetime(date, expected_result): | assert res | ||||
| assert convert_to_datetime(date) == expected_result | res.wait() | ||||
| assert res.successful() | |||||
| assert res.result == {"status": "eventful"} | |||||