From bab25743a74b4f29f5638dc958ce915deb436f54 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 25 Apr 2024 14:38:11 +0800 Subject: [PATCH] test: node1 with rln node2 without rln at spam rate --- src/steps/rln.py | 20 ++++++++++++++++++++ tests/relay/test_rln.py | 36 +++++++++++++++++++++++++++--------- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/steps/rln.py b/src/steps/rln.py index 80629016..829539ce 100644 --- a/src/steps/rln.py +++ b/src/steps/rln.py @@ -56,6 +56,26 @@ class StepsRLN(StepsCommon): self.node2.add_peers([self.multiaddr_with_id]) self.main_nodes.extend([self.node2]) + @allure.step + def setup_first_relay_node(self, **kwargs): + self.node1 = WakuNode(DEFAULT_NWAKU, 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(DEFAULT_NWAKU, f"node2_{self.test_id}") + self.node2.start( + relay="true", + discv5_bootstrap_node=self.enr_uri, + **kwargs, + ) + if self.node2.is_nwaku(): + self.node2.add_peers([self.multiaddr_with_id]) + self.main_nodes.extend([self.node2]) + @allure.step def register_rln_single_node(self, **kwargs): logger.debug("Registering RLN credentials for single node") diff --git a/tests/relay/test_rln.py b/tests/relay/test_rln.py index 2cc226c4..e9832b51 100644 --- a/tests/relay/test_rln.py +++ b/tests/relay/test_rln.py @@ -13,7 +13,7 @@ logger = get_custom_logger(__name__) @pytest.mark.usefixtures("register_main_rln_relay_nodes") class TestRelayRLN(StepsRLN, StepsRelay): - def test_publish_with_valid_payloads_at_slow_rate(self): + def test_valid_payloads_at_slow_rate(self): self.setup_main_rln_relay_nodes() self.subscribe_main_relay_nodes() failed_payloads = [] @@ -28,7 +28,7 @@ class TestRelayRLN(StepsRLN, StepsRelay): delay(1) assert not failed_payloads, f"Payloads failed: {failed_payloads}" - def test_publish_with_valid_payloads_at_spam_rate(self): + def test_valid_payloads_at_spam_rate(self): self.setup_main_rln_relay_nodes() self.subscribe_main_relay_nodes() previous = math.trunc(time()) @@ -46,7 +46,7 @@ class TestRelayRLN(StepsRLN, StepsRelay): except Exception as e: assert "RLN validation failed" in str(e) - def test_publish_with_valid_payload_at_variable_rate(self): + def test_valid_payload_at_variable_rate(self): self.setup_main_rln_relay_nodes() self.subscribe_main_relay_nodes() payload_desc = SAMPLE_INPUTS[0]["description"] @@ -68,7 +68,7 @@ class TestRelayRLN(StepsRLN, StepsRelay): except Exception as e: assert "RLN validation failed" in str(e) - def test_publish_with_valid_payloads_random_epoch_at_slow_rate(self): + def test_valid_payloads_random_epoch_at_slow_rate(self): epoch_sec = random.randint(2, 5) self.setup_main_rln_relay_nodes(rln_relay_epoch_sec=epoch_sec) self.subscribe_main_relay_nodes() @@ -85,7 +85,7 @@ class TestRelayRLN(StepsRLN, StepsRelay): assert not failed_payloads, f"Payloads failed: {failed_payloads}" @pytest.mark.skip(reason="waiting for RLN v2 implementation") - def test_publish_with_valid_payloads_random_user_message_limit(self): + def test_valid_payloads_random_user_message_limit(self): user_message_limit = random.randint(2, 4) self.setup_main_rln_relay_nodes(rln_relay_user_message_limit=user_message_limit) self.subscribe_main_relay_nodes() @@ -100,8 +100,8 @@ class TestRelayRLN(StepsRLN, StepsRelay): failed_payloads.append(payload["description"]) assert not failed_payloads, f"Payloads failed: {failed_payloads}" - @pytest.mark.timeout(700) - def test_publish_with_valid_payloads_dynamic_at_slow_rate(self): + @pytest.mark.timeout(600) + def test_valid_payloads_dynamic_at_slow_rate(self): self.setup_main_rln_relay_nodes(rln_relay_dynamic="true") self.subscribe_main_relay_nodes() failed_payloads = [] @@ -116,8 +116,8 @@ class TestRelayRLN(StepsRLN, StepsRelay): delay(1) assert not failed_payloads, f"Payloads failed: {failed_payloads}" - @pytest.mark.timeout(700) - def test_publish_with_valid_payloads_dynamic_at_spam_rate(self): + @pytest.mark.timeout(600) + def test_valid_payloads_dynamic_at_spam_rate(self): self.setup_main_rln_relay_nodes(rln_relay_dynamic="true") self.subscribe_main_relay_nodes() previous = math.trunc(time()) @@ -133,3 +133,21 @@ class TestRelayRLN(StepsRLN, StepsRelay): previous = now except Exception as e: assert "RLN validation failed" in str(e) + + def test_valid_payloads_n1_with_rln_n2_without_rln_at_spam_rate(self): + self.setup_first_rln_relay_node() + self.setup_second_relay_node() + self.subscribe_main_relay_nodes() + previous = math.trunc(time()) + for i, payload in enumerate(SAMPLE_INPUTS): + logger.debug(f'Running test with payload {payload["description"]}') + message = self.create_message(payload=to_base64(payload["value"])) + try: + now = math.trunc(time()) + self.publish_message(message) + if i > 0 and (now - previous) == 0: + raise AssertionError("Publish with RLN enabled at spam rate worked!!!") + else: + previous = now + except Exception as e: + assert "RLN validation failed" in str(e)