diff --git a/src/libs/common.py b/src/libs/common.py index fdc638ef..f8b31f8a 100644 --- a/src/libs/common.py +++ b/src/libs/common.py @@ -40,5 +40,13 @@ def gen_step_id(): return f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}__{str(uuid.uuid4())}" -def parse_id(peer_info): - return peer_info["multiaddr"].split("/")[-1] +def peer_info2id(peer): + return peer_info2multiaddr(peer).split("/")[-1] + + +def peer_info2multiaddr(peer): + return peer["multiaddr"] + + +def multiaddr2id(multiaddr): + return multiaddr.split("/")[-1] diff --git a/tests/peer_connection_management/test_peer_store.py b/tests/peer_connection_management/test_peer_store.py index 047b5f7d..43fe5526 100644 --- a/tests/peer_connection_management/test_peer_store.py +++ b/tests/peer_connection_management/test_peer_store.py @@ -1,6 +1,6 @@ import pytest -from src.libs.common import parse_id +from src.libs.common import peer_info2id, peer_info2multiaddr, multiaddr2id from src.libs.custom_logger import get_custom_logger from src.steps.relay import StepsRelay @@ -20,6 +20,36 @@ class TestPeerStore(StepsRelay): for i in range(5): others = [] for peer_info in nodes[i].get_peers(): - others.append(parse_id(peer_info)) + others.append(peer_info2id(peer_info)) - assert (i == 0 and len(others) == 4) or (i > 0 and len(others) == 1), f"Some nodes missing in the peer store of node {ids[i]}" + assert (i == 0 and len(others) == 4) or (i > 0 and len(others) == 1), f"Some nodes missing in the peer store of Node ID {ids[i]}" + + def test_add_peers(self): + nodes = [self.node1, self.node2] + nodes.extend(self.optional_nodes) + + # Get peers 1-4 + peers_info = nodes[0].get_peers() + assert len(peers_info) == 4, f"Some nodes missing in the peer store of Node 1" + + # Get peer 0 + peers_info.extend(nodes[1].get_peers()) + assert len(peers_info) == 5, f"Node 1 missing in the peer store of Node 2" + + # Convert to multi addresses + peers_multiaddr = [] + for peer in peers_info: + multiaddr = peer_info2multiaddr(peer) + logger.debug(f"Peer info {peer}") + logger.debug(f"Peer multi address {multiaddr}") + peers_multiaddr.append(multiaddr) + + # Add peers one by one excluding self for Nodes 2-5 + for i in range(1, 5): + for peer in peers_multiaddr: + if nodes[i].get_id() != multiaddr2id(peer): + try: + nodes[i].add_peers([peer]) + except Exception as ex: + logger.error(f"Failed to add peer to Node {i} peer store: {ex}") + raise