feat(agent): payload AgentMetrics + SmartMetrics + tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
use nanometrics_agent::payload::{AgentMetrics, SmartMetrics};
|
||||
|
||||
#[test]
|
||||
fn test_serialize_json_complet() {
|
||||
let m = AgentMetrics {
|
||||
hostname: "srv-01".to_string(),
|
||||
ip: "10.0.0.11".to_string(),
|
||||
cpu_percent: Some(42.5),
|
||||
memory_used: Some(3_000_000_000),
|
||||
memory_free: Some(5_000_000_000),
|
||||
memory_total: Some(8_000_000_000),
|
||||
hdd_used: Some(60_000_000_000),
|
||||
hdd_free: Some(140_000_000_000),
|
||||
hdd_total: Some(200_000_000_000),
|
||||
uptime: Some(1234567),
|
||||
network_rx: Some(1024),
|
||||
network_tx: Some(512),
|
||||
temperature: None,
|
||||
smart: None,
|
||||
status: "online".to_string(),
|
||||
};
|
||||
let json = serde_json::to_string(&m).unwrap();
|
||||
assert!(json.contains("\"hostname\":\"srv-01\""));
|
||||
assert!(json.contains("\"cpu_percent\":42.5"));
|
||||
assert!(json.contains("\"status\":\"online\""));
|
||||
assert!(json.contains("\"temperature\":null"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_serialize_avec_smart() {
|
||||
let m = AgentMetrics {
|
||||
hostname: "srv-01".to_string(),
|
||||
ip: "10.0.0.11".to_string(),
|
||||
smart: Some(SmartMetrics {
|
||||
passed: true,
|
||||
temperature: Some(34),
|
||||
reallocated_sectors: Some(0),
|
||||
power_on_hours: Some(4213),
|
||||
wear_level: Some(98),
|
||||
}),
|
||||
status: "online".to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
let json = serde_json::to_string(&m).unwrap();
|
||||
assert!(json.contains("\"passed\":true"));
|
||||
assert!(json.contains("\"temperature\":34"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialize_depuis_json() {
|
||||
let json = r#"{"hostname":"host1","ip":"10.0.0.1","status":"online","cpu_percent":55.0,"memory_used":null,"memory_free":null,"memory_total":null,"hdd_used":null,"hdd_free":null,"hdd_total":null,"uptime":null,"network_rx":null,"network_tx":null,"temperature":null,"smart":null}"#;
|
||||
let m: AgentMetrics = serde_json::from_str(json).unwrap();
|
||||
assert_eq!(m.hostname, "host1");
|
||||
assert_eq!(m.cpu_percent, Some(55.0));
|
||||
assert!(m.smart.is_none());
|
||||
}
|
||||
Reference in New Issue
Block a user