use std::time::Duration;
#[derive(Debug, Clone, PartialEq)]
pub struct NetworkOptions {
pub connect_timeout: Duration,
pub read_timeout: Duration,
pub reconnect_on_error: bool,
pub max_reconnect_attempts: u32,
}
impl Default for NetworkOptions {
fn default() -> Self {
Self {
connect_timeout: Duration::from_secs(10),
read_timeout: Duration::from_secs(30),
reconnect_on_error: false,
max_reconnect_attempts: 3,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_should_have_correct_timeout_values() {
let opts = NetworkOptions::default();
assert_eq!(opts.connect_timeout, Duration::from_secs(10));
assert_eq!(opts.read_timeout, Duration::from_secs(30));
}
#[test]
fn default_should_disable_reconnect() {
let opts = NetworkOptions::default();
assert!(!opts.reconnect_on_error);
assert_eq!(opts.max_reconnect_attempts, 3);
}
#[test]
fn connect_timeout_microseconds_should_match_duration() {
let opts = NetworkOptions::default();
assert_eq!(opts.connect_timeout.as_micros(), 10_000_000);
}
#[test]
fn read_timeout_microseconds_should_match_duration() {
let opts = NetworkOptions::default();
assert_eq!(opts.read_timeout.as_micros(), 30_000_000);
}
}