From 2fc0cd197459461b1a0a1697c96736752701b7ae Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 17 Jan 2025 14:23:52 +0800 Subject: [PATCH] test: use setup_main_nodes fixture - add disperse_data --- src/node/api_clients/rest.py | 6 +++--- src/node/nomos_node.py | 3 +++ src/steps/da.py | 19 ++++++++++++++++++ src/test_data.py | 10 ++++++++++ tests/data_integrity/test_data_integrity.py | 13 ++++++++---- tests/e2e/test_2node_alive.py | 22 ++++++--------------- 6 files changed, 50 insertions(+), 23 deletions(-) create mode 100644 src/steps/da.py diff --git a/src/node/api_clients/rest.py b/src/node/api_clients/rest.py index 72a1ec2..0b697ab 100644 --- a/src/node/api_clients/rest.py +++ b/src/node/api_clients/rest.py @@ -24,8 +24,8 @@ class REST(BaseClient): status_response = self.rest_call("get", "cryptarchia/info") return status_response.json() - def disperse_data(self, dispersal_request): - return self.rest_call("post", "disperse-data", json.dumps(dispersal_request)) + def send_dispersal_request(self, data): + return self.rest_call("post", "disperse-data", json.dumps(data)) def get_range(self, app_id, data_range): - return self.rest_call("post", "da/get-range", json.dumps({app_id, data_range})) + return self.rest_call("post", "da/get-range", json.dumps({"app_id": app_id, "data_range": data_range})) diff --git a/src/node/nomos_node.py b/src/node/nomos_node.py index cd3f079..bf74887 100644 --- a/src/node/nomos_node.py +++ b/src/node/nomos_node.py @@ -145,3 +145,6 @@ class NomosNode: matches = self._docker_manager.search_log_for_keywords(self._log_path, keywords, False) assert not matches, f"Found errors {matches}" + + def send_dispersal_request(self, data): + return self._api.send_dispersal_request(data) diff --git a/src/steps/da.py b/src/steps/da.py new file mode 100644 index 0000000..a96ee21 --- /dev/null +++ b/src/steps/da.py @@ -0,0 +1,19 @@ +import allure + +from src.steps.common import StepsCommon + + +def prepare_dispersal_data(data): + dispersal_data = {"data": data, "metadata": {"app_id": 10, "index": 0}} + return dispersal_data + + +class StepsDataAvailability(StepsCommon): + + @allure.step + def disperse_data(self, data): + dispersal_data = prepare_dispersal_data(data) + try: + self.node3.send_dispersal_request(dispersal_data) + except Exception as ex: + assert "Bad Request" in str(ex) or "Internal Server Error" in str(ex) diff --git a/src/test_data.py b/src/test_data.py index e4d7665..4fd7cc3 100644 --- a/src/test_data.py +++ b/src/test_data.py @@ -24,3 +24,13 @@ LOG_ERROR_KEYWORDS = [ "race condition", "double free", ] + +DATA_TO_DISPERSE = { + "Hello World!", + "1234567890", + '{"key": "value"}', + "这是一些中文", + "🚀🌟✨", + "Lorem ipsum dolor sit amet", + "Hello", +} diff --git a/tests/data_integrity/test_data_integrity.py b/tests/data_integrity/test_data_integrity.py index 39b8056..6be91a1 100644 --- a/tests/data_integrity/test_data_integrity.py +++ b/tests/data_integrity/test_data_integrity.py @@ -1,4 +1,11 @@ -class TestDataIntegrity: +import pytest + +from src.steps.da import StepsDataAvailability +from src.test_data import DATA_TO_DISPERSE + + +@pytest.mark.usefixtures("setup_main_nodes") +class TestDataIntegrity(StepsDataAvailability): main_nodes = [] def test_da_identify_retrieve_missing_columns(self): @@ -6,9 +13,7 @@ class TestDataIntegrity: print(node) def test_da_sampling_determines_data_presence(self): - for node in self.main_nodes: - print(node) + self.disperse_data(DATA_TO_DISPERSE[0]) - # Disperse data # Get data from range # Compare diff --git a/tests/e2e/test_2node_alive.py b/tests/e2e/test_2node_alive.py index 9553332..0a7b6f8 100644 --- a/tests/e2e/test_2node_alive.py +++ b/tests/e2e/test_2node_alive.py @@ -1,24 +1,14 @@ +import pytest + from src.env_vars import CFGSYNC, NOMOS, NOMOS_EXECUTOR from src.libs.custom_logger import get_custom_logger from src.node.nomos_node import NomosNode +from src.steps.common import StepsCommon logger = get_custom_logger(__name__) -class Test2NodeClAlive: +class Test2NodeClAlive(StepsCommon): + @pytest.mark.usefixtures("setup_main_nodes") def test_cluster_start(self): - - self.node1 = NomosNode(CFGSYNC, "cfgsync") - self.node2 = NomosNode(NOMOS, "nomos_node_0") - self.node3 = NomosNode(NOMOS_EXECUTOR, "nomos_node_1") - - self.node1.start() - self.node2.start() - self.node3.start() - - try: - self.node2.ensure_ready() - self.node3.ensure_ready() - except Exception as ex: - logger.error(f"REST service did not become ready in time: {ex}") - raise + logger.debug("Two nodes cluster started successfully!")