reth_optimism_node/
args.rsuse reth_node_builder::engine_tree_config::{
DEFAULT_MEMORY_BLOCK_BUFFER_TARGET, DEFAULT_PERSISTENCE_THRESHOLD,
};
#[derive(Debug, Clone, PartialEq, Eq, clap::Args)]
#[command(next_help_heading = "Rollup")]
pub struct RollupArgs {
#[arg(long = "rollup.sequencer-http", value_name = "HTTP_URL")]
pub sequencer_http: Option<String>,
#[arg(long = "rollup.disable-tx-pool-gossip")]
pub disable_txpool_gossip: bool,
#[arg(long = "rollup.enable-genesis-walkback")]
pub enable_genesis_walkback: bool,
#[arg(long = "rollup.compute-pending-block")]
pub compute_pending_block: bool,
#[arg(long = "rollup.discovery.v4", default_value = "false")]
pub discovery_v4: bool,
#[arg(long = "engine.experimental", default_value = "false")]
pub experimental: bool,
#[arg(long = "engine.legacy", default_value = "false")]
pub legacy: bool,
#[arg(long = "engine.persistence-threshold", conflicts_with = "legacy", default_value_t = DEFAULT_PERSISTENCE_THRESHOLD)]
pub persistence_threshold: u64,
#[arg(long = "engine.memory-block-buffer-target", conflicts_with = "legacy", default_value_t = DEFAULT_MEMORY_BLOCK_BUFFER_TARGET)]
pub memory_block_buffer_target: u64,
}
impl Default for RollupArgs {
fn default() -> Self {
Self {
sequencer_http: None,
disable_txpool_gossip: false,
enable_genesis_walkback: false,
compute_pending_block: false,
discovery_v4: false,
experimental: false,
legacy: false,
persistence_threshold: DEFAULT_PERSISTENCE_THRESHOLD,
memory_block_buffer_target: DEFAULT_MEMORY_BLOCK_BUFFER_TARGET,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use clap::{Args, Parser};
#[derive(Parser)]
struct CommandParser<T: Args> {
#[command(flatten)]
args: T,
}
#[test]
fn test_parse_optimism_default_args() {
let default_args = RollupArgs::default();
let args = CommandParser::<RollupArgs>::parse_from(["reth"]).args;
assert_eq!(args, default_args);
}
#[test]
fn test_parse_optimism_walkback_args() {
let expected_args = RollupArgs { enable_genesis_walkback: true, ..Default::default() };
let args =
CommandParser::<RollupArgs>::parse_from(["reth", "--rollup.enable-genesis-walkback"])
.args;
assert_eq!(args, expected_args);
}
#[test]
fn test_parse_optimism_compute_pending_block_args() {
let expected_args = RollupArgs { compute_pending_block: true, ..Default::default() };
let args =
CommandParser::<RollupArgs>::parse_from(["reth", "--rollup.compute-pending-block"])
.args;
assert_eq!(args, expected_args);
}
#[test]
fn test_parse_optimism_discovery_v4_args() {
let expected_args = RollupArgs { discovery_v4: true, ..Default::default() };
let args = CommandParser::<RollupArgs>::parse_from(["reth", "--rollup.discovery.v4"]).args;
assert_eq!(args, expected_args);
}
#[test]
fn test_parse_optimism_sequencer_http_args() {
let expected_args =
RollupArgs { sequencer_http: Some("http://host:port".into()), ..Default::default() };
let args = CommandParser::<RollupArgs>::parse_from([
"reth",
"--rollup.sequencer-http",
"http://host:port",
])
.args;
assert_eq!(args, expected_args);
}
#[test]
fn test_parse_optimism_disable_txpool_args() {
let expected_args = RollupArgs { disable_txpool_gossip: true, ..Default::default() };
let args =
CommandParser::<RollupArgs>::parse_from(["reth", "--rollup.disable-tx-pool-gossip"])
.args;
assert_eq!(args, expected_args);
}
#[test]
fn test_parse_optimism_many_args() {
let expected_args = RollupArgs {
disable_txpool_gossip: true,
compute_pending_block: true,
enable_genesis_walkback: true,
sequencer_http: Some("http://host:port".into()),
..Default::default()
};
let args = CommandParser::<RollupArgs>::parse_from([
"reth",
"--rollup.disable-tx-pool-gossip",
"--rollup.compute-pending-block",
"--rollup.enable-genesis-walkback",
"--rollup.sequencer-http",
"http://host:port",
])
.args;
assert_eq!(args, expected_args);
}
}