write_value(f, ' + Machine name: %s\n', s.get_platform_machine)
write_value(f, ' + Hostname: %s\n', s.get_platform_hostname)
- write_value(f, ' + Uptime: %d seconds\n', s.get_uptime)
+ write_value(f, ' + Uptime: %d seconds', s.get_uptime)
+ write_value(f, ' (%s)\n', s.get_uptime_desc)
write_value(f, ' + Loadavg: %f %f %f\n', s.get_loadavg)
import os.path
import platform
import time
+from datetime import timedelta
class SysInfo:
def __init__(self):
"""Returns the uptime in seconds."""
return self._uptime
+ def get_uptime_desc(self):
+ """Returns the uptime in human readable form.
+
+ Specifically, the format is '[DD day[s],] hh:mm'.
+ It returns None if _uptime is None.
+
+ """
+ if self._uptime is None:
+ return None
+
+ uptime_desc = ''
+ time_delta = timedelta(seconds=self._uptime)
+ days = time_delta.days
+ if days > 0:
+ uptime_desc += ('%d day%s, ' % (days, 's' if days > 1 else ''))
+ hours = int(time_delta.seconds / 3600)
+ minutes = int((time_delta.seconds - hours * 3600) / 60)
+ uptime_desc += ('%d:%02d' % (hours, minutes))
+ return uptime_desc
+
def get_loadavg(self):
"""Returns the load average as 3 floating point values in an array."""
return self._loadavg
elif self._filename == '/proc/version':
return 'An SMP version string'
elif self._filename == '/proc/uptime':
- return '86400.75 139993.71'
+ return '172800.75 139993.71'
elif self._filename == '/proc/loadavg':
return '0.1 0.2 0.3 0.4'
else:
self.assertEqual('Unknown', s.get_platform_machine())
self.assertFalse(s.get_platform_is_smp())
self.assertEqual(None, s.get_uptime())
+ self.assertEqual(None, s.get_uptime_desc())
self.assertEqual(None, s.get_loadavg())
self.assertEqual(None, s.get_mem_total())
self.assertEqual(None, s.get_mem_free())
def test_sysinfo_factory(self):
"""Test that SysInfoFromFactory returns a valid system-specific
- SysInfo implementation."""
+ SysInfo implementation.
+
+ See sysinfo.SysInfoTestcase() for some ofthe parameters.
+
+ """
old_platform_system = platform.system
platform.system = _my_testcase_platform_system
self.assertEqual('Unknown', s.get_platform_machine())
self.assertFalse(s.get_platform_is_smp())
self.assertEqual(131072, s.get_uptime())
+ # We check we do NOT add 's' to 'day' (because it's singular):
+ self.assertEqual('1 day, 12:24', s.get_uptime_desc())
self.assertEqual(None, s.get_loadavg())
self.assertEqual(None, s.get_mem_total())
self.assertEqual(None, s.get_mem_free())
self.assertEqual(NPROCESSORS_LINUX, s.get_num_processors())
self.assertEqual('myhostname', s.get_platform_hostname())
self.assertTrue(s.get_platform_is_smp())
- self.assertEqual(86401, s.get_uptime())
+ self.assertEqual(172801, s.get_uptime())
+ # We check we add 's' to 'day', and the mm part has an additional
+ # 0, i.e., not '0:0' but '0:00':
+ self.assertEqual('2 days, 0:00', s.get_uptime_desc())
self.assertEqual((0.1, 0.2, 0.3), s.get_loadavg())
self.assertEqual(3157884928, s.get_mem_total())
self.assertEqual(891383808, s.get_mem_free())