added disk detection for tests
This commit is contained in:
@@ -524,6 +524,70 @@ fn get_cpu_temp() -> Option<f32> {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_disk_info() -> (f64, f64, f64) {
|
||||||
|
let mut sys = System::new();
|
||||||
|
sys.refresh_disks();
|
||||||
|
sys.refresh_disks_list();
|
||||||
|
|
||||||
|
let mut total_size = 0u64;
|
||||||
|
let mut total_used = 0u64;
|
||||||
|
let mut count = 0;
|
||||||
|
|
||||||
|
for disk in sys.disks() {
|
||||||
|
// Ignoriere CD-ROMs und kleine Systempartitionen
|
||||||
|
if disk.total_space() > 100 * 1024 * 1024 {
|
||||||
|
// > 100MB
|
||||||
|
total_size += disk.total_space();
|
||||||
|
total_used += disk.total_space() - disk.available_space();
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Berechnungen
|
||||||
|
let size_gb = if count > 0 {
|
||||||
|
total_size as f64 / (1024.0 * 1024.0 * 1024.0)
|
||||||
|
} else {
|
||||||
|
// Fallback: Versuche df unter Linux
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
{
|
||||||
|
if let Ok(output) = Command::new("df")
|
||||||
|
.arg("-B1")
|
||||||
|
.arg("--output=size,used")
|
||||||
|
.output()
|
||||||
|
{
|
||||||
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
||||||
|
for line in stdout.lines().skip(1) {
|
||||||
|
let parts: Vec<&str> = line.split_whitespace().collect();
|
||||||
|
if parts.len() == 2 {
|
||||||
|
if let (Ok(size), Ok(used)) =
|
||||||
|
(parts[0].parse::<u64>(), parts[1].parse::<u64>())
|
||||||
|
{
|
||||||
|
total_size += size;
|
||||||
|
total_used += used;
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total_size as f64 / (1024.0 * 1024.0 * 1024.0)
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[cfg(not(target_os = "linux"))]
|
||||||
|
{
|
||||||
|
0.0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let usage = if total_size > 0 {
|
||||||
|
(total_used as f64 / total_size as f64) * 100.0
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
|
||||||
|
(size_gb, usage, 0.0) // Disk-Temp bleibt 0.0 ohne spezielle Hardware
|
||||||
|
}
|
||||||
|
|
||||||
fn get_network_traffic() -> Option<(u64, u64)> {
|
fn get_network_traffic() -> Option<(u64, u64)> {
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
{
|
{
|
||||||
@@ -602,3 +666,10 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
heartbeat_handle.await?;
|
heartbeat_handle.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_metrics() {
|
||||||
|
println!("CPU Temp: {:?}", get_cpu_temp());
|
||||||
|
println!("Disk Info: {:?}", get_disk_info());
|
||||||
|
println!("Network: {:?}", get_network_traffic());
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user