diff --git a/swh/storage/pytest_plugin.py b/swh/storage/pytest_plugin.py --- a/swh/storage/pytest_plugin.py +++ b/swh/storage/pytest_plugin.py @@ -21,6 +21,7 @@ Content, Directory, Origin, + OriginVisit, Person, Release, Revision, @@ -214,8 +215,9 @@ "directory": [data.dir2, data.dir], "revision": [data.revision, data.revision2, data.revision3], "release": [data.release, data.release2, data.release3], - "snapshot": [data.snapshot], + "snapshot": [data.snapshot, data.empty_snapshot, data.complete_snapshot], "origin": [data.origin, data.origin2], + "origin_visit": [data.origin_visit, data.origin_visit2, data.origin_visit3], "fetcher": [data.metadata_fetcher], "authority": [data.metadata_authority], "origin_metadata": [data.origin_metadata, data.origin_metadata2], @@ -234,6 +236,7 @@ "release": Release.from_dict, "snapshot": Snapshot.from_dict, "origin": Origin.from_dict, + "origin_visit": OriginVisit.from_dict, } diff --git a/swh/storage/tests/algos/test_snapshot.py b/swh/storage/tests/algos/test_snapshot.py --- a/swh/storage/tests/algos/test_snapshot.py +++ b/swh/storage/tests/algos/test_snapshot.py @@ -8,13 +8,11 @@ from swh.model.collections import ImmutableDict from swh.model.hypothesis_strategies import snapshots, branch_names, branch_targets -from swh.model.model import Origin, OriginVisit, OriginVisitStatus, Snapshot +from swh.model.model import OriginVisit, OriginVisitStatus, Snapshot from swh.storage.algos.snapshot import snapshot_get_all_branches, snapshot_get_latest from swh.storage.utils import now -from swh.storage.tests.storage_data import data - @pytest.fixture def swh_storage_backend_config(): @@ -26,11 +24,10 @@ @given(snapshot=snapshots(min_size=0, max_size=10, only_objects=False)) def test_snapshot_small(swh_storage, snapshot): # noqa - snapshot = snapshot.to_dict() swh_storage.snapshot_add([snapshot]) - returned_snapshot = snapshot_get_all_branches(swh_storage, snapshot["id"]) - assert snapshot == returned_snapshot + returned_snapshot = snapshot_get_all_branches(swh_storage, snapshot.id) + assert snapshot.to_dict() == returned_snapshot @given(branch_name=branch_names(), branch_target=branch_targets(only_objects=True)) @@ -47,7 +44,7 @@ assert snapshot.to_dict() == returned_snapshot -def test_snapshot_get_latest_none(swh_storage): +def test_snapshot_get_latest_none(swh_storage, sample_data_model): """Retrieve latest snapshot on unknown origin or origin without snapshot should yield no result @@ -56,11 +53,12 @@ assert snapshot_get_latest(swh_storage, "unknown-origin") is None # no snapshot on origin visit so None - origin = Origin.from_dict(data.origin) + origin = sample_data_model["origin"][0] swh_storage.origin_add_one(origin) - swh_storage.origin_visit_add( - [OriginVisit(origin=origin.url, date=data.date_visit1, type=data.type_visit1,)] - ) + origin_visit, origin_visit2 = sample_data_model["origin_visit"][:2] + assert origin_visit.origin == origin.url + + swh_storage.origin_visit_add([origin_visit]) assert snapshot_get_latest(swh_storage, origin.url) is None ov1 = swh_storage.origin_visit_get_latest(origin.url) @@ -69,13 +67,13 @@ # visit references a snapshot but the snapshot does not exist in backend for some # reason - complete_snapshot = Snapshot.from_dict(data.complete_snapshot) + complete_snapshot = sample_data_model["snapshot"][2] swh_storage.origin_visit_status_add( [ OriginVisitStatus( origin=origin.url, visit=visit_id, - date=data.date_visit2, + date=origin_visit2.date, status="partial", snapshot=complete_snapshot.id, ) @@ -86,19 +84,19 @@ assert snapshot_get_latest(swh_storage, origin.url, branches_count=1) is None -def test_snapshot_get_latest(swh_storage): - origin = Origin.from_dict(data.origin) +def test_snapshot_get_latest(swh_storage, sample_data_model): + origin = sample_data_model["origin"][0] swh_storage.origin_add_one(origin) - visit1 = OriginVisit( - origin=origin.url, date=data.date_visit1, type=data.type_visit1, - ) + visit1, visit2 = sample_data_model["origin_visit"][:2] + assert visit1.origin == origin.url + swh_storage.origin_visit_add([visit1]) ov1 = swh_storage.origin_visit_get_latest(origin.url) visit_id = ov1["visit"] # Add snapshot to visit1, latest snapshot = visit 1 snapshot - complete_snapshot = Snapshot.from_dict(data.complete_snapshot) + complete_snapshot = sample_data_model["snapshot"][2] swh_storage.snapshot_add([complete_snapshot]) swh_storage.origin_visit_status_add( @@ -106,13 +104,13 @@ OriginVisitStatus( origin=origin.url, visit=visit_id, - date=data.date_visit2, + date=visit2.date, status="partial", snapshot=None, ) ] ) - assert data.date_visit1 < data.date_visit2 + assert visit1.date < visit2.date # no snapshot associated to the visit, so None actual_snapshot = snapshot_get_latest( @@ -121,7 +119,7 @@ assert actual_snapshot is None date_now = now() - assert data.date_visit2 < date_now + assert visit2.date < date_now swh_storage.origin_visit_status_add( [ OriginVisitStatus( @@ -135,7 +133,7 @@ ) swh_storage.origin_visit_add( - [OriginVisit(origin=origin.url, date=now(), type=data.type_visit1,)] + [OriginVisit(origin=origin.url, date=now(), type=visit1.type,)] ) actual_snapshot = snapshot_get_latest(swh_storage, origin.url) diff --git a/swh/storage/tests/storage_data.py b/swh/storage/tests/storage_data.py --- a/swh/storage/tests/storage_data.py +++ b/swh/storage/tests/storage_data.py @@ -366,6 +366,29 @@ date_visit3 = datetime.datetime(2018, 1, 1, 23, 0, 0, tzinfo=datetime.timezone.utc) type_visit3 = "deb" +origin_visit = { + "origin": origin["url"], + "visit": 1, + "date": date_visit1, + "type": type_visit1, +} + +origin_visit2 = { + "origin": origin["url"], + "visit": 2, + "date": date_visit2, + "type": type_visit1, +} + +origin_visit3 = { + "origin": origin2["url"], + "visit": 1, + "date": date_visit1, + "type": type_visit2, +} + +origin_visits = [origin_visit, origin_visit2, origin_visit3] + release = { "id": hash_to_bytes("a673e617fcc6234e29b2cad06b8245f96c415c61"), "name": b"v0.0.1", diff --git a/swh/storage/tests/test_pytest_plugin.py b/swh/storage/tests/test_pytest_plugin.py --- a/swh/storage/tests/test_pytest_plugin.py +++ b/swh/storage/tests/test_pytest_plugin.py @@ -22,6 +22,7 @@ "release", "snapshot", "origin", + "origin_visit", "fetcher", "authority", "origin_metadata", @@ -48,6 +49,7 @@ "release", "snapshot", "origin", + "origin_visit", ] )