diff --git a/crates/configuration/src/global_settings.rs b/crates/configuration/src/global_settings.rs index 607951e8934e88c6f602533158e28fc11d7f03bc..080b7294469cb93b0efca58bce774c1c277bf197 100644 --- a/crates/configuration/src/global_settings.rs +++ b/crates/configuration/src/global_settings.rs @@ -17,10 +17,15 @@ pub struct GlobalSettings { // TODO: parse both case in zombienet node version to avoid renamed ? #[serde(rename = "timeout")] network_spawn_timeout: Duration, + #[serde(default = "default_node_spawn_timeout")] node_spawn_timeout: Duration, local_ip: Option<IpAddr>, } +fn default_node_spawn_timeout() -> Duration { + 300 +} + impl GlobalSettings { /// External bootnode address. pub fn bootnodes_addresses(&self) -> Vec<&Multiaddr> { @@ -189,6 +194,38 @@ mod tests { ); } + #[test] + fn global_settings_config_builder_should_succeeds_when_node_spawn_timeout_is_missing() { + let global_settings_config = GlobalSettingsBuilder::new() + .with_bootnodes_addresses(vec![ + "/ip4/10.41.122.55/tcp/45421", + "/ip4/51.144.222.10/tcp/2333", + ]) + .with_network_spawn_timeout(600) + .with_local_ip("10.0.0.1") + .build() + .unwrap(); + + let bootnodes_addresses: Vec<Multiaddr> = vec![ + "/ip4/10.41.122.55/tcp/45421".try_into().unwrap(), + "/ip4/51.144.222.10/tcp/2333".try_into().unwrap(), + ]; + assert_eq!( + global_settings_config.bootnodes_addresses(), + bootnodes_addresses.iter().collect::<Vec<_>>() + ); + assert_eq!(global_settings_config.network_spawn_timeout(), 600); + assert_eq!(global_settings_config.node_spawn_timeout(), 300); + assert_eq!( + global_settings_config + .local_ip() + .unwrap() + .to_string() + .as_str(), + "10.0.0.1" + ); + } + #[test] fn global_settings_builder_should_fails_and_returns_an_error_if_one_bootnode_address_is_invalid( ) {