From 2175c7744892d5b6c918352bbb7945bc63cb60ea Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 16 Apr 2024 14:47:50 +0800 Subject: [PATCH] fix: rebase onto master --- src/steps/relay.py | 45 ++----------------------------- src/steps/rln.py | 60 +++++++++++++++++++++++++++++++++++++++++ tests/relay/test_rln.py | 9 +++---- 3 files changed, 65 insertions(+), 49 deletions(-) create mode 100644 src/steps/rln.py diff --git a/src/steps/relay.py b/src/steps/relay.py index 698eb5cd..f61fe6b7 100644 --- a/src/steps/relay.py +++ b/src/steps/relay.py @@ -1,20 +1,17 @@ import inspect -import os from src.libs.custom_logger import get_custom_logger from time import time import pytest import allure -from src.libs.common import to_base64, delay, gen_step_id +from src.libs.common import to_base64, delay from src.node.waku_message import WakuMessage from src.env_vars import ( NODE_1, NODE_2, ADDITIONAL_NODES, NODEKEY, - DEFAULT_NWAKU, - RLN_CREDENTIALS, ) -from src.node.waku_node import WakuNode, rln_credential_store_ready +from src.node.waku_node import WakuNode from tenacity import retry, stop_after_delay, wait_fixed from src.steps.common import StepsCommon from src.test_data import VALID_PUBSUB_TOPICS @@ -45,28 +42,6 @@ class StepsRelay(StepsCommon): self.add_node_peer(self.node2, [self.multiaddr_with_id]) self.main_nodes.extend([self.node1, self.node2]) - @pytest.fixture(scope="function") - def register_main_rln_relay_nodes(self, request): - logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}") - self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{request.cls.test_id}") - self.node1.register_rln(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="1") - self.node2 = WakuNode(DEFAULT_NWAKU, f"node2_{request.cls.test_id}") - self.node2.register_rln(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="2") - - @pytest.fixture(scope="function") - def setup_main_rln_relay_nodes(self, request): - logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}") - self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{request.cls.test_id}") - self.node1.start(relay="true", nodekey=NODEKEY, rln_creds_source=RLN_CREDENTIALS, rln_creds_id="1", rln_relay_membership_index="1") - self.enr_uri = self.node1.get_enr_uri() - self.multiaddr_with_id = self.node1.get_multiaddr_with_id() - self.node2 = WakuNode(DEFAULT_NWAKU, f"node2_{request.cls.test_id}") - self.node2.start( - relay="true", discv5_bootstrap_node=self.enr_uri, rln_creds_source=RLN_CREDENTIALS, rln_creds_id="2", rln_relay_membership_index="1" - ) - self.add_node_peer(self.node2, [self.multiaddr_with_id]) - self.main_nodes.extend([self.node1, self.node2]) - @pytest.fixture(scope="function") def setup_optional_relay_nodes(self, request): logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}") @@ -156,19 +131,3 @@ class StepsRelay(StepsCommon): def subscribe_and_publish_with_retry(self, node_list, pubsub_topic_list): self.ensure_relay_subscriptions_on_nodes(node_list, pubsub_topic_list) self.check_published_message_reaches_relay_peer() - - @allure.step - def register_rln_single_node(self, **kwargs): - logger.debug("Registering RLN credentials for single node") - self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{gen_step_id()}") - self.node1.register_rln(rln_creds_source=kwargs["rln_creds_source"], rln_creds_id=kwargs["rln_creds_id"]) - - @allure.step - def check_rln_registration(self, key_id): - current_working_directory = os.getcwd() - creds_file_path = f"{current_working_directory}/keystore_{key_id}/keystore.json" - try: - rln_credential_store_ready(creds_file_path) - except Exception as ex: - logger.error(f"Credentials at {creds_file_path} not available: {ex}") - raise diff --git a/src/steps/rln.py b/src/steps/rln.py new file mode 100644 index 00000000..9b971d1e --- /dev/null +++ b/src/steps/rln.py @@ -0,0 +1,60 @@ +from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY +from src.libs.common import gen_step_id +from src.libs.custom_logger import get_custom_logger +import os +import inspect +import pytest +import allure +from src.node.waku_node import WakuNode, rln_credential_store_ready +from tenacity import retry, stop_after_delay, wait_fixed +from src.test_data import PUBSUB_TOPICS_RLN + +logger = get_custom_logger(__name__) + + +class StepsRLN: + test_pubsub_topic = PUBSUB_TOPICS_RLN[0] + test_content_topic = "/test/1/waku-rln-relay/proto" + test_payload = "RLN relay works!!" + + main_nodes = [] + optional_nodes = [] + + @pytest.fixture(scope="function") + def register_main_rln_relay_nodes(self, request): + logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}") + self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{request.cls.test_id}") + self.node1.register_rln(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="1") + self.node2 = WakuNode(DEFAULT_NWAKU, f"node2_{request.cls.test_id}") + self.node2.register_rln(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="2") + + @pytest.fixture(scope="function") + def setup_main_rln_relay_nodes(self, request): + logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}") + self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{request.cls.test_id}") + self.node1.start(relay="true", nodekey=NODEKEY, rln_creds_source=RLN_CREDENTIALS, rln_creds_id="1", rln_relay_membership_index="1") + self.enr_uri = self.node1.get_enr_uri() + self.multiaddr_with_id = self.node1.get_multiaddr_with_id() + self.node2 = WakuNode(DEFAULT_NWAKU, f"node2_{request.cls.test_id}") + self.node2.start( + relay="true", discv5_bootstrap_node=self.enr_uri, rln_creds_source=RLN_CREDENTIALS, rln_creds_id="2", rln_relay_membership_index="1" + ) + if self.node2.is_nwaku(): + self.node2.add_peers([self.multiaddr_with_id]) + self.main_nodes.extend([self.node1, self.node2]) + + @allure.step + def register_rln_single_node(self, **kwargs): + logger.debug("Registering RLN credentials for single node") + self.node1 = WakuNode(DEFAULT_NWAKU, f"node1_{gen_step_id()}") + self.node1.register_rln(rln_creds_source=kwargs["rln_creds_source"], rln_creds_id=kwargs["rln_creds_id"]) + + @allure.step + def check_rln_registration(self, key_id): + current_working_directory = os.getcwd() + creds_file_path = f"{current_working_directory}/keystore_{key_id}/keystore.json" + try: + rln_credential_store_ready(creds_file_path) + except Exception as ex: + logger.error(f"Credentials at {creds_file_path} not available: {ex}") + raise diff --git a/tests/relay/test_rln.py b/tests/relay/test_rln.py index e0e71c5b..d183f960 100644 --- a/tests/relay/test_rln.py +++ b/tests/relay/test_rln.py @@ -1,19 +1,16 @@ -import os import pytest -from src.env_vars import RLN_CREDENTIALS from src.libs.common import delay, to_base64 from src.libs.custom_logger import get_custom_logger from src.steps.relay import StepsRelay -from src.test_data import SAMPLE_INPUTS, PUBSUB_TOPICS_RLN +from src.steps.rln import StepsRLN +from src.test_data import SAMPLE_INPUTS logger = get_custom_logger(__name__) @pytest.mark.usefixtures("register_main_rln_relay_nodes", "setup_main_rln_relay_nodes", "subscribe_main_relay_nodes") -class TestRelayRLN(StepsRelay): - test_pubsub_topic = PUBSUB_TOPICS_RLN[0] - +class TestRelayRLN(StepsRLN, StepsRelay): def test_publish_with_valid_payloads_at_slow_rate(self): failed_payloads = [] for payload in SAMPLE_INPUTS[:5]: