use sysinfo::System;
use crate::metrics::{
cpu::{refresh, CpuState},
HISTORY_LEN,
};
#[test]
fn test_cpu_state_new_usages_length() {
let state = CpuState::new(8);
assert_eq!(state.usages.len(), 8);
}
#[test]
fn test_cpu_state_new_history_outer_length() {
let state = CpuState::new(4);
assert_eq!(state.history.len(), 4);
}
#[test]
fn test_cpu_state_new_history_inner_length() {
let state = CpuState::new(4);
for (i, core_hist) in state.history.iter().enumerate() {
assert_eq!(
core_hist.len(),
HISTORY_LEN,
"core {i} history should have HISTORY_LEN entries"
);
}
}
#[test]
fn test_cpu_state_new_global_history_length() {
let state = CpuState::new(4);
assert_eq!(state.global_history.len(), HISTORY_LEN);
}
#[test]
fn test_cpu_state_new_usages_all_zero() {
let state = CpuState::new(4);
assert!(state.usages.iter().all(|&u| u == 0.0));
}
#[test]
fn test_cpu_state_new_history_all_zero() {
let state = CpuState::new(2);
assert!(state.history.iter().flatten().all(|&v| v == 0.0));
assert!(state.global_history.iter().all(|&v| v == 0.0));
}
#[test]
fn test_cpu_refresh_does_not_panic() {
let mut sys = System::new_all();
sys.refresh_all();
let cpu_count = sys.cpus().len().max(1);
let mut state = CpuState::new(cpu_count);
refresh(&mut state, &sys);
assert_eq!(state.usages.len(), cpu_count);
}
#[test]
fn test_cpu_refresh_global_history_stays_capped() {
let mut sys = System::new_all();
sys.refresh_all();
let cpu_count = sys.cpus().len().max(1);
let mut state = CpuState::new(cpu_count);
refresh(&mut state, &sys);
assert_eq!(state.global_history.len(), HISTORY_LEN);
}
#[test]
fn test_cpu_refresh_usages_in_valid_range() {
let mut sys = System::new_all();
sys.refresh_all();
let cpu_count = sys.cpus().len().max(1);
let mut state = CpuState::new(cpu_count);
refresh(&mut state, &sys);
for (i, &usage) in state.usages.iter().enumerate() {
assert!(
(0.0..=100.0).contains(&usage),
"CPU{i} usage {usage} is outside [0, 100]"
);
}
}