Skip to content

Commit

Permalink
test: restart survival with persistent peer store
Browse files Browse the repository at this point in the history
  • Loading branch information
romanzac committed Jun 7, 2024
1 parent 96993f1 commit 909274d
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 2 deletions.
5 changes: 5 additions & 0 deletions src/node/waku_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@ def start(self, wait_for_node_sec=20, **kwargs):
else:
remove_container = True

if kwargs.get("peer_persistence") == "true":
if self.is_gowaku():
kwargs["persist_peers"] = kwargs["peer_persistence"]
del kwargs["peer_persistence"]

default_args.update(sanitize_docker_flags(kwargs))

rln_args, rln_creds_set, keystore_path = self.parse_rln_credentials(default_args, False)
Expand Down
54 changes: 54 additions & 0 deletions src/steps/peer_store.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import os
import inspect
import pytest
import allure

from src.node.waku_message import WakuMessage
from src.steps.common import StepsCommon
from src.test_data import PUBSUB_TOPICS_RLN, VALID_PUBSUB_TOPICS
from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY, NODE_1, NODE_2, ADDITIONAL_NODES
from src.libs.common import gen_step_id, delay
from src.libs.custom_logger import get_custom_logger
from src.node.waku_node import WakuNode, rln_credential_store_ready

logger = get_custom_logger(__name__)


class StepsPeerStore(StepsCommon):
test_pubsub_topic = VALID_PUBSUB_TOPICS[0]
test_content_topic = "/test/1/waku-relay/proto"
test_payload = "Relay works!!"

main_nodes = []
optional_nodes = []
multiaddr_list = []

@allure.step
def setup_first_relay_node(self, **kwargs):
self.node1 = WakuNode(NODE_1, f"node1_{self.test_id}")
self.node1.start(relay="true", nodekey=NODEKEY, **kwargs)
self.enr_uri = self.node1.get_enr_uri()
self.multiaddr_with_id = self.node1.get_multiaddr_with_id()
self.main_nodes.extend([self.node1])

@allure.step
def setup_second_relay_node(self, **kwargs):
self.node2 = WakuNode(NODE_2, f"node2_{self.test_id}")
self.node2.start(
relay="true",
discv5_bootstrap_node=self.enr_uri,
**kwargs,
)
self.add_node_peer(self.node2, [self.multiaddr_with_id])
self.main_nodes.extend([self.node2])

@allure.step
def setup_third_relay_node(self, **kwargs):
self.node3 = WakuNode(NODE_1, f"node2_{self.test_id}")
self.node3.start(
relay="true",
discv5_bootstrap_node=self.enr_uri,
**kwargs,
)
self.add_node_peer(self.node3, [self.multiaddr_with_id])
self.main_nodes.extend([self.node3])
10 changes: 8 additions & 2 deletions tests/peer_connection_management/test_peer_store.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import pytest

from src.libs.common import peer_info2id, peer_info2multiaddr, multiaddr2id
from src.libs.common import peer_info2id, peer_info2multiaddr, multiaddr2id, delay
from src.libs.custom_logger import get_custom_logger
from src.steps.peer_store import StepsPeerStore
from src.steps.relay import StepsRelay
from src.steps.store import StepsStore

logger = get_custom_logger(__name__)


class TestPeerStore(StepsRelay, StepsStore):
class TestPeerStore(StepsPeerStore, StepsRelay, StepsStore):
@pytest.mark.usefixtures("setup_main_relay_nodes", "setup_optional_relay_nodes")
def test_get_peers(self):
nodes = [self.node1, self.node2]
Expand Down Expand Up @@ -64,3 +65,8 @@ def test_get_peers_two_protocols(self):
logger.debug(f"Node 2 connected peers {node2_peers}")

assert len(node1_peers) == 2 and len(node2_peers) == 2, f"Some nodes and/or their services are missing"

@pytest.mark.skip(reason="failed to store peers")
def test_use_persistent_storage_survive_restart(self):
self.setup_first_relay_node(peer_persistence="true")
self.setup_second_relay_node()

0 comments on commit 909274d

Please sign in to comment.