Skip to content

Commit

Permalink
chore(test): Add simple launcher test for op-besu (#173)
Browse files Browse the repository at this point in the history
*Description*

- Extend the `el_cl_launcher_test.star` with a simple test for `op-besu`
- Extract some test input defaults on top of the file
  • Loading branch information
janjakubnanista authored Feb 18, 2025
1 parent 5ee6561 commit c1c3fc8
Showing 1 changed file with 126 additions and 21 deletions.
147 changes: 126 additions & 21 deletions test/el_cl_launcher_test.star
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,25 @@ ethereum_package_constants = import_module(
)
util = import_module("/src/util.star")

#
# Default test inputs
#

jwt_file = "/path/to/jwt_file"

deployment_output = "/path/to/deployment_output"

l1_config_env_vars = {
"L1_RPC_URL": "L1_RPC_URL",
"L1_RPC_KIND": "standard",
"CL_RPC_URL": "CL_RPC_URL",
}

da_server_context = struct(
enabled=False,
http_url="da_server_http_url",
)


def test_launch_with_defaults(plan):
parsed_input_args = input_parser.input_parser(
Expand All @@ -27,26 +46,14 @@ def test_launch_with_defaults(plan):
)

observability_helper = observability.make_helper(parsed_input_args.observability)

deployment_output = "/path/to/deployment_output"
l1_config_env_vars = {
"L1_RPC_URL": "L1_RPC_URL",
"L1_RPC_KIND": "standard",
"CL_RPC_URL": "CL_RPC_URL",
}
jwt_file = "/path/to/jwt_file"
chains = parsed_input_args.chains
chain = chains[0]
da_server_context = struct(
enabled=False,
http_url="da_server_http_url",
)

# We'll mock read_network_config_value since it returns a runtime value that we would not be able to retrieve
sequencer_private_key_mock = "sequencer_private_key"
read_network_config_value_mock = kurtosistest.mock(
util, "read_network_config_value"
).mock_return_value(sequencer_private_key_mock)
kurtosistest.mock(util, "read_network_config_value").mock_return_value(
sequencer_private_key_mock
)

all_el_contexts, all_cl_contexts = el_cl_launcher.launch(
plan=plan,
Expand All @@ -70,10 +77,9 @@ def test_launch_with_defaults(plan):

el_service_name = "op-el-1-op-reth-op-node-"
el_service = plan.get_service(el_service_name)
el_service_config = kurtosistest.get_service_config(el_service_name)

cl_service_config = kurtosistest.get_service_config(
service_name="op-cl-1-op-node-op-reth-"
)
cl_service_config = kurtosistest.get_service_config("op-cl-1-op-node-op-reth-")
expect.ne(cl_service_config, None)
expect.eq(cl_service_config.image, "op-node:latest")
expect.eq(cl_service_config.env_vars, {})
Expand Down Expand Up @@ -116,9 +122,6 @@ def test_launch_with_defaults(plan):
],
)

el_service_config = kurtosistest.get_service_config(
service_name="op-el-1-op-reth-op-node-"
)
expect.ne(el_service_config, None)
expect.eq(el_service_config.image, "op-reth:latest")
expect.eq(el_service_config.env_vars, {})
Expand Down Expand Up @@ -152,3 +155,105 @@ def test_launch_with_defaults(plan):
"--metrics=0.0.0.0:9001",
],
)


def test_launch_with_el_op_besu(plan):
parsed_input_args = input_parser.input_parser(
plan,
{
"chains": [
{
"participants": [
{
"el_type": "op-besu",
"el_image": "op-besu:latest",
}
]
}
]
},
)

observability_helper = observability.make_helper(parsed_input_args.observability)
chains = parsed_input_args.chains
chain = chains[0]

# We'll mock read_network_config_value since it returns a runtime value that we would not be able to retrieve
sequencer_private_key_mock = "sequencer_private_key"
kurtosistest.mock(util, "read_network_config_value").mock_return_value(
sequencer_private_key_mock
)

all_el_contexts, all_cl_contexts = el_cl_launcher.launch(
plan=plan,
jwt_file=jwt_file,
network_params=chain.network_params,
mev_params=chain.mev_params,
deployment_output=deployment_output,
participants=chain.participants,
num_participants=len(chains),
l1_config_env_vars=l1_config_env_vars,
l2_services_suffix="",
global_log_level="info",
global_node_selectors=[],
global_tolerations=[],
persistent=False,
additional_services=[],
observability_helper=observability_helper,
interop_params=parsed_input_args.interop,
da_server_context=da_server_context,
)

el_service_name = "op-el-1-op-besu-op-node-"
el_service = plan.get_service(el_service_name)
el_service_config = kurtosistest.get_service_config(el_service_name)
expect.ne(el_service_config, None)
expect.eq(el_service_config.image, "op-besu:latest")
expect.eq(el_service_config.env_vars, {})
expect.eq(
el_service_config.cmd,
[
" ".join(
[
"besu",
"--genesis-file=/network-configs/genesis-{0}.json".format(
chain.network_params.network_id
),
"--network-id={0}".format(chain.network_params.network_id),
"--data-path=/data/besu/execution-data",
"--host-allowlist=*",
"--rpc-http-enabled=true",
"--rpc-http-host=0.0.0.0",
"--rpc-http-port=8545",
"--rpc-http-api=ADMIN,CLIQUE,ETH,NET,DEBUG,TXPOOL,ENGINE,TRACE,WEB3,MINER",
"--rpc-http-cors-origins=*",
"--rpc-http-max-active-connections=300",
"--rpc-ws-enabled=true",
"--rpc-ws-host=0.0.0.0",
"--rpc-ws-port=8546",
"--rpc-ws-api=ADMIN,CLIQUE,ETH,NET,DEBUG,TXPOOL,ENGINE,TRACE,WEB3,MINER",
"--p2p-enabled=true",
"--p2p-host={0}".format(
ethereum_package_constants.PRIVATE_IP_ADDRESS_PLACEHOLDER
),
"--p2p-port=30303",
"--engine-rpc-enabled=true",
"--engine-jwt-secret={0}".format(
ethereum_package_constants.JWT_MOUNT_PATH_ON_CONTAINER
),
"--engine-host-allowlist=*",
"--engine-rpc-port={0}".format(
el_service.ports["engine-rpc"].number
),
"--sync-mode=FULL",
"--bonsai-limit-trie-logs-enabled=false",
"--version-compatibility-protection=false",
"--metrics-enabled=true",
"--metrics-host=0.0.0.0",
"--metrics-port=9001",
]
)
],
)

# TODO Once files are available on kurtosistest.get_service_config, make sure the JWT file is being mounted

0 comments on commit c1c3fc8

Please sign in to comment.