diff --git a/requirements-swh.txt b/requirements-swh.txt --- a/requirements-swh.txt +++ b/requirements-swh.txt @@ -3,5 +3,5 @@ swh.model >= 0.3.0 swh.scheduler >= 0.1.1 swh.search >= 0.0.4 -swh.storage >= 0.1.1 -swh.vault >= 0.0.33 \ No newline at end of file +swh.storage >= 0.2.0 +swh.vault >= 0.0.33 diff --git a/swh/web/tests/api/views/test_origin.py b/swh/web/tests/api/views/test_origin.py --- a/swh/web/tests/api/views/test_origin.py +++ b/swh/web/tests/api/views/test_origin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2019 The Software Heritage developers +# Copyright (C) 2015-2020 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information @@ -7,9 +7,10 @@ import pytest from requests.utils import parse_header_links -from swh.model.model import Origin +from swh.model.model import Origin, OriginVisitStatus from swh.storage.exc import StorageDBError, StorageAPIError +from swh.storage.utils import now from swh.web.api.utils import enrich_origin_visit, enrich_origin from swh.web.common.exc import BadInputExc @@ -104,12 +105,14 @@ new_origin.url, visit_date, type="git" ) archive_data.snapshot_add([new_snapshots[i]]) - archive_data.origin_visit_update( - new_origin.url, - origin_visit.visit, + visit_status = OriginVisitStatus( + origin=new_origin.url, + visit=origin_visit.visit, + date=now(), status="full", snapshot=new_snapshots[i].id, ) + archive_data.origin_visit_status_add([visit_status]) all_visits = list(reversed(get_origin_visits(new_origin.to_dict()))) @@ -150,12 +153,14 @@ new_origin.url, visit_date, type="git" ) archive_data.snapshot_add([new_snapshots[i]]) - archive_data.origin_visit_update( - new_origin.url, - origin_visit.visit, + visit_status = OriginVisitStatus( + origin=new_origin.url, + visit=origin_visit.visit, + date=now(), status="full", snapshot=new_snapshots[i].id, ) + archive_data.origin_visit_status_add([visit_status]) all_visits = list(reversed(get_origin_visits(new_origin.to_dict()))) @@ -197,9 +202,14 @@ ) visit_id = origin_visit.visit archive_data.snapshot_add([new_snapshots[i]]) - archive_data.origin_visit_update( - new_origin.url, visit_id, status="full", snapshot=new_snapshots[i].id + visit_status = OriginVisitStatus( + origin=new_origin.url, + visit=origin_visit.visit, + date=now(), + status="full", + snapshot=new_snapshots[i].id, ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "api-1-origin-visit", url_args={"origin_url": new_origin.url, "visit_id": visit_id}, @@ -249,9 +259,15 @@ visit_ids.append(origin_visit.visit) archive_data.snapshot_add([new_snapshots[0]]) - archive_data.origin_visit_update( - new_origin.url, visit_ids[0], status="full", snapshot=new_snapshots[0].id + + visit_status = OriginVisitStatus( + origin=new_origin.url, + visit=visit_ids[0], + date=now(), + status="full", + snapshot=new_snapshots[0].id, ) + archive_data.origin_visit_status_add([visit_status]) url = reverse("api-1-origin-visit-latest", url_args={"origin_url": new_origin.url}) @@ -286,9 +302,15 @@ visit_ids.append(origin_visit.visit) archive_data.snapshot_add([new_snapshots[0]]) - archive_data.origin_visit_update( - new_origin.url, visit_ids[0], status="full", snapshot=new_snapshots[0].id + + visit_status = OriginVisitStatus( + origin=new_origin.url, + visit=visit_ids[0], + date=now(), + status="full", + snapshot=new_snapshots[0].id, ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "api-1-origin-visit-latest", diff --git a/swh/web/tests/browse/views/test_origin.py b/swh/web/tests/browse/views/test_origin.py --- a/swh/web/tests/browse/views/test_origin.py +++ b/swh/web/tests/browse/views/test_origin.py @@ -3,7 +3,6 @@ # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information -from datetime import datetime, timezone import random import re import string @@ -13,13 +12,11 @@ from hypothesis import given +from swh.storage.utils import now + from swh.model.hashutil import hash_to_bytes from swh.model.identifiers import CONTENT, DIRECTORY, RELEASE, REVISION, SNAPSHOT -from swh.model.model import ( - Snapshot, - SnapshotBranch, - TargetType, -) +from swh.model.model import Snapshot, SnapshotBranch, TargetType, OriginVisitStatus from swh.web.browse.snapshot_context import process_snapshot_branches from swh.web.common.exc import NotFoundExc from swh.web.common.identifiers import get_swh_persistent_id @@ -507,9 +504,14 @@ archive_data.snapshot_add([Snapshot.from_dict(snp_dict)]) visit = archive_data.origin_visit_add(new_origin["url"], visit_dates[0], type="git") - archive_data.origin_visit_update( - new_origin["url"], visit.visit, status="partial", snapshot=snp_dict["id"] + visit_status = OriginVisitStatus( + origin=new_origin["url"], + visit=visit.visit, + date=now(), + status="partial", + snapshot=snp_dict["id"], ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "browse-origin-directory", query_params={"origin_url": new_origin["url"]} @@ -537,9 +539,14 @@ archive_data.snapshot_add([Snapshot.from_dict(snp_dict)]) visit = archive_data.origin_visit_add(new_origin["url"], visit_dates[0], type="git") - archive_data.origin_visit_update( - new_origin["url"], visit.visit, status="full", snapshot=snp_dict["id"] + visit_status = OriginVisitStatus( + origin=new_origin["url"], + visit=visit.visit, + date=now(), + status="full", + snapshot=snp_dict["id"], ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "browse-origin-directory", @@ -779,12 +786,15 @@ ) new_origin = archive_data.origin_add([new_origin])[0] archive_data.snapshot_add([snapshot]) - visit = archive_data.origin_visit_add( - new_origin["url"], datetime.now(tz=timezone.utc), type="git" - ) - archive_data.origin_visit_update( - new_origin["url"], visit.visit, status="full", snapshot=snapshot.id + visit = archive_data.origin_visit_add(new_origin["url"], now(), type="git") + visit_status = OriginVisitStatus( + origin=new_origin["url"], + visit=visit.visit, + date=now(), + status="partial", + snapshot=snapshot.id, ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "browse-origin-directory", @@ -1258,9 +1268,14 @@ new_origin = archive_data.origin_add([new_origin])[0] archive_data.snapshot_add([Snapshot.from_dict(snp_dict)]) visit = archive_data.origin_visit_add(new_origin["url"], visit_dates[0], type="git") - archive_data.origin_visit_update( - new_origin["url"], visit.visit, status="full", snapshot=snp_dict["id"] - ) + visit_status = OriginVisitStatus( + origin=new_origin["url"], + visit=visit.visit, + date=now(), + status="full", + snapshot=snp_dict["id"], + ) + archive_data.origin_visit_status_add([visit_status]) url = reverse( "browse-origin-branches", query_params={"origin_url": new_origin["url"]} diff --git a/swh/web/tests/data.py b/swh/web/tests/data.py --- a/swh/web/tests/data.py +++ b/swh/web/tests/data.py @@ -3,6 +3,7 @@ # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information +import datetime import os import random @@ -12,7 +13,7 @@ from swh.indexer.mimetype import MimetypeIndexer from swh.indexer.ctags import CtagsIndexer from swh.indexer.storage import get_indexer_storage -from swh.model.model import Content +from swh.model.model import Content, OriginVisitStatus from swh.model.hashutil import hash_to_hex, hash_to_bytes, DEFAULT_ALGORITHMS from swh.model.model import Directory, Origin from swh.loader.git.from_disk import GitLoaderFromArchive @@ -192,13 +193,16 @@ # storage.origin_add([{'url': url}]) storage.origin_add([Origin(url=url)]) search.origin_update([{"url": url, "has_visits": True}]) - visit = storage.origin_visit_add(url, "2019-12-03 13:55:05Z", "tar") - storage.origin_visit_update( - url, - visit.visit, + date = datetime.datetime(2019, 12, 3, 13, 55, 5, tzinfo=datetime.timezone.utc) + visit = storage.origin_visit_add(url, date, "tar") + visit_status = OriginVisitStatus( + origin=url, + visit=visit.visit, + date=date, status="full", snapshot=hash_to_bytes("1a8893e6a86f444e8be8e7bda6cb34fb1735a00e"), ) + storage.origin_visit_status_add([visit_status]) contents = set() directories = set()