fix: use send only publish function

- add spam and alternate rate tests
This commit is contained in:
Roman 2024-04-17 22:20:39 +08:00
parent 2175c77448
commit ab37b02d78
No known key found for this signature in database
GPG Key ID: B8FE070B54E11B75
2 changed files with 48 additions and 7 deletions

View File

@ -1,12 +1,12 @@
from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY
from src.libs.common import gen_step_id
from src.libs.common import gen_step_id, to_base64
from src.libs.custom_logger import get_custom_logger
import os
import inspect
import pytest
import allure
from time import time
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__)
@ -16,7 +16,7 @@ class StepsRLN:
test_pubsub_topic = PUBSUB_TOPICS_RLN[0]
test_content_topic = "/test/1/waku-rln-relay/proto"
test_payload = "RLN relay works!!"
epoch_time = 1 # seconds
main_nodes = []
optional_nodes = []
@ -58,3 +58,19 @@ class StepsRLN:
except Exception as ex:
logger.error(f"Credentials at {creds_file_path} not available: {ex}")
raise
@allure.step
def create_message(self, **kwargs):
message = {"payload": to_base64(self.test_payload), "contentTopic": self.test_content_topic, "timestamp": int(time() * 1e9)}
message.update(kwargs)
return message
def publish_message(self, message=None, pubsub_topic=None, sender=None):
if message is None:
message = self.create_message()
if pubsub_topic is None:
pubsub_topic = self.test_pubsub_topic
if not sender:
sender = self.node1
sender.send_relay_message(message, pubsub_topic)

View File

@ -1,3 +1,6 @@
import math
from time import time
import pytest
from src.libs.common import delay, to_base64
@ -17,7 +20,7 @@ class TestRelayRLN(StepsRLN, StepsRelay):
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)
self.publish_message(message)
except Exception as e:
logger.error(f'Payload {payload["description"]} failed: {str(e)}')
failed_payloads.append(payload["description"])
@ -25,12 +28,34 @@ class TestRelayRLN(StepsRLN, StepsRelay):
assert not failed_payloads, f"Payloads failed: {failed_payloads}"
def test_publish_with_valid_payloads_at_spam_rate(self):
for i, payload in enumerate(SAMPLE_INPUTS[:2]):
previous = int(time())
for i, payload in enumerate(SAMPLE_INPUTS[:4]):
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)
if i > 0:
now = int(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)
def test_publish_with_valid_payloads_at_alternate_rate(self):
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:
if (i + 1) % 2 == 1: # every odd sample should be sent slowly
delay(1)
now = math.trunc(time())
logger.debug(f"Message sent at timestamp {now}")
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)