reth_node_core/args/
enclave.rs

1//! clap [Args](clap::Args) for RPC related arguments.
2
3use std::net::IpAddr;
4
5use clap::Args;
6use reth_enclave::{ENCLAVE_DEFAULT_ENDPOINT_ADDR, ENCLAVE_DEFAULT_ENDPOINT_PORT};
7
8/// Parameters for configuring the enclave more granularity via CLI
9#[derive(Debug, Clone, Args, PartialEq, Eq, Copy)]
10#[command(next_help_heading = "Enclave")]
11pub struct EnclaveArgs {
12    /// Auth server address to listen on
13    #[arg(long = "enclave.endpoint-addr", default_value_t = ENCLAVE_DEFAULT_ENDPOINT_ADDR)]
14    pub enclave_server_addr: IpAddr,
15
16    /// Auth server port to listen on
17    #[arg(long = "enclave.endpoint-port", default_value_t = ENCLAVE_DEFAULT_ENDPOINT_PORT)]
18    pub enclave_server_port: u16,
19
20    /// Spin up mock server for testing purpose
21    #[arg(long = "enclave.mock-server", action = clap::ArgAction::SetTrue)]
22    pub mock_server: bool,
23
24    /// Enclave client timeout
25    #[arg(long = "enclave.timeout", default_value_t = 5)]
26    pub enclave_timeout: u64,
27}
28
29impl Default for EnclaveArgs {
30    fn default() -> Self {
31        Self {
32            enclave_server_addr: ENCLAVE_DEFAULT_ENDPOINT_ADDR,
33            enclave_server_port: ENCLAVE_DEFAULT_ENDPOINT_PORT,
34            mock_server: false,
35            enclave_timeout: 5,
36        }
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43    use crate::args::enclave::EnclaveArgs;
44    use clap::{Args, Parser};
45
46    /// A helper type to parse Args more easily
47    #[derive(Parser)]
48    struct CommandParser<T: Args> {
49        #[command(flatten)]
50        args: T,
51    }
52
53    #[test]
54    fn test_enclave_args_parser() {
55        let args = CommandParser::<EnclaveArgs>::parse_from(["reth node"]).args;
56
57        let addr = args.enclave_server_addr;
58        let port = args.enclave_server_port;
59        let mock = args.mock_server;
60
61        assert_eq!(port, ENCLAVE_DEFAULT_ENDPOINT_PORT);
62        assert_eq!(addr, ENCLAVE_DEFAULT_ENDPOINT_ADDR);
63        assert_eq!(mock, false);
64    }
65}