aetheris_server/
config.rs1#[derive(Debug, Clone)]
7pub struct ServerConfig {
8 pub metrics_port: u16,
10 pub tick_rate: u64,
12 pub encode_threads: usize,
14}
15
16impl ServerConfig {
17 #[must_use]
19 pub fn load() -> Self {
20 let metrics_port = std::env::var("AETHERIS_METRICS_PORT")
21 .ok()
22 .and_then(|s| s.parse().ok())
23 .unwrap_or(9000);
24
25 let tick_rate = std::env::var("AETHERIS_TICK_RATE")
26 .ok()
27 .and_then(|s| s.parse().ok())
28 .unwrap_or(60);
29
30 let encode_threads = std::env::var("AETHERIS_ENCODE_THREADS")
31 .ok()
32 .and_then(|s| s.parse().ok())
33 .unwrap_or(2);
34
35 Self {
36 metrics_port,
37 tick_rate,
38 encode_threads,
39 }
40 }
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46
47 #[test]
48 fn test_config_defaults() {
49 unsafe {
51 std::env::remove_var("AETHERIS_METRICS_PORT");
52 }
53 let config = ServerConfig::load();
54 assert_eq!(config.metrics_port, 9000);
55 }
56
57 #[test]
58 fn test_config_env_override() {
59 unsafe {
60 std::env::set_var("AETHERIS_METRICS_PORT", "9500");
61 }
62 let config = ServerConfig::load();
63 assert_eq!(config.metrics_port, 9500);
64 unsafe {
65 std::env::remove_var("AETHERIS_METRICS_PORT");
66 }
67 }
68}