use crate::plugins::diagnostics::system_info;
#[tokio::test]
async fn test_system_info_collection() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("SYSTEM INFORMATION"));
assert!(info.contains("Operating System:"));
assert!(info.contains("Architecture:"));
assert!(info.contains("Router Version:"));
assert!(info.contains("(") && info.contains(")")); }
#[tokio::test]
async fn test_system_info_cpu_count() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("CPU INFORMATION"));
assert!(info.contains("Physical CPU cores:"));
assert!(info.contains("Available Parallelism:"));
assert!(info.contains("Container/Kubernetes CPU Information:"));
}
#[tokio::test]
async fn test_system_info_environment_variables() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("RELEVANT ENVIRONMENT VARIABLES"));
}
#[tokio::test]
async fn test_system_info_memory_details() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("MEMORY INFORMATION"));
assert!(info.contains("Total Memory:"));
assert!(info.contains("GB"));
assert!(info.contains("bytes"));
}
#[tokio::test]
async fn test_system_info_container_detection() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("Container Environment:"));
assert!(info.contains("detected") || info.contains("Not detected"));
}
#[tokio::test]
async fn test_system_info_cpu_load_collection() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(info.contains("SYSTEM LOAD"));
let has_load_average = info.contains("Load Average (1min):");
let has_cpu_usage_fallback = info.contains("CPU Usage (per core):");
let has_not_available = info.contains("Load Average: Not available");
assert!(
has_load_average || has_cpu_usage_fallback || has_not_available,
"Should have either load average, CPU usage fallback, or 'not available' message. Info contains: {}",
info
);
if has_load_average {
assert!(info.contains("Load per CPU (1min):"));
assert!(info.contains("utilization"));
assert!(info.contains("Individual CPU Core Usage:"));
assert!(info.contains("Average CPU Usage:"));
}
if has_cpu_usage_fallback {
assert!(info.contains("Total CPU Usage (average):"));
}
}
#[tokio::test]
async fn test_system_info_in_archive_extraction() {
let result = system_info::collect().await;
assert!(result.is_ok());
let info = result.unwrap();
assert!(!info.is_empty());
assert!(info.len() > 100); }