55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify sys_metrics.py produces valid JSON output."""
|
|
|
|
import json
|
|
import subprocess
|
|
|
|
result = subprocess.run(
|
|
['python3', '/root/.hermes/wizard-outputs/spark/sys_metrics.py'],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
|
|
if result.returncode != 0:
|
|
print(f"FAILED: Script exited with code {result.returncode}")
|
|
exit(1)
|
|
|
|
try:
|
|
data = json.loads(result.stdout)
|
|
except json.JSONDecodeError as e:
|
|
print(f"FAILED: Invalid JSON - {e}")
|
|
exit(1)
|
|
|
|
required_keys = ['disk', 'memory', 'load_average', 'uptime_seconds']
|
|
for key in required_keys:
|
|
if key not in data:
|
|
print(f"FAILED: Missing key '{key}'")
|
|
exit(1)
|
|
|
|
# Verify disk has required fields
|
|
disk_fields = ['total', 'used', 'free', 'percent_used']
|
|
for field in disk_fields:
|
|
if field not in data['disk']:
|
|
print(f"FAILED: Disk missing field '{field}'")
|
|
exit(1)
|
|
|
|
# Verify memory has required fields
|
|
mem_fields = ['total', 'used', 'available', 'percent_used']
|
|
for field in mem_fields:
|
|
if field not in data['memory']:
|
|
print(f"FAILED: Memory missing field '{field}'")
|
|
exit(1)
|
|
|
|
# Verify load_average has required fields
|
|
load_fields = ['1min', '5min', '15min']
|
|
for field in load_fields:
|
|
if field not in data['load_average']:
|
|
print(f"FAILED: Load average missing field '{field}'")
|
|
exit(1)
|
|
|
|
print("VERIFIED: sys_metrics.py produces valid JSON with all required fields")
|
|
print(f"Keys: {list(data.keys())}")
|
|
print(f"Disk usage: {data['disk']['percent_used']}%")
|
|
print(f"Memory usage: {data['memory']['percent_used']}%")
|
|
print(f"Load average: {data['load_average']['1min']}")
|
|
print(f"Uptime: {data['uptime_seconds']} seconds") |