feat(agent): métriques CPU, RAM, réseau, uptime
Implémentation complète des 4 modules sysinfo 0.30 (sans default-features). - cpu: moyenne sur tous les cœurs via refresh_cpu_usage() - memory: used/free/total via System - network: total_received/total_transmitted via Networks - uptime: System::uptime() statique 10 tests unitaires passent.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user