Parcourir la source

[2297] simply use timedelta.str() for update_desc().

some of the corresponding tests were just removed because the detailed
behavior does nto matter much any more, and in this case there can be
margin errors.
JINMEI Tatuya il y a 12 ans
Parent
commit
f48cb09795

+ 3 - 11
src/lib/python/isc/sysinfo/sysinfo.py

@@ -97,22 +97,14 @@ class SysInfo:
     def get_uptime_desc(self):
     def get_uptime_desc(self):
         """Returns the uptime in human readable form.
         """Returns the uptime in human readable form.
 
 
-        Specifically, the format is '[DD day[s], ]hh:mm'.
-        It returns None if _uptime is None.
+        The format is the result of str() method of the standard library
+        datetime.timedelta class.  It returns None if _uptime is None.
 
 
         """
         """
         if self._uptime is None:
         if self._uptime is None:
             return 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
+        return str(timedelta(seconds=self._uptime))
 
 
     def get_loadavg(self):
     def get_loadavg(self):
         """Returns the load average as 3 floating point values in an array."""
         """Returns the load average as 3 floating point values in an array."""

+ 2 - 10
src/lib/python/isc/sysinfo/tests/sysinfo_test.py

@@ -294,7 +294,7 @@ class SysInfoTest(unittest.TestCase):
         self.assertFalse(s.get_platform_is_smp())
         self.assertFalse(s.get_platform_is_smp())
         self.assertEqual(131072, s.get_uptime())
         self.assertEqual(131072, s.get_uptime())
         # We check that we do NOT add 's' to 'day' (because it's singular):
         # We check that we do NOT add 's' to 'day' (because it's singular):
-        self.assertEqual('1 day, 12:24', s.get_uptime_desc())
+        self.assertEqual('1 day, 12:24:32', s.get_uptime_desc())
         self.assertEqual(None, s.get_loadavg())
         self.assertEqual(None, s.get_loadavg())
         self.assertEqual(None, s.get_mem_total())
         self.assertEqual(None, s.get_mem_total())
         self.assertEqual(None, s.get_mem_free())
         self.assertEqual(None, s.get_mem_free())
@@ -329,7 +329,7 @@ class SysInfoTest(unittest.TestCase):
         self.assertEqual(172801, s.get_uptime())
         self.assertEqual(172801, s.get_uptime())
         # We check that we add 's' to 'day', and that the mm part has an
         # We check that we add 's' to 'day', and that the mm part has an
         # additional 0, i.e., not '0:0' but '0:00':
         # additional 0, i.e., not '0:0' but '0:00':
-        self.assertEqual('2 days, 0:00', s.get_uptime_desc())
+        self.assertEqual('2 days, 0:00:01', s.get_uptime_desc())
         self.assertEqual((0.1, 0.2, 0.3), s.get_loadavg())
         self.assertEqual((0.1, 0.2, 0.3), s.get_loadavg())
         self.assertEqual(3157884928, s.get_mem_total())
         self.assertEqual(3157884928, s.get_mem_total())
         self.assertEqual(891383808, s.get_mem_free())
         self.assertEqual(891383808, s.get_mem_free())
@@ -435,14 +435,6 @@ class SysInfoTest(unittest.TestCase):
         self.assertEqual(1037533184, s.get_mem_swap_total())
         self.assertEqual(1037533184, s.get_mem_swap_total())
         self.assertEqual(1037533184, s.get_mem_swap_free())
         self.assertEqual(1037533184, s.get_mem_swap_free())
 
 
-        # One more untested case so far: get_uptime_desc() should omit the
-        # "days" field.
-        faked_process_output['boottime-sysctl'] = bytes(
-            '{ sec = ' + str(int(time.time() - 4200)) +
-                     ', usec = 0 }\n', 'utf-8')
-        s = SysInfoFromFactory()
-        self.assertEqual('1:10', s.get_uptime_desc())
-
     def test_sysinfo_osx(self):
     def test_sysinfo_osx(self):
         """Tests the OS X implementation of SysInfo. Note that this
         """Tests the OS X implementation of SysInfo. Note that this
         tests deep into the implementation, and not just the
         tests deep into the implementation, and not just the