mirror of
https://github.com/logos-messaging/logos-messaging-interop-tests.git
synced 2026-01-09 09:23:10 +00:00
test: happy and common case with 5 nodes
This commit is contained in:
parent
48298597d7
commit
5d1b4f54f9
@ -6,7 +6,7 @@ import allure
|
||||
from src.node.waku_message import WakuMessage
|
||||
from src.steps.common import StepsCommon
|
||||
from src.test_data import PUBSUB_TOPICS_RLN
|
||||
from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY, NODE_1, NODE_2
|
||||
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
|
||||
@ -30,6 +30,13 @@ class StepsRLN(StepsCommon):
|
||||
self.register_rln_single_node(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="1")
|
||||
self.register_rln_single_node(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="2")
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def register_optional_rln_relay_nodes(self, request):
|
||||
logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}")
|
||||
self.register_rln_single_node(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="3")
|
||||
self.register_rln_single_node(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="4")
|
||||
self.register_rln_single_node(rln_creds_source=RLN_CREDENTIALS, rln_creds_id="5")
|
||||
|
||||
@allure.step
|
||||
def setup_main_rln_relay_nodes(self, **kwargs):
|
||||
self.setup_first_rln_relay_node(**kwargs)
|
||||
@ -66,6 +73,28 @@ class StepsRLN(StepsCommon):
|
||||
self.add_node_peer(self.node2, [self.multiaddr_with_id])
|
||||
self.main_nodes.extend([self.node2])
|
||||
|
||||
@allure.step
|
||||
def setup_optional_rln_relay_nodes(self, **kwargs):
|
||||
if ADDITIONAL_NODES:
|
||||
nodes = [node.strip() for node in ADDITIONAL_NODES.split(",")]
|
||||
else:
|
||||
pytest.skip("ADDITIONAL_NODES is empty, cannot run test")
|
||||
if len(nodes) > 3:
|
||||
logger.debug("More than 3 nodes are not supported for RLN tests, using first 3")
|
||||
nodes = nodes[:3]
|
||||
for index, node in enumerate(nodes):
|
||||
node = WakuNode(node, f"node{index + 3}_{self.test_id}")
|
||||
node.start(
|
||||
relay="true",
|
||||
discv5_bootstrap_node=self.enr_uri,
|
||||
rln_creds_source=RLN_CREDENTIALS,
|
||||
rln_creds_id=f"{index + 3}",
|
||||
rln_relay_membership_index="1",
|
||||
**kwargs,
|
||||
)
|
||||
self.add_node_peer(node, [self.multiaddr_with_id])
|
||||
self.optional_nodes.append(node)
|
||||
|
||||
@allure.step
|
||||
def setup_second_lightpush_node(self, relay="false", **kwargs):
|
||||
self.light_push_node2 = WakuNode(NODE_2, f"lightpush_node2_{self.test_id}")
|
||||
@ -134,6 +163,10 @@ class StepsRLN(StepsCommon):
|
||||
def subscribe_main_relay_nodes(self):
|
||||
self.ensure_relay_subscriptions_on_nodes(self.main_nodes, [self.test_pubsub_topic])
|
||||
|
||||
@allure.step
|
||||
def subscribe_optional_relay_nodes(self):
|
||||
self.ensure_relay_subscriptions_on_nodes(self.optional_nodes, [self.test_pubsub_topic])
|
||||
|
||||
@allure.step
|
||||
def create_payload(self, pubsub_topic=None, message=None, **kwargs):
|
||||
if message is None:
|
||||
|
||||
@ -191,3 +191,41 @@ class TestRelayRLN(StepsRLN, StepsRelay):
|
||||
previous = now
|
||||
except Exception as e:
|
||||
assert "RLN validation failed" in str(e)
|
||||
|
||||
@pytest.mark.usefixtures("register_optional_rln_relay_nodes")
|
||||
def test_valid_payloads_with_optional_nodes_at_slow_rate(self):
|
||||
self.setup_main_rln_relay_nodes()
|
||||
self.setup_optional_rln_relay_nodes()
|
||||
self.subscribe_main_relay_nodes()
|
||||
self.subscribe_optional_relay_nodes()
|
||||
failed_payloads = []
|
||||
for payload in SAMPLE_INPUTS:
|
||||
logger.debug(f'Running test with payload {payload["description"]}')
|
||||
message = self.create_message(payload=to_base64(payload["value"]))
|
||||
try:
|
||||
self.check_published_message_reaches_relay_peer(message)
|
||||
except Exception as e:
|
||||
logger.error(f'Payload {payload["description"]} failed: {str(e)}')
|
||||
failed_payloads.append(payload["description"])
|
||||
delay(1)
|
||||
assert not failed_payloads, f"Payloads failed: {failed_payloads}"
|
||||
|
||||
@pytest.mark.usefixtures("register_optional_rln_relay_nodes")
|
||||
def test_valid_payloads_with_optional_nodes_at_spam_rate(self):
|
||||
self.setup_main_rln_relay_nodes()
|
||||
self.setup_optional_rln_relay_nodes()
|
||||
self.subscribe_main_relay_nodes()
|
||||
self.subscribe_optional_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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user