From ce3babf65f1be2fd569f16c6f9f1e3bd16228382 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 29 May 2025 16:49:33 +0800 Subject: [PATCH] test: customized node --- cluster_config/scripts/run_customized_node.sh | 13 ++++++++++ src/env_vars.py | 1 + src/node/node_vars.py | 6 +++++ src/node/nomos_node.py | 3 +++ .../test_data_confidentiality.py | 26 ++++++++++--------- 5 files changed, 37 insertions(+), 12 deletions(-) create mode 100755 cluster_config/scripts/run_customized_node.sh diff --git a/cluster_config/scripts/run_customized_node.sh b/cluster_config/scripts/run_customized_node.sh new file mode 100755 index 0000000..8440bff --- /dev/null +++ b/cluster_config/scripts/run_customized_node.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +export CFG_FILE_PATH="/etc/nomos/config.yaml" \ + CFG_SERVER_ADDR="http://cfgsync:4400" \ + CFG_HOST_IP=$(hostname -i) \ + CFG_HOST_IDENTIFIER="validator-$(hostname -i)" \ + LOG_LEVEL="INFO" \ + RISC0_DEV_MODE=true + +/usr/bin/cfgsync-client && \ + exec /usr/bin/nomos-node /etc/nomos/config.yaml diff --git a/src/env_vars.py b/src/env_vars.py index 0bcc5c8..8a2358e 100644 --- a/src/env_vars.py +++ b/src/env_vars.py @@ -21,6 +21,7 @@ NOMOS_IMAGE = get_env_var("NOMOS_IMAGE", DEFAULT_NOMOS_IMAGE) DEFAULT_PROXY_IMAGE = "bitnami/configurable-http-proxy:latest" HTTP_PROXY_IMAGE = get_env_var("HTTP_PROXY_IMAGE", DEFAULT_PROXY_IMAGE) +NOMOS_CUSTOM = "nomos_custom" NOMOS = "nomos" NOMOS_EXECUTOR = "nomos_executor" CFGSYNC = "cfgsync" diff --git a/src/node/node_vars.py b/src/node/node_vars.py index a381084..6b1f71f 100644 --- a/src/node/node_vars.py +++ b/src/node/node_vars.py @@ -1,6 +1,12 @@ from src.env_vars import NOMOS_IMAGE nomos_nodes = { + "nomos_custom": { + "image": NOMOS_IMAGE, + "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], + "ports": ["3000/udp", "18080/tcp"], + "entrypoint": "/etc/nomos/scripts/run_customized_node.sh", + }, "nomos": { "image": NOMOS_IMAGE, "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], diff --git a/src/node/nomos_node.py b/src/node/nomos_node.py index 4080b76..d61fdfc 100644 --- a/src/node/nomos_node.py +++ b/src/node/nomos_node.py @@ -128,6 +128,9 @@ class NomosNode: def name(self): return self._container_name + def get_archive(self, path): + return self._container.get_archive(path) + def api_port(self): return self._tcp_port diff --git a/tests/data_confidentiality/test_data_confidentiality.py b/tests/data_confidentiality/test_data_confidentiality.py index 6efc54f..9389ff9 100644 --- a/tests/data_confidentiality/test_data_confidentiality.py +++ b/tests/data_confidentiality/test_data_confidentiality.py @@ -3,7 +3,7 @@ import json import pytest from src.client.nomos_cli import NomosCli -from src.env_vars import CONSENSUS_SLOT_TIME, NOMOS +from src.env_vars import CONSENSUS_SLOT_TIME, NOMOS, NOMOS_CUSTOM from src.libs.common import delay, to_app_id, to_index from src.libs.custom_logger import get_custom_logger from src.node.nomos_node import NomosNode @@ -27,22 +27,24 @@ class TestDataConfidentiality(StepsDataAvailability): decoded_data = NomosCli(command="reconstruct").run(input_values=[rcv_data_json], decode_only=True) assert DATA_TO_DISPERSE[1] == decoded_data, "Retrieved data are not same with original data" + + # Copy the config file from first node + cfg_file = open("./cluster_config/config.yaml", "wb") + stream, _stat = self.node2.get_archive("/config.yaml") + for chunk in stream: + cfg_file.write(chunk) + cfg_file.close() + self.node2.stop() - # Start new node with the same IP address - self.nodeX = NomosNode(NOMOS, "nomos_node_0") + + # Start new node with the same hostname and configuration + self.nodeX = NomosNode(NOMOS_CUSTOM, "nomos_node_0") self.nodeX.start() try: - ensure_nodes_ready(self.nodeX) + self.nodeX.ensure_ready() except Exception as ex: logger.error(f"REST service did not become ready in time: {ex}") raise - delay(CONSENSUS_SLOT_TIME) - - self.disperse_data(DATA_TO_DISPERSE[2], to_app_id(2), to_index(0)) - delay(CONSENSUS_SLOT_TIME) - try: - rcv_data = self.get_data_range(self.nodeX, to_app_id(2), to_index(0), to_index(5)) - except AssertionError as ae: - assert "Get data range response is empty" in str(ae), "Get data range response should be empty" + delay(600)