test_system_stats.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """Tests for system stats utilities."""
  2. import psutil
  3. from openhands.runtime.utils.system_stats import get_system_stats
  4. def test_get_system_stats():
  5. """Test that get_system_stats returns valid system statistics."""
  6. stats = get_system_stats()
  7. # Test structure
  8. assert isinstance(stats, dict)
  9. assert set(stats.keys()) == {'cpu_percent', 'memory', 'disk', 'io'}
  10. # Test CPU stats
  11. assert isinstance(stats['cpu_percent'], float)
  12. assert 0 <= stats['cpu_percent'] <= 100 * psutil.cpu_count()
  13. # Test memory stats
  14. assert isinstance(stats['memory'], dict)
  15. assert set(stats['memory'].keys()) == {'rss', 'vms', 'percent'}
  16. assert isinstance(stats['memory']['rss'], int)
  17. assert isinstance(stats['memory']['vms'], int)
  18. assert isinstance(stats['memory']['percent'], float)
  19. assert stats['memory']['rss'] > 0
  20. assert stats['memory']['vms'] > 0
  21. assert 0 <= stats['memory']['percent'] <= 100
  22. # Test disk stats
  23. assert isinstance(stats['disk'], dict)
  24. assert set(stats['disk'].keys()) == {'total', 'used', 'free', 'percent'}
  25. assert isinstance(stats['disk']['total'], int)
  26. assert isinstance(stats['disk']['used'], int)
  27. assert isinstance(stats['disk']['free'], int)
  28. assert isinstance(stats['disk']['percent'], float)
  29. assert stats['disk']['total'] > 0
  30. assert stats['disk']['used'] >= 0
  31. assert stats['disk']['free'] >= 0
  32. assert 0 <= stats['disk']['percent'] <= 100
  33. # Verify that used + free is less than or equal to total
  34. # (might not be exactly equal due to filesystem overhead)
  35. assert stats['disk']['used'] + stats['disk']['free'] <= stats['disk']['total']
  36. # Test I/O stats
  37. assert isinstance(stats['io'], dict)
  38. assert set(stats['io'].keys()) == {'read_bytes', 'write_bytes'}
  39. assert isinstance(stats['io']['read_bytes'], int)
  40. assert isinstance(stats['io']['write_bytes'], int)
  41. assert stats['io']['read_bytes'] >= 0
  42. assert stats['io']['write_bytes'] >= 0
  43. def test_get_system_stats_stability():
  44. """Test that get_system_stats can be called multiple times without errors."""
  45. # Call multiple times to ensure stability
  46. for _ in range(3):
  47. stats = get_system_stats()
  48. assert isinstance(stats, dict)
  49. assert stats['cpu_percent'] >= 0