BIND 10 trac2297, updated. 01c85b2bf83b55be659ebe1526eaa1c5aa55b6aa [2297] added a pretty-form of uptime in addition to the bare seconds
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Oct 25 00:07:14 UTC 2012
The branch, trac2297 has been updated
via 01c85b2bf83b55be659ebe1526eaa1c5aa55b6aa (commit)
from 7d777cee74391169cd589dab1330eda699d2b8d6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 01c85b2bf83b55be659ebe1526eaa1c5aa55b6aa
Author: JINMEI Tatuya <jinmei at isc.org>
Date: Wed Oct 24 17:06:46 2012 -0700
[2297] added a pretty-form of uptime in addition to the bare seconds
-----------------------------------------------------------------------
Summary of changes:
src/bin/sysinfo/sysinfo.py.in | 3 ++-
src/lib/python/isc/sysinfo/sysinfo.py | 21 +++++++++++++++++++++
src/lib/python/isc/sysinfo/tests/sysinfo_test.py | 16 +++++++++++++---
3 files changed, 36 insertions(+), 4 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/sysinfo/sysinfo.py.in b/src/bin/sysinfo/sysinfo.py.in
index 90204cd..477b9de 100755
--- a/src/bin/sysinfo/sysinfo.py.in
+++ b/src/bin/sysinfo/sysinfo.py.in
@@ -85,7 +85,8 @@ def main():
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)
diff --git a/src/lib/python/isc/sysinfo/sysinfo.py b/src/lib/python/isc/sysinfo/sysinfo.py
index 2f4b84e..fd457ea 100644
--- a/src/lib/python/isc/sysinfo/sysinfo.py
+++ b/src/lib/python/isc/sysinfo/sysinfo.py
@@ -22,6 +22,7 @@ import subprocess
import os.path
import platform
import time
+from datetime import timedelta
class SysInfo:
def __init__(self):
@@ -93,6 +94,26 @@ class SysInfo:
"""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
diff --git a/src/lib/python/isc/sysinfo/tests/sysinfo_test.py b/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
index c71422a..f776053 100644
--- a/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
+++ b/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
@@ -49,7 +49,7 @@ class MyLinuxFile:
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:
@@ -255,6 +255,7 @@ class SysInfoTest(unittest.TestCase):
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())
@@ -270,7 +271,11 @@ class SysInfoTest(unittest.TestCase):
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
@@ -284,6 +289,8 @@ class SysInfoTest(unittest.TestCase):
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())
@@ -315,7 +322,10 @@ class SysInfoTest(unittest.TestCase):
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())
More information about the bind10-changes
mailing list