From 60a919e4619660880bc9398518b04237e3f5b9e8 Mon Sep 17 00:00:00 2001 From: aya Date: Sun, 10 Aug 2025 22:31:20 +0300 Subject: [PATCH] Add debug / admin tests --- src/node/api_clients/rest.py | 9 +++++++ src/node/waku_node.py | 9 +++++++ tests/rest_flags/__init__.py | 0 tests/rest_flags/admin_flags.py | 44 +++++++++++++++++++++++++++++++++ tests/rest_flags/debug_flags.py | 35 ++++++++++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 tests/rest_flags/__init__.py create mode 100644 tests/rest_flags/admin_flags.py create mode 100644 tests/rest_flags/debug_flags.py diff --git a/src/node/api_clients/rest.py b/src/node/api_clients/rest.py index 762d5183..464f5de7 100644 --- a/src/node/api_clients/rest.py +++ b/src/node/api_clients/rest.py @@ -175,3 +175,12 @@ class REST(BaseClient): def get_filter_subscriptions(self): return self.rest_call("get", "admin/v1/filter/subscriptions").json() + + def get_info(self): + return self.rest_call("get", "info").json() + + def get_version(self): + return self.rest_call("get", "version").text.strip() + + def get_debug_version(self): + return self.rest_call("get", "debug/v1/version").text.strip() diff --git a/src/node/waku_node.py b/src/node/waku_node.py index 8faadab3..fa304e6b 100644 --- a/src/node/waku_node.py +++ b/src/node/waku_node.py @@ -564,3 +564,12 @@ class WakuNode: def get_filter_subscriptions(self): return self._api.get_filter_subscriptions() + + def get_info(self): + return self._api.get_info() + + def get_version(self): + return self._api.get_version() + + def get_debug_version(self): + return self._api.get_debug_version() diff --git a/tests/rest_flags/__init__.py b/tests/rest_flags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/rest_flags/admin_flags.py b/tests/rest_flags/admin_flags.py new file mode 100644 index 00000000..bd52821f --- /dev/null +++ b/tests/rest_flags/admin_flags.py @@ -0,0 +1,44 @@ +import pytest +from src.env_vars import NODE_1, NODE_2, STRESS_ENABLED +from src.libs.common import delay +from src.libs.custom_logger import get_custom_logger +from src.node.waku_node import WakuNode +from src.steps.filter import StepsFilter +from src.steps.light_push import StepsLightPush +from src.steps.relay import StepsRelay +from src.steps.store import StepsStore +import re + +logger = get_custom_logger(__name__) + +""" +These tests make sure thst REST flags related to admin flags acting as expected +""" + + +class TestE2E(StepsFilter, StepsStore, StepsRelay, StepsLightPush): + @pytest.fixture(scope="function", autouse=True) + def nodes(self): + self.node1 = WakuNode(NODE_2, f"node1_{self.test_id}") + self.node2 = WakuNode(NODE_2, f"node2_{self.test_id}") + + def test_admin_filter_subscriptions_shape(self): + self.node1.start(filter="true", relay="true") + self.node2.start(relay="false", filternode=self.node1.get_multiaddr_with_id(), discv5_bootstrap_node=self.node1.get_enr_uri()) + resp = self.node2.set_filter_subscriptions( + {"requestId": "1", "contentFilters": [self.test_content_topic], "pubsubTopic": self.test_pubsub_topic} + ) + subs = self.node1.get_filter_subscriptions() + logger.debug(f"Node admin subscriptions info{subs}") + assert resp["statusDesc"] == "OK" and resp["requestId"] == "1" + logger.debug(f"node 1 peers {self.node1.get_peers()}") + assert self.node2.get_multiaddr_with_id().rpartition("/p2p/")[2] == subs[0]["peerId"], "peer id doesn't match" + assert subs[0]["filterCriteria"][0]["pubsubTopic"] == self.test_pubsub_topic, "pubsub topic doesn't match" + assert subs[0]["filterCriteria"][0]["contentTopic"] == self.test_content_topic, "content topic doesn't match" + + def test_admin_peers_stats_shape(self): + self.node1.start(relay="true") + self.node2.start(relay="true", discv5_bootstrap_node=self.node1.get_enr_uri()) + + stats = self.node1.get_peer_stats() + logger.debug(f"Node admin peers stats {stats}") diff --git a/tests/rest_flags/debug_flags.py b/tests/rest_flags/debug_flags.py new file mode 100644 index 00000000..1792ec03 --- /dev/null +++ b/tests/rest_flags/debug_flags.py @@ -0,0 +1,35 @@ +import pytest +from src.env_vars import NODE_1, NODE_2, STRESS_ENABLED +from src.libs.common import delay +from src.libs.custom_logger import get_custom_logger +from src.node.waku_node import WakuNode +from src.steps.filter import StepsFilter +from src.steps.light_push import StepsLightPush +from src.steps.relay import StepsRelay +from src.steps.store import StepsStore +import re + +logger = get_custom_logger(__name__) + +""" +These tests make sure thst REST flags related to debug acting as expected +""" + + +class TestE2E(StepsFilter, StepsStore, StepsRelay, StepsLightPush): + @pytest.fixture(scope="function", autouse=True) + def nodes(self): + self.node1 = WakuNode(NODE_2, f"node1_{self.test_id}") + + def test_verify_node_version2(self): + self.node1.start(relay="true") + node1_version = self.node1.get_version() + logger.debug(f"version of created node is {node1_version}") + assert re.match(r"^v0\.(3[5-9])(?:[.\-]|$)", node1_version), f"expected v0.35–v0.39, got {node1_version}" + + def test_verify_node_info(self): + self.node1.start(relay="true") + info = self.node1.get_info() + logger.debug(f"node info: {info}") + assert info["enrUri"] == self.node1.get_enr_uri(), "node enruri doesn't match" + assert self.node1.get_multiaddr_with_id() in info["listenAddresses"], "node address doesn't match"