diff --git a/agent/src/metrics/cpu.rs b/agent/src/metrics/cpu.rs index 58077dc..cd11694 100644 --- a/agent/src/metrics/cpu.rs +++ b/agent/src/metrics/cpu.rs @@ -1,3 +1,26 @@ -pub fn get(_sys: &sysinfo::System) -> f32 { - 0.0 +use sysinfo::System; + +pub fn get(sys: &System) -> f32 { + let cpus = sys.cpus(); + if cpus.is_empty() { + return 0.0; + } + let total: f32 = cpus.iter().map(|c| c.cpu_usage()).sum(); + total / cpus.len() as f32 +} + +#[cfg(test)] +mod tests { + use super::*; + use sysinfo::System; + + #[test] + fn test_cpu_in_range() { + let mut sys = System::new(); + sys.refresh_cpu_usage(); + std::thread::sleep(std::time::Duration::from_millis(200)); + sys.refresh_cpu_usage(); + let val = get(&sys); + assert!(val >= 0.0 && val <= 100.0, "CPU hors plage : {}", val); + } } diff --git a/agent/src/metrics/memory.rs b/agent/src/metrics/memory.rs index 1a8e65a..f0551ef 100644 --- a/agent/src/metrics/memory.rs +++ b/agent/src/metrics/memory.rs @@ -1,3 +1,20 @@ -pub fn get(_sys: &sysinfo::System) -> (u64, u64, u64) { - (0, 0, 0) +use sysinfo::System; + +pub fn get(sys: &System) -> (u64, u64, u64) { + (sys.used_memory(), sys.free_memory(), sys.total_memory()) +} + +#[cfg(test)] +mod tests { + use super::*; + use sysinfo::System; + + #[test] + fn test_memory_coherent() { + let mut sys = System::new(); + sys.refresh_memory(); + let (used, free, total) = get(&sys); + assert!(total > 0, "Total mémoire nul"); + assert!(used + free <= total + 1024 * 1024, "used + free > total"); + } } diff --git a/agent/src/metrics/network.rs b/agent/src/metrics/network.rs index 26db732..5f5f055 100644 --- a/agent/src/metrics/network.rs +++ b/agent/src/metrics/network.rs @@ -1,5 +1,23 @@ use sysinfo::Networks; -pub fn get(_nets: &Networks) -> (u64, u64) { - (0, 0) +pub fn get(networks: &Networks) -> (u64, u64) { + let rx: u64 = networks.iter().map(|(_, n)| n.total_received()).sum(); + let tx: u64 = networks.iter().map(|(_, n)| n.total_transmitted()).sum(); + (rx, tx) +} + +#[cfg(test)] +mod tests { + use super::*; + use sysinfo::Networks; + + #[test] + fn test_network_values_non_negative() { + let mut nets = Networks::new_with_refreshed_list(); + nets.refresh(); + let (rx, tx) = get(&nets); + // Les compteurs cumulatifs sont toujours >= 0 (u64) + let _ = rx; + let _ = tx; + } } diff --git a/agent/src/metrics/uptime.rs b/agent/src/metrics/uptime.rs index 9c27853..9075609 100644 --- a/agent/src/metrics/uptime.rs +++ b/agent/src/metrics/uptime.rs @@ -1,3 +1,12 @@ pub fn get() -> u64 { - 0 + sysinfo::System::uptime() +} + +#[cfg(test)] +mod tests { + #[test] + fn test_uptime_positif() { + let up = super::get(); + assert!(up > 0, "uptime nul ou négatif"); + } }