Page MenuHomeSoftware Heritage

D6532.id23767.diff
No OneTemporary

D6532.id23767.diff

diff --git a/swh/storage/tests/algos/test_revisions_walker.py b/swh/storage/tests/algos/test_revisions_walker.py
--- a/swh/storage/tests/algos/test_revisions_walker.py
+++ b/swh/storage/tests/algos/test_revisions_walker.py
@@ -1,11 +1,8 @@
-# Copyright (C) 2018-2019 The Software Heritage developers
+# Copyright (C) 2018-2021 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
-import unittest
-from unittest.mock import patch
-
from swh.model.hashutil import hash_to_bytes, hash_to_hex
from swh.storage.algos.revisions_walker import get_revisions_walker
@@ -380,131 +377,134 @@
_rev_missing = "836d498396fb9b5d45c896885f84d8d60a5651dc"
-class RevisionsWalkerTest(unittest.TestCase):
- def check_revisions_ordering(
- self, rev_walker_type, expected_result, truncated_history
- ):
- with patch("swh.storage.postgresql.storage.Storage") as MockStorage:
- storage = MockStorage()
- if not truncated_history:
- storage.revision_log.return_value = _revisions_list
- else:
- revs_lists_truncated = [
- None if hash_to_hex(rev["id"]) == _rev_missing else rev
- for rev in _revisions_list
- ]
-
- storage.revision_log.return_value = revs_lists_truncated
-
- revs_walker = get_revisions_walker(
- rev_walker_type, storage, hash_to_bytes(_rev_start)
- )
-
- self.assertEqual(
- list(map(hash_to_bytes, expected_result)),
- [rev["id"] for rev in revs_walker],
- )
-
- self.assertEqual(revs_walker.is_history_truncated(), truncated_history)
-
- if truncated_history:
- missing_revs = revs_walker.missing_revisions()
- self.assertEqual(missing_revs, {hash_to_bytes(_rev_missing)})
- else:
- self.assertEqual(revs_walker.missing_revisions(), set())
-
- def test_revisions_walker_committer_date(self):
-
- # revisions should be returned in reverse chronological order
- # of their committer date
- expected_result = [
- "b364f53155044e5308a0f73abb3b5f01995a5b7d",
- "b94886c500c46e32dc3d7ebae8a5409accd592e5",
- "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
- "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
- "b401c50863475db4440c85c10ac0b6423b61554d",
- "9c5051397e5c2e0c258bb639c3dd34406584ca10",
- "836d498396fb9b5d45c896885f84d8d60a5651dc",
- "ee96c2a2d397b79070d2b6fe3051290963748358",
- "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
+def check_revisions_ordering(
+ mocker, rev_walker_type, expected_result, truncated_history
+):
+ storage = mocker.patch("swh.storage.postgresql.storage.Storage")
+
+ if not truncated_history:
+ storage.revision_log.return_value = _revisions_list
+ else:
+ revs_lists_truncated = [
+ None if hash_to_hex(rev["id"]) == _rev_missing else rev
+ for rev in _revisions_list
]
- self.check_revisions_ordering(
- "committer_date", expected_result, truncated_history=False
- )
+ storage.revision_log.return_value = revs_lists_truncated
- def test_revisions_walker_dfs(self):
-
- # revisions should be returned in the same order they are
- # visited when performing a depth-first search in pre order
- # on the revisions DAG
- expected_result = [
- "b364f53155044e5308a0f73abb3b5f01995a5b7d",
- "836d498396fb9b5d45c896885f84d8d60a5651dc",
- "ee96c2a2d397b79070d2b6fe3051290963748358",
- "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
- "b94886c500c46e32dc3d7ebae8a5409accd592e5",
- "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
- "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
- "b401c50863475db4440c85c10ac0b6423b61554d",
- "9c5051397e5c2e0c258bb639c3dd34406584ca10",
- ]
+ revs_walker = get_revisions_walker(
+ rev_walker_type, storage, hash_to_bytes(_rev_start)
+ )
- self.check_revisions_ordering("dfs", expected_result, truncated_history=False)
-
- def test_revisions_walker_dfs_post(self):
-
- # revisions should be returned in the same order they are
- # visited when performing a depth-first search in post order
- # on the revisions DAG
- expected_result = [
- "b364f53155044e5308a0f73abb3b5f01995a5b7d",
- "b94886c500c46e32dc3d7ebae8a5409accd592e5",
- "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
- "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
- "b401c50863475db4440c85c10ac0b6423b61554d",
- "9c5051397e5c2e0c258bb639c3dd34406584ca10",
- "836d498396fb9b5d45c896885f84d8d60a5651dc",
- "ee96c2a2d397b79070d2b6fe3051290963748358",
- "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
- ]
+ assert list(map(hash_to_bytes, expected_result)) == [
+ rev["id"] for rev in revs_walker
+ ]
- self.check_revisions_ordering(
- "dfs_post", expected_result, truncated_history=False
- )
+ assert revs_walker.is_history_truncated() == truncated_history
- def test_revisions_walker_bfs(self):
-
- # revisions should be returned in the same order they are
- # visited when performing a breadth-first search on the
- # revisions DAG
- expected_result = [
- "b364f53155044e5308a0f73abb3b5f01995a5b7d",
- "836d498396fb9b5d45c896885f84d8d60a5651dc",
- "b94886c500c46e32dc3d7ebae8a5409accd592e5",
- "ee96c2a2d397b79070d2b6fe3051290963748358",
- "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
- "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
- "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
- "b401c50863475db4440c85c10ac0b6423b61554d",
- "9c5051397e5c2e0c258bb639c3dd34406584ca10",
- ]
+ if truncated_history:
+ missing_revs = revs_walker.missing_revisions()
+ assert missing_revs == {hash_to_bytes(_rev_missing)}
+ else:
+ assert revs_walker.missing_revisions() == set()
- self.check_revisions_ordering("bfs", expected_result, truncated_history=False)
- def test_revisions_walker_truncated_history(self):
+def test_revisions_walker_committer_date(mocker):
- expected_result = [
- "b364f53155044e5308a0f73abb3b5f01995a5b7d",
- "b94886c500c46e32dc3d7ebae8a5409accd592e5",
- "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
- "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
- "b401c50863475db4440c85c10ac0b6423b61554d",
- "9c5051397e5c2e0c258bb639c3dd34406584ca10",
- ]
+ # revisions should be returned in reverse chronological order
+ # of their committer date
+ expected_result = [
+ "b364f53155044e5308a0f73abb3b5f01995a5b7d",
+ "b94886c500c46e32dc3d7ebae8a5409accd592e5",
+ "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
+ "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
+ "b401c50863475db4440c85c10ac0b6423b61554d",
+ "9c5051397e5c2e0c258bb639c3dd34406584ca10",
+ "836d498396fb9b5d45c896885f84d8d60a5651dc",
+ "ee96c2a2d397b79070d2b6fe3051290963748358",
+ "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
+ ]
+
+ check_revisions_ordering(
+ mocker, "committer_date", expected_result, truncated_history=False
+ )
+
+
+def test_revisions_walker_dfs(mocker):
+
+ # revisions should be returned in the same order they are
+ # visited when performing a depth-first search in pre order
+ # on the revisions DAG
+ expected_result = [
+ "b364f53155044e5308a0f73abb3b5f01995a5b7d",
+ "836d498396fb9b5d45c896885f84d8d60a5651dc",
+ "ee96c2a2d397b79070d2b6fe3051290963748358",
+ "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
+ "b94886c500c46e32dc3d7ebae8a5409accd592e5",
+ "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
+ "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
+ "b401c50863475db4440c85c10ac0b6423b61554d",
+ "9c5051397e5c2e0c258bb639c3dd34406584ca10",
+ ]
+
+ check_revisions_ordering(mocker, "dfs", expected_result, truncated_history=False)
- for revs_walker_type in ("committer_date", "bfs", "dfs", "dfs_post"):
- self.check_revisions_ordering(
- revs_walker_type, expected_result, truncated_history=True
- )
+def test_revisions_walker_dfs_post(mocker):
+
+ # revisions should be returned in the same order they are
+ # visited when performing a depth-first search in post order
+ # on the revisions DAG
+ expected_result = [
+ "b364f53155044e5308a0f73abb3b5f01995a5b7d",
+ "b94886c500c46e32dc3d7ebae8a5409accd592e5",
+ "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
+ "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
+ "b401c50863475db4440c85c10ac0b6423b61554d",
+ "9c5051397e5c2e0c258bb639c3dd34406584ca10",
+ "836d498396fb9b5d45c896885f84d8d60a5651dc",
+ "ee96c2a2d397b79070d2b6fe3051290963748358",
+ "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
+ ]
+
+ check_revisions_ordering(
+ mocker, "dfs_post", expected_result, truncated_history=False
+ )
+
+
+def test_revisions_walker_bfs(mocker):
+
+ # revisions should be returned in the same order they are
+ # visited when performing a breadth-first search on the
+ # revisions DAG
+ expected_result = [
+ "b364f53155044e5308a0f73abb3b5f01995a5b7d",
+ "836d498396fb9b5d45c896885f84d8d60a5651dc",
+ "b94886c500c46e32dc3d7ebae8a5409accd592e5",
+ "ee96c2a2d397b79070d2b6fe3051290963748358",
+ "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
+ "8f89dda8e072383cf50d42532ae8f52ad89f8fdf",
+ "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
+ "b401c50863475db4440c85c10ac0b6423b61554d",
+ "9c5051397e5c2e0c258bb639c3dd34406584ca10",
+ ]
+
+ check_revisions_ordering(mocker, "bfs", expected_result, truncated_history=False)
+
+
+def test_revisions_walker_truncated_history(mocker):
+
+ expected_result = [
+ "b364f53155044e5308a0f73abb3b5f01995a5b7d",
+ "b94886c500c46e32dc3d7ebae8a5409accd592e5",
+ "0cb6b4611d65bee0f57821dac7f611e2f8a02433",
+ "2b0240c6d682bad51532eec15b8a7ed6b75c8d31",
+ "b401c50863475db4440c85c10ac0b6423b61554d",
+ "9c5051397e5c2e0c258bb639c3dd34406584ca10",
+ ]
+
+ for revs_walker_type in ("committer_date", "bfs", "dfs", "dfs_post"):
+
+ check_revisions_ordering(
+ mocker, revs_walker_type, expected_result, truncated_history=True
+ )

File Metadata

Mime Type
text/plain
Expires
Jul 3 2025, 8:53 AM (6 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3219481

Event Timeline