diff --git a/swh/scheduler/tests/test_journal_client.py b/swh/scheduler/tests/test_journal_client.py --- a/swh/scheduler/tests/test_journal_client.py +++ b/swh/scheduler/tests/test_journal_client.py @@ -7,6 +7,7 @@ from datetime import timedelta import functools from itertools import permutations +from typing import List from unittest.mock import Mock import attr @@ -130,7 +131,11 @@ swh_scheduler.origin_visit_stats_upsert.assert_not_called() -def assert_visit_stats_ok(actual_visit_stats, expected_visit_stats): +def assert_visit_stats_ok( + actual_visit_stats: List[OriginVisitStats], + expected_visit_stats: List[OriginVisitStats], + ignore_fields: List[str] = ["next_visit_queue_position"], +): """Utility test function to ensure visits stats read from the backend are in the right shape. The comparison on the next_visit_queue_position will be dealt with in dedicated tests so it's not tested in tests that are calling this function. @@ -138,9 +143,11 @@ """ assert len(actual_visit_stats) == len(expected_visit_stats) - for visit_stats in actual_visit_stats: - visit_stats = attr.evolve(visit_stats, next_visit_queue_position=None) + fields = attr.fields_dict(OriginVisitStats) + defaults = {field: fields[field].default for field in ignore_fields} + for visit_stats in actual_visit_stats: + visit_stats = attr.evolve(visit_stats, **defaults) assert visit_stats in expected_visit_stats @@ -539,16 +546,25 @@ {"origin_visit_status": visit_statuses}, scheduler=swh_scheduler ) - (actual_visit_stats,) = swh_scheduler.origin_visit_stats_get([("cavabarder", "hg")]) + actual_visit_stats = swh_scheduler.origin_visit_stats_get([("cavabarder", "hg")]) - assert actual_visit_stats.url == "cavabarder" - assert actual_visit_stats.visit_type == "hg" - assert actual_visit_stats.last_eventful == DATE1 + 2 * ONE_DAY - assert actual_visit_stats.last_uneventful == DATE1 + 3 * ONE_DAY - assert actual_visit_stats.last_failed is None - assert actual_visit_stats.last_notfound is None - assert actual_visit_stats.last_snapshot == hash_to_bytes( - "aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd" + assert_visit_stats_ok( + actual_visit_stats, + [ + OriginVisitStats( + url="cavabarder", + visit_type="hg", + last_eventful=DATE1 + 2 * ONE_DAY, + last_uneventful=DATE1 + 3 * ONE_DAY, + last_failed=None, + last_notfound=None, + last_snapshot=hash_to_bytes("aaaaaabbbeb6cf9efd5b920a8453e1e07157b6cd"), + ) + ], + ignore_fields=[ + "next_visit_queue_position", + "next_position_offset", # depending on the permutations, the value differs + ], )