BIND 10 trac2121, updated. 5255dd6b43a8469d9614ff86adb38dee3b8d630b [2121] Fix member variable names

BIND 10 source code commits bind10-changes at lists.isc.org
Tue Jul 10 05:56:31 UTC 2012


The branch, trac2121 has been updated
       via  5255dd6b43a8469d9614ff86adb38dee3b8d630b (commit)
       via  b1507181e9176e068e58dc863395870f562c5c36 (commit)
       via  42674a0354067c011d2c8915ff71d8ccf9a15340 (commit)
       via  90792ad4ddb26af360ca65a690020d07c21d2d20 (commit)
      from  d4748711299a76785c434dacbab8e8445cd3b4da (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 5255dd6b43a8469d9614ff86adb38dee3b8d630b
Author: Mukund Sivaraman <muks at isc.org>
Date:   Tue Jul 10 11:25:26 2012 +0530

    [2121] Fix member variable names

commit b1507181e9176e068e58dc863395870f562c5c36
Author: Mukund Sivaraman <muks at isc.org>
Date:   Tue Jul 10 11:25:03 2012 +0530

    [2121] Strip output of hostname so it doesn't contain newlines

commit 42674a0354067c011d2c8915ff71d8ccf9a15340
Author: Mukund Sivaraman <muks at isc.org>
Date:   Tue Jul 10 11:24:23 2012 +0530

    [2121] Add testcases for OpenBSD implementation of SysInfo

commit 90792ad4ddb26af360ca65a690020d07c21d2d20
Author: Mukund Sivaraman <muks at isc.org>
Date:   Tue Jul 10 10:41:49 2012 +0530

    [2121] Rename class

-----------------------------------------------------------------------

Summary of changes:
 src/lib/python/isc/sysinfo/sysinfo.py            |    6 +-
 src/lib/python/isc/sysinfo/tests/sysinfo_test.py |   86 +++++++++++++++++++++-
 2 files changed, 87 insertions(+), 5 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/python/isc/sysinfo/sysinfo.py b/src/lib/python/isc/sysinfo/sysinfo.py
index 11301f4..0695318 100644
--- a/src/lib/python/isc/sysinfo/sysinfo.py
+++ b/src/lib/python/isc/sysinfo/sysinfo.py
@@ -288,7 +288,7 @@ class SysInfoBSD(SysInfoPOSIX):
 
         try:
             s = subprocess.check_output(['hostname'])
-            self._hostname = s.decode('utf-8')
+            self._hostname = s.decode('utf-8').strip()
         except (subprocess.CalledProcessError, OSError):
             pass
 
@@ -345,8 +345,8 @@ class SysInfoOpenBSD(SysInfoBSD):
             l = s.decode('utf-8').strip()
             r = re.match('^total: (\d+) 1K-blocks allocated, (\d+) used, (\d+) available', l)
             if r:
-                self._swap_total = int(r.group(1).strip()) * 1024
-                self._swap_free = int(r.group(3).strip()) * 1024
+                self._mem_swap_total = int(r.group(1).strip()) * 1024
+                self._mem_swap_free = int(r.group(3).strip()) * 1024
         except (subprocess.CalledProcessError, OSError):
             pass
 
diff --git a/src/lib/python/isc/sysinfo/tests/sysinfo_test.py b/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
index 93985c7..4a7d3e8 100644
--- a/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
+++ b/src/lib/python/isc/sysinfo/tests/sysinfo_test.py
@@ -18,6 +18,7 @@ import os
 import unittest
 import platform
 import subprocess
+import time
 
 def _my_testcase_platform_system():
     return 'BIND10Testcase'
@@ -30,7 +31,7 @@ def _my_linux_os_sysconf(key):
         return 42
     assert False, 'Unhandled key'
 
-class MyFile:
+class MyLinuxFile:
     def __init__(self, filename):
         self._filename = filename
 
@@ -67,7 +68,7 @@ class MyFile:
         return
 
 def _my_linux_open(filename):
-    return MyFile(filename)
+    return MyLinuxFile(filename)
 
 def _my_linux_subprocess_check_output(command):
     assert type(command) == list, 'command argument is not a list'
@@ -86,6 +87,39 @@ def _my_linux_subprocess_check_output(command):
     else:
         assert False, 'Unhandled command'
 
+def _my_openbsd_platform_system():
+    return 'OpenBSD'
+
+def _my_openbsd_os_sysconf(key):
+    if key == 'SC_NPROCESSORS_CONF':
+        return 53
+    assert False, 'Unhandled key'
+
+def _my_openbsd_subprocess_check_output(command):
+    assert type(command) == list, 'command argument is not a list'
+    if command == ['hostname']:
+        return b'blowfish.example.com\n'
+    elif command == ['sysctl', '-n', 'kern.boottime']:
+        return bytes(str(int(time.time() - 76632)), 'utf-8')
+    elif command == ['sysctl', '-n', 'vm.loadavg']:
+        return b'0.7 0.9 0.8'
+    elif command == ['sysctl', '-n', 'hw.physmem']:
+        return b'543214321'
+    elif command == ['vmstat']:
+        return b' procs    memory       page                    disks    traps          cpu\n r b w    avm     fre  flt  re  pi  po  fr  sr wd0 cd0  int   sys   cs us sy id\n 0 0 0   121212  123456   47   0   0   0   0   0   2   0    2    80   14  0  1 99\n'
+    elif command == ['swapctl', '-s', '-k']:
+        return b'total: 553507 1K-blocks allocated, 2 used, 553505 available'
+    elif command == ['ifconfig']:
+        return b'qB2osV6vUOjqm3P/+tQ4d92xoYz8/U8P9v3KWRpNwlI=\n'
+    elif command == ['route', '-n', 'show']:
+        return b'XfizswwNA9NkXz6K36ZExpjV08Y5IXkHI8jjDSV+5Nc=\n'
+    elif command == ['netstat', '-s']:
+        return b'osuxbrcc1g9VgaF4yf3FrtfodrfATrbSnjhqhuQSAs8=\n'
+    elif command == ['netstat', '-an']:
+        return b'Z+w0lwa02/T+5+EIio84rrst/Dtizoz/aL9Im7J7ESA=\n'
+    else:
+        assert False, 'Unhandled command'
+
 class SysInfoTest(unittest.TestCase):
     def test_sysinfo(self):
         """Test that the various methods on SysInfo exist and return data."""
@@ -193,5 +227,53 @@ class SysInfoTest(unittest.TestCase):
         __builtins__.open = old_open
         subprocess.check_output = old_subprocess_check_output
 
+    def test_sysinfo_openbsd(self):
+        """Tests the OpenBSD implementation of SysInfo. Note that this
+        tests deep into the implementation, and not just the
+        interfaces."""
+
+        # Don't run this test on platform other than Openbsd as some
+        # system calls may not even be available.
+        osname = platform.system()
+        if osname != 'OpenBSD':
+            return
+
+        # Save and replace existing implementations of library functions
+        # with mock ones for testing.
+        old_platform_system = platform.system
+        platform.system = _my_openbsd_platform_system
+        old_os_sysconf = os.sysconf
+        os.sysconf = _my_openbsd_os_sysconf
+        old_subprocess_check_output = subprocess.check_output
+        subprocess.check_output = _my_openbsd_subprocess_check_output
+
+        s = SysInfoFromFactory()
+        self.assertEqual(53, s.get_num_processors())
+        self.assertEqual('blowfish.example.com', s.get_platform_hostname())
+        self.assertFalse(s.get_platform_is_smp())
+
+        self.assertLess(abs(76632 - s.get_uptime()), 4)
+        self.assertEqual([0.7, 0.9, 0.8], s.get_loadavg())
+        self.assertEqual(543214321, s.get_mem_total())
+        self.assertEqual(543214321 - (121212 * 1024), s.get_mem_free())
+        self.assertEqual(-1, s.get_mem_cached())
+        self.assertEqual(-1, s.get_mem_buffers())
+        self.assertEqual(566791168, s.get_mem_swap_total())
+        self.assertEqual(566789120, s.get_mem_swap_free())
+        self.assertRegexpMatches(s.get_platform_distro(), '^OpenBSD\s+.*')
+
+        # These test that the corresponding tools are being called (and
+        # no further processing is done on this data). Please see the
+        # implementation functions at the top of this file.
+        self.assertEqual('qB2osV6vUOjqm3P/+tQ4d92xoYz8/U8P9v3KWRpNwlI=\n', s.get_net_interfaces())
+        self.assertEqual('XfizswwNA9NkXz6K36ZExpjV08Y5IXkHI8jjDSV+5Nc=\n', s.get_net_routing_table())
+        self.assertEqual('osuxbrcc1g9VgaF4yf3FrtfodrfATrbSnjhqhuQSAs8=\n', s.get_net_stats())
+        self.assertEqual('Z+w0lwa02/T+5+EIio84rrst/Dtizoz/aL9Im7J7ESA=\n', s.get_net_connections())
+
+        # Restore original implementations.
+        platform.system = old_platform_system
+        os.sysconf = old_os_sysconf
+        subprocess.check_output = old_subprocess_check_output
+
 if __name__ == "__main__":
     unittest.main()



More information about the bind10-changes mailing list