#[derive(Debug, Clone)]
pub struct ServerConfig {
pub metrics_port: u16,
pub tick_rate: u64,
}
impl ServerConfig {
#[must_use]
pub fn load() -> Self {
let metrics_port = std::env::var("AETHERIS_METRICS_PORT")
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(9000);
let tick_rate = std::env::var("AETHERIS_TICK_RATE")
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(60);
Self {
metrics_port,
tick_rate,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_defaults() {
unsafe {
std::env::remove_var("AETHERIS_METRICS_PORT");
}
let config = ServerConfig::load();
assert_eq!(config.metrics_port, 9000);
}
#[test]
fn test_config_env_override() {
unsafe {
std::env::set_var("AETHERIS_METRICS_PORT", "9500");
}
let config = ServerConfig::load();
assert_eq!(config.metrics_port, 9500);
unsafe {
std::env::remove_var("AETHERIS_METRICS_PORT");
}
}
}