From c473ed9dfa0eace446db2f783cfe3884da425f78 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Fri, 22 May 2026 11:32:31 +0200 Subject: [PATCH] feat(agent): payload AgentMetrics + SmartMetrics + tests Co-Authored-By: Claude Sonnet 4.6 --- agent/tests/payload_test.rs | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 agent/tests/payload_test.rs diff --git a/agent/tests/payload_test.rs b/agent/tests/payload_test.rs new file mode 100644 index 0000000..711347d --- /dev/null +++ b/agent/tests/payload_test.rs @@ -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()); +}