Changeset View
Changeset View
Standalone View
Standalone View
swh/scheduler/tests/test_journal_client.py
Show All 20 Lines | def test_journal_client_origin_visit_status_from_journal_fail(swh_scheduler): | ||||
with pytest.raises(AssertionError, match="Got unexpected origin_visit"): | with pytest.raises(AssertionError, match="Got unexpected origin_visit"): | ||||
process_fn({"origin_visit": [{"url": "http://foobar.baz"},]}) | process_fn({"origin_visit": [{"url": "http://foobar.baz"},]}) | ||||
with pytest.raises(AssertionError, match="Expected origin_visit_status"): | with pytest.raises(AssertionError, match="Expected origin_visit_status"): | ||||
process_fn({}) | process_fn({}) | ||||
ONE_DAY = datetime.timedelta(days=1) | ONE_DAY = datetime.timedelta(days=1) | ||||
ONE_YEAR = datetime.timedelta(days=366) | |||||
DATE3 = utcnow() | DATE3 = utcnow() | ||||
DATE2 = DATE3 - ONE_DAY | DATE2 = DATE3 - ONE_DAY | ||||
DATE1 = DATE2 - ONE_DAY | DATE1 = DATE2 - ONE_DAY | ||||
assert DATE1 < DATE2 < DATE3 | assert DATE1 < DATE2 < DATE3 | ||||
▲ Show 20 Lines • Show All 584 Lines • ▼ Show 20 Lines | expected_visit_stats = OriginVisitStats( | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=None, | last_notfound=None, | ||||
last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | ||||
) | ) | ||||
assert swh_scheduler.origin_visit_stats_get([("foo", "git")]) == [ | assert swh_scheduler.origin_visit_stats_get([("foo", "git")]) == [ | ||||
expected_visit_stats | expected_visit_stats | ||||
] | ] | ||||
VISIT_STATUSES_SAME_SNAPSHOT = [ | |||||
{**ovs, "date": DATE1 + n * ONE_YEAR} | |||||
for n, ovs in enumerate( | |||||
[ | |||||
{ | |||||
"origin": "cavabarder", | |||||
"type": "hg", | |||||
"visit": 3, | |||||
"status": "full", | |||||
"snapshot": hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | |||||
}, | |||||
{ | |||||
"origin": "cavabarder", | |||||
"type": "hg", | |||||
"visit": 4, | |||||
"status": "full", | |||||
"snapshot": hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | |||||
}, | |||||
{ | |||||
"origin": "cavabarder", | |||||
"type": "hg", | |||||
"visit": 4, | |||||
"status": "full", | |||||
"snapshot": hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | |||||
}, | |||||
] | |||||
) | |||||
] | |||||
@pytest.mark.parametrize( | |||||
"visit_statuses", | |||||
permutations(VISIT_STATUSES_SAME_SNAPSHOT, len(VISIT_STATUSES_SAME_SNAPSHOT)), | |||||
) | |||||
def test_journal_client_origin_visit_statuses_same_snapshot_permutation( | |||||
visit_statuses, swh_scheduler | |||||
): | |||||
"""Ensure out of order topic subscription ends up in the same final state | |||||
""" | |||||
process_journal_objects( | |||||
{"origin_visit_status": visit_statuses}, scheduler=swh_scheduler | |||||
) | |||||
expected_visit_stats = OriginVisitStats( | |||||
url="cavabarder", | |||||
visit_type="hg", | |||||
last_eventful=DATE1, | |||||
last_uneventful=DATE1 + 2 * ONE_YEAR, | |||||
last_failed=None, | |||||
last_notfound=None, | |||||
last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | |||||
) | |||||
assert swh_scheduler.origin_visit_stats_get([("cavabarder", "hg")]) == [ | |||||
expected_visit_stats | |||||
] |