use std::time::Duration;
#[derive(Debug, Clone)]
pub struct RedisConfig {
pub max_connections: usize,
pub connect_timeout: u64,
pub wait_timeout: u64,
pub enable_logging: bool,
}
impl Default for RedisConfig {
fn default() -> Self {
Self {
max_connections: 10,
connect_timeout: 5,
wait_timeout: 10,
enable_logging: false,
}
}
}
impl RedisConfig {
pub fn new(
max_connections: usize,
connect_timeout: u64,
wait_timeout: u64,
enable_logging: bool,
) -> Self {
Self {
max_connections,
connect_timeout,
wait_timeout,
enable_logging,
}
}
#[allow(dead_code)]
pub(crate) fn connect_timeout_duration(&self) -> Duration {
Duration::from_secs(self.connect_timeout)
}
#[allow(dead_code)]
pub(crate) fn wait_timeout_duration(&self) -> Duration {
Duration::from_secs(self.wait_timeout)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_config() {
let config = RedisConfig::default();
assert_eq!(config.max_connections, 10);
assert_eq!(config.connect_timeout, 5);
assert_eq!(config.wait_timeout, 10);
assert!(!config.enable_logging);
}
#[test]
fn test_new_config() {
let config = RedisConfig::new(20, 10, 15, true);
assert_eq!(config.max_connections, 20);
assert_eq!(config.connect_timeout, 10);
assert_eq!(config.wait_timeout, 15);
assert!(config.enable_logging);
}
#[test]
fn test_connect_timeout_duration() {
let config = RedisConfig::new(10, 5, 10, false);
assert_eq!(config.connect_timeout_duration(), Duration::from_secs(5));
}
#[test]
fn test_wait_timeout_duration() {
let config = RedisConfig::new(10, 5, 10, false);
assert_eq!(config.wait_timeout_duration(), Duration::from_secs(10));
}
#[test]
fn test_clone() {
let config = RedisConfig::new(15, 8, 12, true);
let cloned = config.clone();
assert_eq!(config.max_connections, cloned.max_connections);
assert_eq!(config.connect_timeout, cloned.connect_timeout);
assert_eq!(config.wait_timeout, cloned.wait_timeout);
assert_eq!(config.enable_logging, cloned.enable_logging);
}
#[test]
fn test_debug() {
let config = RedisConfig::default();
let debug_str = format!("{:?}", config);
assert!(debug_str.contains("RedisConfig"));
assert!(debug_str.contains("max_connections"));
}
}