diff --git a/src/node/waku_node.py b/src/node/waku_node.py index ce3d2d80..d47b8997 100644 --- a/src/node/waku_node.py +++ b/src/node/waku_node.py @@ -1,6 +1,8 @@ import errno import json import os +import shutil + import pytest import requests from src.libs.common import delay @@ -133,6 +135,8 @@ class WakuNode: ] ) + shutil.rmtree(cwd + "/peerdb") + default_args.update(sanitize_docker_flags(kwargs)) rln_args, rln_creds_set, keystore_path = self.parse_rln_credentials(default_args, False) @@ -214,6 +218,18 @@ class WakuNode: self._container = None logger.debug("Container stopped.") + @retry(stop=stop_after_delay(5), wait=wait_fixed(0.1), reraise=True) + def kill(self): + if self._container: + logger.debug(f"Killing container with id {self._container.short_id}") + self._container.kill() + try: + self._container.remove() + except: + pass + self._container = None + logger.debug("Container killed.") + def restart(self): if self._container: logger.debug(f"Restarting container with id {self._container.short_id}") diff --git a/src/steps/peer_store.py b/src/steps/peer_store.py index 5e12e887..d48f1c9d 100644 --- a/src/steps/peer_store.py +++ b/src/steps/peer_store.py @@ -44,7 +44,7 @@ class StepsPeerStore(StepsCommon): @allure.step def setup_third_relay_node(self, **kwargs): - self.node3 = WakuNode(NODE_1, f"node2_{self.test_id}") + self.node3 = WakuNode(NODE_1, f"node3_{self.test_id}") self.node3.start( relay="true", discv5_bootstrap_node=self.enr_uri, diff --git a/tests/peer_connection_management/test_peer_store.py b/tests/peer_connection_management/test_peer_store.py index 0020047b..343e978d 100644 --- a/tests/peer_connection_management/test_peer_store.py +++ b/tests/peer_connection_management/test_peer_store.py @@ -1,5 +1,6 @@ import pytest +from src.env_vars import NODE_1, NODE_2 from src.libs.common import delay from src.libs.custom_logger import get_custom_logger from src.node.waku_node import peer_info2id, peer_info2multiaddr, multiaddr2id @@ -68,18 +69,28 @@ class TestPeerStore(StepsPeerStore, StepsRelay, StepsStore): assert len(node1_peers) == 2 and len(node2_peers) == 2, f"Some nodes and/or their services are missing" # @pytest.mark.skip(reason="pending on https://github.com/waku-org/nwaku/issues/2792") + @pytest.mark.skipif("go-waku" in (NODE_1 + NODE_2), reason="Test works only with nwaku") def test_use_persistent_storage_survive_restart(self): self.setup_first_relay_node(peer_persistence="true") self.setup_second_relay_node() - delay(10) + delay(3) node1_peers = self.node1.get_peers() node2_peers = self.node2.get_peers() + node1_id = self.node1.get_id() + node2_id = self.node2.get_id() + logger.debug(f"Node 1 peerID {node1_id}") + logger.debug(f"Node 2 peerID {node2_id}") logger.debug(f"Node 1 connected peers before {node1_peers}") logger.debug(f"Node 2 connected peers before {node2_peers}") + assert node1_id == peer_info2id(node2_peers[0], self.node2.is_nwaku()) + assert node2_id == peer_info2id(node1_peers[0], self.node1.is_nwaku()) + + # Node 3 takes over Node 1 self.setup_third_relay_node(peer_persistence="true") - node1_peers = self.node1.get_peers() + self.node1.kill() node2_peers = self.node2.get_peers() node3_peers = self.node3.get_peers() - logger.debug(f"Node 1 connected peers after {node1_peers}") logger.debug(f"Node 2 connected peers after {node2_peers}") logger.debug(f"Node 3 connected peers after {node3_peers}") + assert node1_id == peer_info2id(node2_peers[0], self.node2.is_nwaku()) + assert node2_id == peer_info2id(node3_peers[0], self.node3.is_nwaku())