diff --git a/veilid-server/Cargo.toml b/veilid-server/Cargo.toml index 8322e347..f6900264 100644 --- a/veilid-server/Cargo.toml +++ b/veilid-server/Cargo.toml @@ -19,8 +19,10 @@ path = "src/main.rs" default = ["rt-tokio", "veilid-core/default", "otlp-tonic"] default-async-std = ["rt-async-std", "veilid-core/default-async-std"] -virtual-network = ["veilid-core/virtual-network"] -virtual-network-server = ["veilid-core/virtual-network-server"] +virtual-network = [ + "veilid-core/virtual-network", + "veilid-core/virtual-network-server", +] crypto-test = ["rt-tokio", "veilid-core/crypto-test"] crypto-test-none = ["rt-tokio", "veilid-core/crypto-test-none"] diff --git a/veilid-server/src/main.rs b/veilid-server/src/main.rs index be71a51b..0df2464a 100644 --- a/veilid-server/src/main.rs +++ b/veilid-server/src/main.rs @@ -93,10 +93,24 @@ pub struct CmdlineArgs { #[arg(long, hide = true, value_name = "PATH", num_args=0..=1, require_equals=true, default_missing_value = "")] perfetto: Option, - /// Run as an extra daemon on the same machine for testing purposes, specify a number greater than zero to offset the listening ports + /// Run as an extra daemon on the same machine for testing purposes #[arg(short('n'), long)] subnode_index: Option, + /// Run several nodes in parallel on the same machine for testing purposes + /// + /// Will run subnodes N though N+(subnode_count-1), where N is 0 or set via --subnode_index + #[arg(long, value_name = "COUNT")] + subnode_count: Option, + + /// Connect to a virtual network router + /// + /// Specify either an remote tcp or ws url ('tcp://localhost:5149' or 'ws://localhost:5148') + /// or '' or 'local' to specify using an internally spawned server + #[cfg(feature = "virtual-network")] + #[arg(long, value_name = "URL", default_missing_value = "")] + virtual_router: Option, + /// Only generate a new keypair and print it /// /// Generate a new keypair for a specific crypto kind and print both the key and its secret to the terminal, then exit immediately. diff --git a/veilid-server/src/settings.rs b/veilid-server/src/settings.rs index 1397daaf..1c9312a9 100644 --- a/veilid-server/src/settings.rs +++ b/veilid-server/src/settings.rs @@ -49,9 +49,9 @@ pub fn load_default_config() -> EyreResult { server_address: '' "#; - #[cfg(not(feature = "virtual-network-server"))] + #[cfg(not(feature = "virtual-network"))] let virtual_network_server_section = ""; - #[cfg(feature = "virtual-network-server")] + #[cfg(feature = "virtual-network")] let virtual_network_server_section = r#" virtual_network_server: enabled: false @@ -107,6 +107,7 @@ logging: enabled: false testing: subnode_index: 0 + subnode_count: 1 %VIRTUAL_NETWORK_SERVER_SECTION% core: capabilities: @@ -720,20 +721,20 @@ pub struct VirtualNetwork { pub server_address: String, } -#[cfg(feature = "virtual-network-server")] +#[cfg(feature = "virtual-network")] #[derive(Debug, Deserialize, Serialize)] pub struct VirtualNetworkServer { pub enabled: bool, pub tcp: VirtualNetworkServerTcp, pub ws: VirtualNetworkServerWs, } -#[cfg(feature = "virtual-network-server")] +#[cfg(feature = "virtual-network")] #[derive(Debug, Deserialize, Serialize)] pub struct VirtualNetworkServerTcp { pub listen: bool, pub listen_address: NamedSocketAddrs, } -#[cfg(feature = "virtual-network-server")] +#[cfg(feature = "virtual-network")] #[derive(Debug, Deserialize, Serialize)] pub struct VirtualNetworkServerWs { pub listen: bool, @@ -743,7 +744,8 @@ pub struct VirtualNetworkServerWs { #[derive(Debug, Deserialize, Serialize)] pub struct Testing { pub subnode_index: u16, - #[cfg(feature = "virtual-network-server")] + pub subnode_count: u16, + #[cfg(feature = "virtual-network")] pub virtual_network_server: VirtualNetworkServer, } @@ -1123,7 +1125,7 @@ impl Settings { set_config_value!(inner.logging.perfetto.path, value); set_config_value!(inner.logging.console.enabled, value); set_config_value!(inner.testing.subnode_index, value); - #[cfg(feature = "virtual-network-server")] + #[cfg(feature = "virtual-network")] { set_config_value!(inner.testing.virtual_network_server.enabled, value); set_config_value!(inner.testing.virtual_network_server.tcp.listen, value); @@ -1729,7 +1731,7 @@ mod tests { assert_eq!(s.logging.perfetto.path, ""); assert!(!s.logging.console.enabled); assert_eq!(s.testing.subnode_index, 0); - #[cfg(feature = "virtual-network-server")] + #[cfg(feature = "virtual-network")] { assert_eq!(s.testing.virtual_network_server.enabled, false); assert_eq!(s.testing.virtual_network_server.tcp.listen, false);