1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/util/test/test_morecollections.py
Kenny Lee Sin Cheong 5f63b3a7bb chore: drop deprecated tables and remove unused code (PROJQUAY-522) (#2089)
* chore: drop deprecated tables and remove unused code

* isort imports

* migration: check for table existence before drop
2023-08-25 12:17:24 -04:00

324 lines
7.4 KiB
Python

from util.morecollections import (
FastIndexList,
IndexedStreamingDiffTracker,
StreamingDiffTracker,
)
def test_fastindexlist_basic_usage():
indexlist = FastIndexList()
# Add 1
indexlist.add(1)
assert list(indexlist.values()) == [1]
assert indexlist.index(1) == 0
# Add 2
indexlist.add(2)
assert list(indexlist.values()) == [1, 2]
assert indexlist.index(1) == 0
assert indexlist.index(2) == 1
# Pop nothing.
indexlist.pop_until(-1)
assert list(indexlist.values()) == [1, 2]
assert indexlist.index(1) == 0
assert indexlist.index(2) == 1
# Pop 1.
assert indexlist.pop_until(0) == [1]
assert list(indexlist.values()) == [2]
assert indexlist.index(1) is None
assert indexlist.index(2) == 0
# Add 3.
indexlist.add(3)
assert list(indexlist.values()) == [2, 3]
assert indexlist.index(2) == 0
assert indexlist.index(3) == 1
# Pop 2, 3.
assert indexlist.pop_until(1) == [2, 3]
assert list(indexlist.values()) == []
assert indexlist.index(1) is None
assert indexlist.index(2) is None
assert indexlist.index(3) is None
def test_fastindexlist_popping():
indexlist = FastIndexList()
indexlist.add("hello")
indexlist.add("world")
indexlist.add("you")
indexlist.add("rock")
assert indexlist.index("hello") == 0
assert indexlist.index("world") == 1
assert indexlist.index("you") == 2
assert indexlist.index("rock") == 3
indexlist.pop_until(1)
assert indexlist.index("you") == 0
assert indexlist.index("rock") == 1
def test_indexedstreamingdifftracker_basic():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 3)
tracker.push_new([("a", 0), ("b", 1), ("c", 2)])
tracker.push_old([("b", 1)])
tracker.done()
assert added == ["a", "c"]
def test_indexedstreamingdifftracker_multiple_done():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 3)
tracker.push_new([("a", 0), ("b", 1), ("c", 2)])
tracker.push_old([("b", 1)])
tracker.done()
tracker.done()
assert added == ["a", "c"]
def test_indexedstreamingdifftracker_same_streams():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 3)
tracker.push_new([("a", 0), ("b", 1), ("c", 2)])
tracker.push_old([("a", 0), ("b", 1), ("c", 2)])
tracker.done()
assert added == []
def test_indexedstreamingdifftracker_only_new():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 3)
tracker.push_new([("a", 0), ("b", 1), ("c", 2)])
tracker.push_old([])
tracker.done()
assert added == ["a", "b", "c"]
def test_indexedstreamingdifftracker_pagination():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("a", 0), ("b", 1)])
tracker.push_old([])
tracker.push_new([("c", 2)])
tracker.push_old([])
tracker.done()
assert added == ["a", "b", "c"]
def test_indexedstreamingdifftracker_old_pagination_no_repeat():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("new1", 3), ("new2", 4)])
tracker.push_old([("old1", 1), ("old2", 2)])
tracker.push_new([])
tracker.push_old([("new1", 3)])
tracker.done()
assert added == ["new2"]
def test_indexedstreamingdifftracker_old_pagination():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("a", 10), ("b", 11)])
tracker.push_old([("z", 1), ("y", 2)])
tracker.push_new([("c", 12)])
tracker.push_old([("a", 10)])
tracker.done()
assert added == ["b", "c"]
def test_indexedstreamingdifftracker_very_offset():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("a", 10), ("b", 11)])
tracker.push_old([("z", 1), ("y", 2)])
tracker.push_new([("c", 12), ("d", 13)])
tracker.push_old([("x", 3), ("w", 4)])
tracker.push_new([("e", 14)])
tracker.push_old([("a", 10), ("d", 13)])
tracker.done()
assert added == ["b", "c", "e"]
def test_indexedstreamingdifftracker_many_old():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("z", 26), ("hello", 100)])
tracker.push_old([("a", 1), ("b", 2)])
tracker.push_new([])
tracker.push_old([("c", 1), ("d", 2)])
tracker.push_new([])
tracker.push_old([("e", 3), ("f", 4)])
tracker.push_new([])
tracker.push_old([("g", 5), ("z", 26)])
tracker.done()
assert added == ["hello"]
def test_indexedstreamingdifftracker_high_old_bound():
added = []
tracker = IndexedStreamingDiffTracker(added.append, 2)
tracker.push_new([("z", 26), ("hello", 100)])
tracker.push_old([("end1", 999), ("end2", 1000)])
tracker.push_new([])
tracker.push_old([])
tracker.done()
assert added == ["z", "hello"]
def test_streamingdifftracker_basic():
added = []
tracker = StreamingDiffTracker(added.append, 3)
tracker.push_new(["a", "b", "c"])
tracker.push_old(["b"])
tracker.done()
assert added == ["a", "c"]
def test_streamingdifftracker_same_streams():
added = []
tracker = StreamingDiffTracker(added.append, 3)
tracker.push_new(["a", "b", "c"])
tracker.push_old(["a", "b", "c"])
tracker.done()
assert added == []
def test_streamingdifftracker_some_new():
added = []
tracker = StreamingDiffTracker(added.append, 5)
tracker.push_new(["a", "b", "c", "d", "e"])
tracker.push_old(["a", "b", "c"])
tracker.done()
assert added == ["d", "e"]
def test_streamingdifftracker_offset_new():
added = []
tracker = StreamingDiffTracker(added.append, 5)
tracker.push_new(["b", "c", "d", "e"])
tracker.push_old(["a", "b", "c"])
tracker.done()
assert added == ["d", "e"]
def test_streamingdifftracker_multiple_calls():
added = []
tracker = StreamingDiffTracker(added.append, 3)
tracker.push_new(["a", "b", "c"])
tracker.push_old(["b", "d", "e"])
tracker.push_new(["f", "g", "h"])
tracker.push_old(["g", "h"])
tracker.done()
assert added == ["a", "c", "f"]
def test_streamingdifftracker_empty_old():
added = []
tracker = StreamingDiffTracker(added.append, 3)
tracker.push_new(["a", "b", "c"])
tracker.push_old([])
tracker.push_new(["f", "g", "h"])
tracker.push_old([])
tracker.done()
assert added == ["a", "b", "c", "f", "g", "h"]
def test_streamingdifftracker_more_old():
added = []
tracker = StreamingDiffTracker(added.append, 2)
tracker.push_new(["c", "d"])
tracker.push_old(["a", "b"])
tracker.push_new([])
tracker.push_old(["c"])
tracker.done()
assert added == ["d"]
def test_streamingdifftracker_more_new():
added = []
tracker = StreamingDiffTracker(added.append, 4)
tracker.push_new(["a", "b", "c", "d"])
tracker.push_old(["r"])
tracker.push_new(["e", "f", "r", "z"])
tracker.push_old([])
tracker.done()
assert added == ["a", "b", "c", "d", "e", "f", "z"]
def test_streamingdifftracker_more_new2():
added = []
tracker = StreamingDiffTracker(added.append, 4)
tracker.push_new(["a", "b", "c", "d"])
tracker.push_old(["r"])
tracker.push_new(["e", "f", "g", "h"])
tracker.push_old([])
tracker.push_new(["i", "j", "r", "z"])
tracker.push_old([])
tracker.done()
assert added == ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "z"]