feat(agent): collecte SMART via smartctl -j
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
use nanometrics_agent::metrics::smart;
|
||||
|
||||
const SMART_JSON_OK: &str = r#"{
|
||||
"smart_status": {"passed": true},
|
||||
"temperature": {"current": 34},
|
||||
"ata_smart_attributes": {
|
||||
"table": [
|
||||
{"id": 5, "name": "Reallocated_Sector_Ct", "raw": {"value": 0}, "value": 200},
|
||||
{"id": 9, "name": "Power_On_Hours", "raw": {"value": 4213}, "value": 77},
|
||||
{"id": 177, "name": "Wear_Leveling_Count", "raw": {"value": 0}, "value": 98}
|
||||
]
|
||||
}
|
||||
}"#;
|
||||
|
||||
#[test]
|
||||
fn test_parse_smart_json_ok() {
|
||||
let result = smart::parse_json(SMART_JSON_OK).unwrap();
|
||||
assert!(result.passed);
|
||||
assert_eq!(result.temperature, Some(34));
|
||||
assert_eq!(result.reallocated_sectors, Some(0));
|
||||
assert_eq!(result.power_on_hours, Some(4213));
|
||||
assert_eq!(result.wear_level, Some(98));
|
||||
}
|
||||
|
||||
const SMART_JSON_FAIL: &str = r#"{
|
||||
"smart_status": {"passed": false},
|
||||
"temperature": {"current": 52},
|
||||
"ata_smart_attributes": {
|
||||
"table": [
|
||||
{"id": 5, "name": "Reallocated_Sector_Ct", "raw": {"value": 47}, "value": 150}
|
||||
]
|
||||
}
|
||||
}"#;
|
||||
|
||||
#[test]
|
||||
fn test_parse_smart_json_fail() {
|
||||
let result = smart::parse_json(SMART_JSON_FAIL).unwrap();
|
||||
assert!(!result.passed);
|
||||
assert_eq!(result.reallocated_sectors, Some(47));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_smart_disponible() {
|
||||
let _ = smart::is_available();
|
||||
}
|
||||
Reference in New Issue
Block a user