Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/common/test_origin_save.py
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | def test_get_save_origin_task_info_with_es(mocker): | ||||
_get_save_origin_task_info_test(mocker, es_available=True, full_info=False) | _get_save_origin_task_info_test(mocker, es_available=True, full_info=False) | ||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
def test_get_save_origin_task_info_without_es(mocker): | def test_get_save_origin_task_info_without_es(mocker): | ||||
_get_save_origin_task_info_test(mocker, es_available=False) | _get_save_origin_task_info_test(mocker, es_available=False) | ||||
def _mock_scheduler(mocker, task_status="completed", task_archived=False): | def _mock_scheduler( | ||||
mocker, task_status="completed", task_run_status="eventful", task_archived=False | |||||
): | |||||
mock_scheduler = mocker.patch("swh.web.common.origin_save.scheduler") | mock_scheduler = mocker.patch("swh.web.common.origin_save.scheduler") | ||||
task = ( | task = { | ||||
{ | |||||
"arguments": {"args": [], "kwargs": {"repo_url": _origin_url},}, | "arguments": {"args": [], "kwargs": {"repo_url": _origin_url},}, | ||||
"current_interval": timedelta(days=64), | "current_interval": timedelta(days=64), | ||||
"id": _task_id, | "id": _task_id, | ||||
"next_run": datetime.now(tz=timezone.utc) + timedelta(days=64), | "next_run": datetime.now(tz=timezone.utc) + timedelta(days=64), | ||||
"policy": "oneshot", | "policy": "oneshot", | ||||
"priority": "high", | "priority": "high", | ||||
"retries_left": 0, | "retries_left": 0, | ||||
"status": task_status, | "status": task_status, | ||||
"type": "load-git", | "type": "load-git", | ||||
} | } | ||||
if not task_archived | mock_scheduler.get_tasks.return_value = [dict(task) if not task_archived else None] | ||||
else None | |||||
) | |||||
mock_scheduler.get_tasks.return_value = [dict(task) if task else None] | |||||
task_run = { | task_run = { | ||||
"backend_id": "f00c712c-e820-41ce-a07c-9bf8df914205", | "backend_id": "f00c712c-e820-41ce-a07c-9bf8df914205", | ||||
"ended": datetime.now(tz=timezone.utc) + timedelta(minutes=5), | "ended": datetime.now(tz=timezone.utc) + timedelta(minutes=5), | ||||
"id": 654270631, | "id": 654270631, | ||||
"metadata": {}, | "metadata": {}, | ||||
"scheduled": datetime.now(tz=timezone.utc), | "scheduled": datetime.now(tz=timezone.utc), | ||||
"started": None, | "started": None, | ||||
"status": task_status, | "status": task_run_status, | ||||
"task": _task_id, | "task": _task_id, | ||||
} | } | ||||
mock_scheduler.get_task_runs.return_value = [dict(task_run)] | mock_scheduler.get_task_runs.return_value = [ | ||||
dict(task_run) if not task_archived else None | |||||
] | |||||
return task, task_run | return task, task_run | ||||
def _get_save_origin_task_info_test( | def _get_save_origin_task_info_test( | ||||
mocker, task_archived=False, es_available=True, full_info=True | mocker, task_archived=False, es_available=True, full_info=True | ||||
): | ): | ||||
swh_web_config = get_config() | swh_web_config = get_config() | ||||
▲ Show 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | sor = SaveOriginRequest.objects.create( | ||||
origin_url=_origin_url, | origin_url=_origin_url, | ||||
status=SAVE_REQUEST_ACCEPTED, | status=SAVE_REQUEST_ACCEPTED, | ||||
loading_task_id=_task_id, | loading_task_id=_task_id, | ||||
visit_date=None, | visit_date=None, | ||||
) | ) | ||||
sor.request_date = datetime.now(tz=timezone.utc) - timedelta(days=31) | sor.request_date = datetime.now(tz=timezone.utc) - timedelta(days=31) | ||||
sor.save() | sor.save() | ||||
_mock_scheduler(mocker, task_status="disabled") | _mock_scheduler(mocker, task_status="disabled", task_run_status="failed") | ||||
sors = get_save_origin_requests(_visit_type, _origin_url) | sors = get_save_origin_requests(_visit_type, _origin_url) | ||||
assert len(sors) == 2 | assert len(sors) == 2 | ||||
assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | assert sors[0]["save_task_status"] == SAVE_TASK_FAILED | ||||
assert sors[0]["visit_date"] is None | assert sors[0]["visit_date"] is None | ||||
mock_get_origin_visits.assert_called_once() | mock_get_origin_visits.assert_called_once() | ||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
def test_get_save_origin_requests_no_visit_date_found(mocker): | def test_get_save_origin_requests_no_visit_date_found(mocker): | ||||
# create a save request | # create a save request | ||||
SaveOriginRequest.objects.create( | SaveOriginRequest.objects.create( | ||||
request_date=datetime.now(tz=timezone.utc), | request_date=datetime.now(tz=timezone.utc), | ||||
visit_type=_visit_type, | visit_type=_visit_type, | ||||
origin_url=_origin_url, | origin_url=_origin_url, | ||||
status=SAVE_REQUEST_ACCEPTED, | status=SAVE_REQUEST_ACCEPTED, | ||||
visit_date=None, | visit_date=None, | ||||
loading_task_id=_task_id, | loading_task_id=_task_id, | ||||
) | ) | ||||
# mock scheduler and archives | # mock scheduler and archives | ||||
_mock_scheduler(mocker, task_status="next_run_scheduled") | _mock_scheduler( | ||||
mocker, task_status="next_run_scheduled", task_run_status="scheduled" | |||||
) | |||||
mock_archive = mocker.patch("swh.web.common.origin_save.archive") | mock_archive = mocker.patch("swh.web.common.origin_save.archive") | ||||
mock_archive.lookup_origin.return_value = {"url": _origin_url} | mock_archive.lookup_origin.return_value = {"url": _origin_url} | ||||
mock_get_origin_visits = mocker.patch( | mock_get_origin_visits = mocker.patch( | ||||
"swh.web.common.origin_save.get_origin_visits" | "swh.web.common.origin_save.get_origin_visits" | ||||
) | ) | ||||
# create a visit for the save request with status created | # create a visit for the save request with status created | ||||
visit_date = datetime.now(tz=timezone.utc).isoformat() | visit_date = datetime.now(tz=timezone.utc).isoformat() | ||||
visit_info = OriginVisitInfo( | visit_info = OriginVisitInfo( | ||||
Show All 18 Lines |