diff --git a/src/env_vars.py b/src/env_vars.py index 28b2c59..a44a73d 100644 --- a/src/env_vars.py +++ b/src/env_vars.py @@ -19,6 +19,7 @@ DEFAULT_NOMOS_IMAGE = "nomos:testnet" NOMOS_IMAGE = get_env_var("NOMOS_IMAGE", DEFAULT_NOMOS_IMAGE) NOMOS_MOD_DA_IMAGE = "nomos-mod-da:testnet" NOMOS_EXECUTOR_MOD_DA_IMAGE = "nomos-executor-mod-da:testnet" +NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e = "nomos-executor-mod-da-25d781e:testnet" DEFAULT_PROXY_IMAGE = "bitnami/configurable-http-proxy:latest" HTTP_PROXY_IMAGE = get_env_var("HTTP_PROXY_IMAGE", DEFAULT_PROXY_IMAGE) @@ -29,6 +30,7 @@ NOMOS_EXECUTOR = "nomos_executor" CFGSYNC = "cfgsync" NOMOS_MOD_DA = "nomos_mod_da" NOMOS_EXECUTOR_MOD_DA = "nomos_executor_mod_da" +NOMOS_EXECUTOR_MOD_DA_25d781e = "nomos_executor_mod_da_25d781e" NODE_1 = get_env_var("NODE_1", NOMOS) NODE_2 = get_env_var("NODE_2", NOMOS_EXECUTOR) diff --git a/src/node/node_vars.py b/src/node/node_vars.py index 628f76b..8ed0215 100644 --- a/src/node/node_vars.py +++ b/src/node/node_vars.py @@ -1,4 +1,4 @@ -from src.env_vars import NOMOS_IMAGE, NOMOS_MOD_DA_IMAGE, NOMOS_EXECUTOR_MOD_DA_IMAGE +from src.env_vars import NOMOS_IMAGE, NOMOS_MOD_DA_IMAGE, NOMOS_EXECUTOR_MOD_DA_IMAGE, NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e nomos_nodes = { "nomos_mod_da": { @@ -13,6 +13,12 @@ nomos_nodes = { "ports": ["3000/udp", "18080/tcp"], "entrypoint": "/etc/nomos/scripts/run_nomos_executor_debug.sh", }, + "nomos_executor_mod_da_25d781e": { + "image": NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e, + "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], + "ports": ["3000/udp", "18080/tcp"], + "entrypoint": "/etc/nomos/scripts/run_nomos_executor_debug.sh", + }, "nomos_custom": { "image": NOMOS_IMAGE, "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], diff --git a/src/steps/common.py b/src/steps/common.py index eaf9db9..8428834 100644 --- a/src/steps/common.py +++ b/src/steps/common.py @@ -122,9 +122,12 @@ class StepsCommon: min_dispersal_peers = get_param_or_default(request, "min_dispersal_peers", 1) prepare_cluster_config(2, subnet_size, dispersal_factor, min_dispersal_peers) + executor_version = get_param_or_default(request, "executor_version", "") + executor_version = f"_{executor_version}" if executor_version else "" + self.node1 = NomosNode(CFGSYNC, "cfgsync") self.node2 = NomosNode(NOMOS_MOD_DA, "nomos_node_0") - self.node3 = NomosNode(NOMOS_EXECUTOR_MOD_DA, "nomos_node_1") + self.node3 = NomosNode(NOMOS_EXECUTOR_MOD_DA + f"{executor_version}", "nomos_node_1") self.main_nodes.extend([self.node1, self.node2, self.node3]) start_nodes(self.main_nodes) ensure_nodes_ready(self.main_nodes[1:]) diff --git a/tests/dispersal_resilience/test_dispersal_resilience.py b/tests/dispersal_resilience/test_dispersal_resilience.py index 198bb23..66e70a3 100644 --- a/tests/dispersal_resilience/test_dispersal_resilience.py +++ b/tests/dispersal_resilience/test_dispersal_resilience.py @@ -23,3 +23,15 @@ class TestDispersalResilience(StepsDataAvailability): if rcv_data: raise AssertionError("Get data range response should be empty") + + @pytest.mark.usefixtures("setup_2_node_mod_da_cluster") + @pytest.mark.parametrize("setup_2_node_mod_da_cluster", [{"executor_version": "25d781e"}], indirect=True) + def test_chunkification_robustness_chunk_size_30_executor(self): + # Confirm validator node has rejected dispersal request from executor with different data alignment + try: + self.disperse_data(DATA_TO_DISPERSE[4], to_app_id(1), to_index(0), timeout_duration=0) + except Exception as e: + assert "does not match destination slice length" in str(e), "Send dispersal request should fail" + return + + assert False, "Send dispersal request should fail"