mocker = <pytest_mock.plugin.MockerFixture object at 0x7f105c42e828>
api_client = <rest_framework.test.APIClient object at 0x7f105c42e860>
archive_data = <swh.web.tests.conftest._ArchiveData object at 0x7f105c022128>
@pytest.mark.django_db
def test_refresh_in_progress_save_request_statuses(mocker, api_client, archive_data):
"""Refresh a pending save origins requests and update if the status changes
"""
date_now = datetime.now(tz=timezone.utc)
date_pivot = date_now - timedelta(days=30)
visit_started_date = date_now - timedelta(minutes=1)
# returned visit status
sors = _get_save_origin_requests(
mocker, load_status=SAVE_TASK_SCHEDULED, visit_status="created",
)
assert len(sors) == 1
# make the scheduler return a running event
_mock_scheduler(
mocker,
task_status="next_run_scheduled",
task_run_status="started",
visit_started_date=visit_started_date,
)
# The visit is detected but still running
sors = refresh_save_origin_request_statuses()
assert len(sors) == 1
for sor in sors:
assert iso8601.parse_date(sor["save_request_date"]) >= date_pivot
# The status is updated
assert sor["save_task_status"] == SAVE_TASK_RUNNING
# but the following entries are missing so it's not updated
assert sor["visit_date"] is not None
assert sor["visit_status"] == "created"
# make the visit status completed
# make the scheduler return a running event
_mock_scheduler(
mocker,
task_status="completed",
task_run_status="eventful",
visit_started_date=visit_started_date,
)
# This time around, the origin returned will have all information updated
mock_get_origin_visits = mocker.patch(
"swh.web.common.origin_save.get_origin_visits"
)
# create a visit for the save request with status created
visit_date = datetime.now(tz=timezone.utc).isoformat()
visit_info = OriginVisitInfo(
date=visit_date,
formatted_date="",
metadata={},
origin=_origin_url,
snapshot="", # make mypy happy
status="full",
type=_visit_type,
url="",
visit=34,
)
mock_get_origin_visits.return_value = [visit_info]
# Detected entry, this time it should be updated
sors = refresh_save_origin_request_statuses()
assert len(sors) == 1
for sor in sors:
assert iso8601.parse_date(sor["save_request_date"]) >= date_pivot
# as it turns out, in this test, this won't update anything as no new status got
# returned by the scheduler
assert sor["save_task_status"] == SAVE_TASK_RUNNING
> assert sor["visit_date"] == visit_date
E AssertionError: assert '2021-06-21T1....994798+00:00' == '2021-06-21T1....999971+00:00'
E - 2021-06-21T16:18:24.999971+00:00
E ? ^^^
E + 2021-06-21T16:18:24.994798+00:00
E ? ++ ^
.tox/py3/lib/python3.7/site-packages/swh/web/tests/common/test_origin_save.py:625: AssertionError
TEST RESULT
TEST RESULT
- Run At
- Jun 21 2021, 6:26 PM