mirror of
https://github.com/logos-messaging/logos-messaging-interop-tests.git
synced 2026-01-11 02:13:07 +00:00
chore: parameters and volumes for RLN relay
This commit is contained in:
parent
de60598b6c
commit
4039480638
@ -28,3 +28,7 @@ GATEWAY = get_env_var("GATEWAY", "172.18.0.1")
|
||||
RUNNING_IN_CI = get_env_var("CI")
|
||||
NODEKEY = get_env_var("NODEKEY", "30348dd51465150e04a5d9d932c72864c8967f806cce60b5d26afeca1e77eb68")
|
||||
API_REQUEST_TIMEOUT = get_env_var("API_REQUEST_TIMEOUT", 10)
|
||||
ETH_CLIENT_ADDRESS = get_env_var("ETH_CLIENT_ADDRESS", None)
|
||||
ETH_TESTNET_KEY = get_env_var("ETH_TESTNET_KEY", None)
|
||||
KEYSTORE_PASSWORD = get_env_var("KEYSTORE_PASSWORD", None)
|
||||
ETH_CONTRACT_ADDRESS = get_env_var("ETH_CONTRACT_ADDRESS", None)
|
||||
|
||||
@ -31,7 +31,7 @@ class DockerManager:
|
||||
logger.debug(f"Network {network_name} created")
|
||||
return network
|
||||
|
||||
def start_container(self, image_name, ports, args, log_path, container_ip):
|
||||
def start_container(self, image_name, ports, args, log_path, container_ip, volumes):
|
||||
cli_args = []
|
||||
for key, value in args.items():
|
||||
if isinstance(value, list): # Check if value is a list
|
||||
@ -41,7 +41,9 @@ class DockerManager:
|
||||
port_bindings = {f"{port}/tcp": ("", port) for port in ports}
|
||||
logger.debug(f"Starting container with image {image_name}")
|
||||
logger.debug(f"Using args {cli_args}")
|
||||
container = self._client.containers.run(image_name, command=cli_args, ports=port_bindings, detach=True, remove=True, auto_remove=True)
|
||||
container = self._client.containers.run(
|
||||
image_name, command=cli_args, ports=port_bindings, detach=True, remove=True, auto_remove=True, volumes=volumes
|
||||
)
|
||||
|
||||
network = self._client.networks.get(NETWORK_NAME)
|
||||
network.connect(container, ipv4_address=container_ip)
|
||||
|
||||
@ -32,6 +32,7 @@ class WakuNode:
|
||||
self._discv5_port = self._ports[3]
|
||||
self._metrics_port = self._ports[4]
|
||||
self._api = REST(self._rest_port)
|
||||
self._volumes = []
|
||||
|
||||
default_args = {
|
||||
"listen-address": "0.0.0.0",
|
||||
@ -49,6 +50,9 @@ class WakuNode:
|
||||
"peer-exchange": "true",
|
||||
"discv5-discovery": "true",
|
||||
"cluster-id": "0",
|
||||
"rln_enabled": False,
|
||||
"rln_creds": {},
|
||||
"rln_register_only": False,
|
||||
}
|
||||
|
||||
if self.is_gowaku():
|
||||
@ -74,15 +78,47 @@ class WakuNode:
|
||||
key = key.replace("_", "-")
|
||||
default_args[key] = value
|
||||
|
||||
self._container = self._docker_manager.start_container(self._docker_manager.image, self._ports, default_args, self._log_path, self._ext_ip)
|
||||
logger.debug(f"Started container from image {self._image_name}. REST: {self._rest_port}")
|
||||
DS.waku_nodes.append(self)
|
||||
delay(1) # if we fire requests to soon after starting the node will sometimes fail to start correctly
|
||||
try:
|
||||
self.ensure_ready()
|
||||
except Exception as ex:
|
||||
logger.error(f"REST service did not become ready in time: {ex}")
|
||||
raise
|
||||
if default_args["rln_enabled"] and len(default_args["rln_creds"]) == 4:
|
||||
self._volumes.append(["./rln_tree:/etc/rln_tree/:Z", "./keystore/keystore.json:/keystore/keystore.json/:Z"])
|
||||
rln_opts = {}
|
||||
if self.is_gowaku():
|
||||
rln_opts = {
|
||||
"eth-client-address": default_args["rln_creds"]["eth_client_address"],
|
||||
"eth-account-private-key": default_args["rln_creds"]["eth_client_private_key"],
|
||||
"eth-contract-address": default_args["rln_creds"]["eth_contract_address"],
|
||||
"cred-password": default_args["rln_creds"]["keystore_password"],
|
||||
}
|
||||
elif self.is_nwaku():
|
||||
rln_opts = {
|
||||
"rln-relay-eth-client-address": default_args["rln_creds"]["eth_client_address"],
|
||||
"rln-relay-eth-private-key": default_args["rln_creds"]["eth_client_private_key"],
|
||||
"rln-relay-eth-contract-address": default_args["rln_creds"]["eth_contract_address"],
|
||||
"rln-relay-cred-password": default_args["rln_creds"]["keystore_password"],
|
||||
}
|
||||
if default_args["rln_register_only"]:
|
||||
rln_opts["execute"] = None
|
||||
|
||||
rln_opts["rln-relay-cred-path"] = "/keystore/keystore.json"
|
||||
del default_args["rln_creds"]
|
||||
|
||||
default_args.update(rln_opts)
|
||||
|
||||
self._container = self._docker_manager.start_container(
|
||||
self._docker_manager.image, self._ports, default_args, self._log_path, self._ext_ip, self._volumes
|
||||
)
|
||||
|
||||
if default_args["rln_register_only"]:
|
||||
logger.debug(f"Executed container from image {self._image_name}. REST: {self._rest_port} to register RLN")
|
||||
|
||||
else:
|
||||
logger.debug(f"Started container from image {self._image_name}. REST: {self._rest_port} with RLN enabled")
|
||||
DS.waku_nodes.append(self)
|
||||
delay(1) # if we fire requests to soon after starting the node will sometimes fail to start correctly
|
||||
try:
|
||||
self.ensure_ready()
|
||||
except Exception as ex:
|
||||
logger.error(f"REST service did not become ready in time: {ex}")
|
||||
raise
|
||||
|
||||
@retry(stop=stop_after_delay(5), wait=wait_fixed(0.1), reraise=True)
|
||||
def stop(self):
|
||||
|
||||
@ -5,7 +5,17 @@ import pytest
|
||||
import allure
|
||||
from src.libs.common import to_base64, delay
|
||||
from src.node.waku_message import WakuMessage
|
||||
from src.env_vars import NODE_1, NODE_2, ADDITIONAL_NODES, NODEKEY, RUNNING_IN_CI
|
||||
from src.env_vars import (
|
||||
NODE_1,
|
||||
NODE_2,
|
||||
ADDITIONAL_NODES,
|
||||
NODEKEY,
|
||||
RUNNING_IN_CI,
|
||||
ETH_CLIENT_ADDRESS,
|
||||
ETH_TESTNET_KEY,
|
||||
KEYSTORE_PASSWORD,
|
||||
ETH_CONTRACT_ADDRESS,
|
||||
)
|
||||
from src.node.waku_node import WakuNode
|
||||
from tenacity import retry, stop_after_delay, wait_fixed
|
||||
from src.test_data import VALID_PUBSUB_TOPICS
|
||||
@ -34,6 +44,24 @@ class StepsRelay:
|
||||
self.node2.start(relay="true", discv5_bootstrap_node=self.enr_uri)
|
||||
self.main_nodes.extend([self.node1, self.node2])
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def setup_main_rln_relay_nodes(self, request):
|
||||
logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}")
|
||||
self.node1 = WakuNode(NODE_1, f"node1_{request.cls.test_id}")
|
||||
rln_creds = {
|
||||
"eth_client_address": ETH_CLIENT_ADDRESS,
|
||||
"eth_testnet_key": ETH_TESTNET_KEY,
|
||||
"keystore_password": KEYSTORE_PASSWORD,
|
||||
"eth_contract_address": ETH_CONTRACT_ADDRESS,
|
||||
}
|
||||
self.node1.start(relay="true", nodekey=NODEKEY, rln=True, rln_creds=rln_creds, rln_register_only=True)
|
||||
self.node1.start(relay="true", nodekey=NODEKEY, rln=True, rln_creds=rln_creds)
|
||||
self.enr_uri = self.node1.get_enr_uri()
|
||||
self.node2 = WakuNode(NODE_2, f"node2_{request.cls.test_id}")
|
||||
self.node2.start(relay="true", discv5_bootstrap_node=self.enr_uri, rln=True, rln_creds=rln_creds, rln_register_only=True)
|
||||
self.node2.start(relay="true", discv5_bootstrap_node=self.enr_uri, rln=True, rln_creds=rln_creds)
|
||||
self.main_nodes.extend([self.node1, self.node2])
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def setup_optional_relay_nodes(self, request):
|
||||
logger.debug(f"Running fixture setup: {inspect.currentframe().f_code.co_name}")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user