Changeset View
Changeset View
Standalone View
Standalone View
swh/scheduler/tests/test_journal_client.py
Show First 20 Lines • Show All 114 Lines • ▼ Show 20 Lines | def test_journal_client_origin_visit_status_from_journal_last_notfound(swh_scheduler): | ||||
assert actual_origin_visit_stats == OriginVisitStats( | assert actual_origin_visit_stats == OriginVisitStats( | ||||
url="foo", | url="foo", | ||||
visit_type="git", | visit_type="git", | ||||
last_eventful=None, | last_eventful=None, | ||||
last_uneventful=None, | last_uneventful=None, | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=visit_status["date"], | last_notfound=visit_status["date"], | ||||
last_snapshot=None, | last_snapshot=None, | ||||
successive_visits=1, | |||||
) | ) | ||||
visit_statuses = [ | visit_statuses = [ | ||||
{ | { | ||||
"origin": "foo", | "origin": "foo", | ||||
"visit": 3, | "visit": 3, | ||||
"status": "not_found", | "status": "not_found", | ||||
"date": DATE2, | "date": DATE2, | ||||
Show All 19 Lines | def test_journal_client_origin_visit_status_from_journal_last_notfound(swh_scheduler): | ||||
assert actual_origin_visit_stats == OriginVisitStats( | assert actual_origin_visit_stats == OriginVisitStats( | ||||
url="foo", | url="foo", | ||||
visit_type="git", | visit_type="git", | ||||
last_eventful=None, | last_eventful=None, | ||||
last_uneventful=None, | last_uneventful=None, | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=DATE3, | last_notfound=DATE3, | ||||
last_snapshot=None, | last_snapshot=None, | ||||
successive_visits=1, | |||||
) | ) | ||||
def test_journal_client_origin_visit_status_from_journal_last_failed(swh_scheduler): | def test_journal_client_origin_visit_status_from_journal_last_failed(swh_scheduler): | ||||
visit_statuses = [ | visit_statuses = [ | ||||
{ | { | ||||
"origin": "foo", | "origin": "foo", | ||||
"visit": 1, | "visit": 1, | ||||
Show All 37 Lines | def test_journal_client_origin_visit_status_from_journal_last_failed(swh_scheduler): | ||||
assert actual_origin_visit_stats == OriginVisitStats( | assert actual_origin_visit_stats == OriginVisitStats( | ||||
url="bar", | url="bar", | ||||
visit_type="git", | visit_type="git", | ||||
last_eventful=None, | last_eventful=None, | ||||
last_uneventful=None, | last_uneventful=None, | ||||
last_failed=DATE3, | last_failed=DATE3, | ||||
last_notfound=None, | last_notfound=None, | ||||
last_snapshot=None, | last_snapshot=None, | ||||
successive_visits=3, | |||||
) | ) | ||||
def test_journal_client_origin_visit_status_from_journal_last_eventful(swh_scheduler): | def test_journal_client_origin_visit_status_from_journal_last_eventful(swh_scheduler): | ||||
visit_statuses = [ | visit_statuses = [ | ||||
{ | { | ||||
"origin": "bar", | "origin": "bar", | ||||
"visit": 1, | "visit": 1, | ||||
Show All 37 Lines | def test_journal_client_origin_visit_status_from_journal_last_eventful(swh_scheduler): | ||||
assert actual_origin_visit_stats == OriginVisitStats( | assert actual_origin_visit_stats == OriginVisitStats( | ||||
url="foo", | url="foo", | ||||
visit_type="git", | visit_type="git", | ||||
last_eventful=DATE3, | last_eventful=DATE3, | ||||
last_uneventful=None, | last_uneventful=None, | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=None, | last_notfound=None, | ||||
last_snapshot=hash_to_bytes("dddcc0710eb6cf9efd5b920a8453e1e07157bddd"), | last_snapshot=hash_to_bytes("dddcc0710eb6cf9efd5b920a8453e1e07157bddd"), | ||||
successive_visits=3, | |||||
) | ) | ||||
def test_journal_client_origin_visit_status_from_journal_last_uneventful(swh_scheduler): | def test_journal_client_origin_visit_status_from_journal_last_uneventful(swh_scheduler): | ||||
visit_status = { | visit_status = { | ||||
"origin": "foo", | "origin": "foo", | ||||
"visit": 1, | "visit": 1, | ||||
"status": "full", | "status": "full", | ||||
"date": DATE3 + ONE_DAY, | "date": DATE3 + ONE_DAY, | ||||
"type": "git", | "type": "git", | ||||
"snapshot": hash_to_bytes("d81cc0710eb6cf9efd5b920a8453e1e07157b6cd"), | "snapshot": hash_to_bytes("d81cc0710eb6cf9efd5b920a8453e1e07157b6cd"), | ||||
} | } | ||||
# Let's insert some visit stats with some previous visit information | # Let's insert some visit stats with some previous visit information | ||||
swh_scheduler.origin_visit_stats_upsert( | swh_scheduler.origin_visit_stats_upsert( | ||||
[ | [ | ||||
OriginVisitStats( | OriginVisitStats( | ||||
url=visit_status["origin"], | url=visit_status["origin"], | ||||
visit_type=visit_status["type"], | visit_type=visit_status["type"], | ||||
last_eventful=DATE1, | last_eventful=DATE1, | ||||
last_uneventful=DATE3, | last_uneventful=DATE3, | ||||
last_failed=DATE2, | last_failed=DATE2, | ||||
last_notfound=DATE1, | last_notfound=DATE1, | ||||
last_snapshot=visit_status["snapshot"], | last_snapshot=visit_status["snapshot"], | ||||
successive_visits=1, | |||||
) | ) | ||||
] | ] | ||||
) | ) | ||||
process_journal_objects( | process_journal_objects( | ||||
{"origin_visit_status": [visit_status]}, scheduler=swh_scheduler | {"origin_visit_status": [visit_status]}, scheduler=swh_scheduler | ||||
) | ) | ||||
actual_origin_visit_stats = swh_scheduler.origin_visit_stats_get( | actual_origin_visit_stats = swh_scheduler.origin_visit_stats_get( | ||||
visit_status["origin"], visit_status["type"] | visit_status["origin"], visit_status["type"] | ||||
) | ) | ||||
assert actual_origin_visit_stats is not None | assert actual_origin_visit_stats is not None | ||||
assert actual_origin_visit_stats == OriginVisitStats( | assert actual_origin_visit_stats == OriginVisitStats( | ||||
url=visit_status["origin"], | url=visit_status["origin"], | ||||
visit_type=visit_status["type"], | visit_type=visit_status["type"], | ||||
last_eventful=DATE1, | last_eventful=DATE1, | ||||
last_uneventful=visit_status["date"], # most recent date but uneventful | last_uneventful=visit_status["date"], # most recent date but uneventful | ||||
last_failed=DATE2, | last_failed=DATE2, | ||||
last_notfound=DATE1, | last_notfound=DATE1, | ||||
last_snapshot=visit_status["snapshot"], | last_snapshot=visit_status["snapshot"], | ||||
successive_visits=1, | |||||
) | ) | ||||
VISIT_STATUSES = [ | VISIT_STATUSES = [ | ||||
{**ovs, "date": DATE1 + n * ONE_DAY} | {**ovs, "date": DATE1 + n * ONE_DAY} | ||||
for n, ovs in enumerate( | for n, ovs in enumerate( | ||||
[ | [ | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | def test_journal_client_origin_visit_status_permutation0(visit_statuses, swh_scheduler): | ||||
expected_visit_stats = OriginVisitStats( | expected_visit_stats = OriginVisitStats( | ||||
url="foo", | url="foo", | ||||
visit_type="git", | visit_type="git", | ||||
last_eventful=DATE1 + ONE_DAY, | last_eventful=DATE1 + ONE_DAY, | ||||
last_uneventful=DATE1 + 3 * ONE_DAY, | last_uneventful=DATE1 + 3 * ONE_DAY, | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=None, | last_notfound=None, | ||||
last_snapshot=hash_to_bytes("d81cc0710eb6cf9efd5b920a8453e1e07157b6cd"), | last_snapshot=hash_to_bytes("d81cc0710eb6cf9efd5b920a8453e1e07157b6cd"), | ||||
successive_visits=1, | |||||
) | ) | ||||
assert swh_scheduler.origin_visit_stats_get("foo", "git") == expected_visit_stats | assert swh_scheduler.origin_visit_stats_get("foo", "git") == expected_visit_stats | ||||
VISIT_STATUSES_1 = [ | VISIT_STATUSES_1 = [ | ||||
{**ovs, "date": DATE1 + n * ONE_DAY} | {**ovs, "date": DATE1 + n * ONE_DAY} | ||||
for n, ovs in enumerate( | for n, ovs in enumerate( | ||||
▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | def test_journal_client_origin_visit_status_permutation1(visit_statuses, swh_scheduler): | ||||
expected_visit_stats = OriginVisitStats( | expected_visit_stats = OriginVisitStats( | ||||
url="cavabarder", | url="cavabarder", | ||||
visit_type="hg", | visit_type="hg", | ||||
last_eventful=DATE1 + 2 * ONE_DAY, | last_eventful=DATE1 + 2 * ONE_DAY, | ||||
last_uneventful=DATE1 + 3 * ONE_DAY, | last_uneventful=DATE1 + 3 * ONE_DAY, | ||||
last_failed=None, | last_failed=None, | ||||
last_notfound=None, | last_notfound=None, | ||||
last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), | ||||
ardumont: lol, what are the odds that for all the cases we designed in those tests and given their… | |||||
Done Inline Actionsactually for this test (and the one before) it is not a surprise. We only have one event of each type (since 2 visits giving the same snapshot gives 1 eventful then 1 uneventful whichever order you get the messages). It would not have been the case with 3 visits (in a row) with the same snapshot, but this is not a tested case (with permutations). douardda: actually for this test (and the one before) it is not a surprise. We only have one event of… | |||||
successive_visits=1, | |||||
) | ) | ||||
assert ( | assert ( | ||||
swh_scheduler.origin_visit_stats_get("cavabarder", "hg") == expected_visit_stats | swh_scheduler.origin_visit_stats_get("cavabarder", "hg") == expected_visit_stats | ||||
) | ) | ||||
VISIT_STATUSES_2 = [ | VISIT_STATUSES_2 = [ | ||||
▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines |
lol, what are the odds that for all the cases we designed in those tests and given their permutations, every output would give successive_visits to 1 each time... ¯\_(ツ)_/¯