mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
reorg test structure to match tox and CI jobs, drop bumpversion for bump-my-version and move config to pyproject.toml, fix docs building
This commit is contained in:
130
tests/core/pubsub/test_mcache.py
Normal file
130
tests/core/pubsub/test_mcache.py
Normal file
@ -0,0 +1,130 @@
|
||||
from libp2p.pubsub.mcache import (
|
||||
MessageCache,
|
||||
)
|
||||
|
||||
|
||||
class Msg:
|
||||
__slots__ = ["topicIDs", "seqno", "from_id"]
|
||||
|
||||
def __init__(self, topicIDs, seqno, from_id):
|
||||
self.topicIDs = topicIDs
|
||||
self.seqno = seqno
|
||||
self.from_id = from_id
|
||||
|
||||
|
||||
def test_mcache():
|
||||
# Ported from:
|
||||
# https://github.com/libp2p/go-libp2p-pubsub/blob/51b7501433411b5096cac2b4994a36a68515fc03/mcache_test.go
|
||||
mcache = MessageCache(3, 5)
|
||||
msgs = []
|
||||
|
||||
for i in range(60):
|
||||
msgs.append(Msg(["test"], i, "test"))
|
||||
|
||||
for i in range(10):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
for i in range(10):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
get_msg = mcache.get(mid)
|
||||
|
||||
# successful read
|
||||
assert get_msg == msg
|
||||
|
||||
gids = mcache.window("test")
|
||||
|
||||
assert len(gids) == 10
|
||||
|
||||
for i in range(10):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[i]
|
||||
|
||||
mcache.shift()
|
||||
|
||||
for i in range(10, 20):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
for i in range(20):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
get_msg = mcache.get(mid)
|
||||
|
||||
assert get_msg == msg
|
||||
|
||||
gids = mcache.window("test")
|
||||
|
||||
assert len(gids) == 20
|
||||
|
||||
for i in range(10):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[10 + i]
|
||||
|
||||
for i in range(10, 20):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[i - 10]
|
||||
|
||||
mcache.shift()
|
||||
|
||||
for i in range(20, 30):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
mcache.shift()
|
||||
|
||||
for i in range(30, 40):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
mcache.shift()
|
||||
|
||||
for i in range(40, 50):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
mcache.shift()
|
||||
|
||||
for i in range(50, 60):
|
||||
mcache.put(msgs[i])
|
||||
|
||||
assert len(mcache.msgs) == 50
|
||||
|
||||
for i in range(10):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
get_msg = mcache.get(mid)
|
||||
|
||||
# Should be evicted from cache
|
||||
assert not get_msg
|
||||
|
||||
for i in range(10, 60):
|
||||
msg = msgs[i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
get_msg = mcache.get(mid)
|
||||
|
||||
assert get_msg == msg
|
||||
|
||||
gids = mcache.window("test")
|
||||
|
||||
assert len(gids) == 30
|
||||
|
||||
for i in range(10):
|
||||
msg = msgs[50 + i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[i]
|
||||
|
||||
for i in range(10, 20):
|
||||
msg = msgs[30 + i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[i]
|
||||
|
||||
for i in range(20, 30):
|
||||
msg = msgs[10 + i]
|
||||
mid = (msg.seqno, msg.from_id)
|
||||
|
||||
assert mid == gids[i]
|
||||
Reference in New Issue
Block a user