50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
from unittest.mock import patch
|
|
|
|
from modules import app_health
|
|
|
|
|
|
class HealthParserTest(unittest.TestCase):
|
|
def test_parses_memory_usage(self):
|
|
memory = app_health.parse_meminfo(
|
|
"MemTotal: 1000 kB\nMemAvailable: 250 kB\n"
|
|
)
|
|
|
|
self.assertEqual(memory["total_bytes"], 1024000)
|
|
self.assertEqual(memory["used_bytes"], 768000)
|
|
self.assertEqual(memory["used_percent"], 75.0)
|
|
|
|
def test_rejects_incomplete_memory_data(self):
|
|
with self.assertRaises(ValueError):
|
|
app_health.parse_meminfo("MemTotal: 1000 kB\n")
|
|
|
|
def test_parses_current_and_historical_throttling(self):
|
|
throttling = app_health.parse_throttled("throttled=0x50005\n")
|
|
|
|
self.assertEqual(throttling["raw"], "0x50005")
|
|
self.assertEqual(
|
|
throttling["current"], ["under_voltage", "throttled"]
|
|
)
|
|
self.assertEqual(
|
|
throttling["occurred"], ["under_voltage", "throttled"]
|
|
)
|
|
|
|
def test_rejects_unexpected_throttling_response(self):
|
|
with self.assertRaises(ValueError):
|
|
app_health.parse_throttled("unknown")
|
|
|
|
@patch("modules.app_health.shutil.disk_usage")
|
|
def test_disk_percent_accounts_for_reserved_blocks(self, disk_usage):
|
|
disk_usage.return_value = SimpleNamespace(
|
|
total=100, used=88, free=9
|
|
)
|
|
|
|
disk = app_health._disk()
|
|
|
|
self.assertEqual(disk["used_percent"], 90.7)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|