test: valid payloads dynamic(on chain) at spam rate

- extend timeout for ensure_ready() to 600s
- add ensure_healthy() for future use
- add text content based rest call
- remove NODE1, NODE2 imports
This commit is contained in:
Roman 2024-04-23 13:57:47 +08:00
parent 027b446202
commit a034ad6a5b
No known key found for this signature in database
GPG Key ID: B8FE070B54E11B75
4 changed files with 39 additions and 3 deletions

View File

@ -15,10 +15,19 @@ class REST(BaseClient):
headers = {"Content-Type": "application/json"}
return self.make_request(method, url, headers=headers, data=payload)
def rest_call_text(self, method, endpoint, payload=None):
url = f"http://127.0.0.1:{self._rest_port}/{endpoint}"
headers = {"accept": "text/plain"}
return self.make_request(method, url, headers=headers, data=payload)
def info(self):
info_response = self.rest_call("get", "debug/v1/info")
return info_response.json()
def health(self):
health_response = self.rest_call_text("get", "health")
return health_response.text()
def get_peers(self):
get_peers_response = self.rest_call("get", "admin/v1/peers")
return get_peers_response.json()

View File

@ -186,11 +186,16 @@ class WakuNode:
logger.debug(f"Unpause container with id {self._container.short_id}")
self._container.unpause()
@retry(stop=stop_after_delay(10), wait=wait_fixed(0.1), reraise=True)
@retry(stop=stop_after_delay(600), wait=wait_fixed(1), reraise=True)
def ensure_ready(self):
self.info_response = self.info()
logger.info("REST service is ready !!")
@retry(stop=stop_after_delay(600), wait=wait_fixed(1), reraise=True)
def ensure_healthy(self):
self.health_response = self.health()
logger.info("Node is healthy !!")
def get_enr_uri(self):
try:
return self.info_response["enrUri"]
@ -210,6 +215,9 @@ class WakuNode:
def info(self):
return self._api.info()
def health(self):
return self._api.health()
def get_peers(self):
return self._api.get_peers()

View File

@ -1,4 +1,4 @@
from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY, NODE_1, NODE_2
from src.env_vars import DEFAULT_NWAKU, RLN_CREDENTIALS, NODEKEY
from src.libs.common import gen_step_id, to_base64
from src.libs.custom_logger import get_custom_logger
import os

View File

@ -105,7 +105,7 @@ class TestRelayRLN(StepsRLN, StepsRelay):
failed_payloads.append(payload["description"])
assert not failed_payloads, f"Payloads failed: {failed_payloads}"
@pytest.mark.skip(reason="pending on https://github.com/waku-org/nwaku/issues/2606")
@pytest.mark.timeout(600)
def test_publish_with_valid_payloads_dynamic_at_slow_rate(self):
self.setup_first_rln_relay_node(rln_relay_dynamic="true")
self.setup_second_rln_relay_node(rln_relay_dynamic="true")
@ -121,3 +121,22 @@ class TestRelayRLN(StepsRLN, StepsRelay):
failed_payloads.append(payload["description"])
delay(1)
assert not failed_payloads, f"Payloads failed: {failed_payloads}"
@pytest.mark.timeout(600)
def test_publish_with_valid_payloads_dynamic_at_spam_rate(self):
self.setup_first_rln_relay_node(rln_relay_dynamic="true")
self.setup_second_rln_relay_node(rln_relay_dynamic="true")
self.subscribe_main_relay_nodes()
previous = math.trunc(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:
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)