adding more tests, and cleaning up the mock setup

Signed-off-by: Tomaz Muraus <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/c38971ee
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c38971ee
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c38971ee

Branch: refs/heads/trunk
Commit: c38971eed9cb200ba9e74ed964f822d506b880bb
Parents: f59c392
Author: Rene Kjellerup <[email protected]>
Authored: Fri Jul 8 17:07:14 2016 -0700
Committer: Tomaz Muraus <[email protected]>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 182 +++++++++++-----------
 1 file changed, 89 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/c38971ee/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py 
b/libcloud/test/compute/test_libvirt_driver.py
index 2993ebd..36dd851 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -16,6 +16,8 @@
 import sys
 
 from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
+from libcloud.compute.base import NodeState
+from libcloud.compute.types import Provider
 
 
 from libcloud.test import unittest
@@ -26,11 +28,19 @@ class virConnect:
     A stub/Mock implementation of the libvirt.virConnect class returned by
     the libvirt.openX calles
     """
-    def stub(self, *args, **kwargs):
+    def __stub(self, *args, **kwargs):
         return 0
 
+    def __yes(self, *args, **kwargs):
+        return True
+
+    def __ary(self, *args, **kwargs):
+        return []
+
     def __init__(self):
-        stub = self.stub
+        stub = self.__stub
+        yes = self.__yes
+        ary = self.__ary
         fnt = [
             '_dispatchCloseCallback',
             '_dispatchDomainEventAgentLifecycleCallback',
@@ -65,103 +75,66 @@ class virConnect:
             'domainXMLFromNative', 'domainXMLToNative',
             'findStoragePoolSources', 'getAllDomainStats', 'getCPUMap',
             'getCPUModelNames', 'getCPUStats', 'getCapabilities',
-            'getCellsFreeMemory',
-            'getDomainCapabilities',
-            'getFreeMemory',
-            'getFreePages',
-            'getHostname',
-            'getInfo',
-            'getLibVersion',
-            'getMaxVcpus',
-            'getMemoryParameters',
-            'getMemoryStats',
-            'getSecurityModel',
-            'getSysinfo',
-            'getType',
-            'getURI',
-            'getVersion',
-            'interfaceDefineXML',
-            'interfaceLookupByMACString',
-            'interfaceLookupByName',
-            'isAlive',
-            'isEncrypted',
-            'isSecure',
-            'listAllDevices',
-            'listAllDomains',
-            'listAllInterfaces',
-            'listAllNWFilters',
-            'listAllNetworks',
-            'listAllSecrets',
-            'listAllStoragePools',
-            'listDefinedDomains',
-            'listDefinedInterfaces',
-            'listDefinedNetworks',
-            'listDefinedStoragePools',
-            'listDevices',
-            'listDomainsID',
-            'listInterfaces',
-            'listNWFilters',
-            'listNetworks',
-            'listSecrets',
-            'listStoragePools',
-            'lookupByID',
-            'lookupByName',
-            'lookupByUUID',
-            'lookupByUUIDString',
-            'networkCreateXML',
-            'networkDefineXML',
-            'networkEventDeregisterAny',
-            'networkEventRegisterAny',
-            'networkLookupByName',
-            'networkLookupByUUID',
-            'networkLookupByUUIDString',
-            'newStream',
-            'nodeDeviceCreateXML',
-            'nodeDeviceLookupByName',
-            'nodeDeviceLookupSCSIHostByWWN',
-            'numOfDefinedDomains',
-            'numOfDefinedInterfaces',
-            'numOfDefinedNetworks',
-            'numOfDefinedStoragePools',
-            'numOfDevices',
-            'numOfDomains',
-            'numOfInterfaces',
-            'numOfNWFilters',
-            'numOfNetworks',
-            'numOfSecrets',
-            'numOfStoragePools',
-            'nwfilterDefineXML',
-            'nwfilterLookupByName',
-            'nwfilterLookupByUUID',
-            'nwfilterLookupByUUIDString',
-            'registerCloseCallback',
-            'restore',
-            'restoreFlags',
-            'saveImageDefineXML',
-            'saveImageGetXMLDesc',
-            'secretDefineXML',
-            'secretLookupByUUID',
-            'secretLookupByUUIDString',
-            'secretLookupByUsage',
-            'setKeepAlive',
-            'setMemoryParameters',
-            'storagePoolCreateXML',
-            'storagePoolDefineXML',
-            'storagePoolLookupByName',
-            'storagePoolLookupByUUID',
-            'storagePoolLookupByUUIDString',
-            'storageVolLookupByKey',
-            'storageVolLookupByPath',
-            'suspendForDuration',
-            'unregisterCloseCallback',
-            'virConnGetLastError',
+            'getCellsFreeMemory', 'getDomainCapabilities', 'getFreeMemory',
+            'getFreePages', 'getHostname', 'getInfo', 'getLibVersion',
+            'getMaxVcpus', 'getMemoryParameters', 'getMemoryStats',
+            'getSecurityModel', 'getSysinfo', 'getType', 'getURI',
+            'getVersion', 'interfaceDefineXML', 'interfaceLookupByMACString',
+            'interfaceLookupByName', 'isAlive', 'isEncrypted', 'isSecure',
+            'listAllDevices', 'listAllDomains', 'listAllInterfaces',
+            'listAllNWFilters', 'listAllNetworks', 'listAllSecrets',
+            'listAllStoragePools', 'listDefinedDomains',
+            'listDefinedInterfaces', 'listDefinedNetworks',
+            'listDefinedStoragePools', 'listDevices', 'listDomainsID',
+            'listInterfaces', 'listNWFilters', 'listNetworks', 'listSecrets',
+            'listStoragePools', 'lookupByID', 'lookupByName', 'lookupByUUID',
+            'lookupByUUIDString', 'networkCreateXML', 'networkDefineXML',
+            'networkEventDeregisterAny', 'networkEventRegisterAny',
+            'networkLookupByName', 'networkLookupByUUID',
+            'networkLookupByUUIDString', 'newStream', 'nodeDeviceCreateXML',
+            'nodeDeviceLookupByName', 'nodeDeviceLookupSCSIHostByWWN',
+            'numOfDefinedDomains', 'numOfDefinedInterfaces',
+            'numOfDefinedNetworks', 'numOfDefinedStoragePools', 'numOfDevices',
+            'numOfDomains', 'numOfInterfaces', 'numOfNWFilters',
+            'numOfNetworks', 'numOfSecrets', 'numOfStoragePools',
+            'nwfilterDefineXML', 'nwfilterLookupByName',
+            'nwfilterLookupByUUID', 'nwfilterLookupByUUIDString',
+            'registerCloseCallback', 'restore', 'restoreFlags',
+            'saveImageDefineXML', 'saveImageGetXMLDesc', 'secretDefineXML',
+            'secretLookupByUUID', 'secretLookupByUUIDString',
+            'secretLookupByUsage', 'setKeepAlive', 'setMemoryParameters',
+            'storagePoolCreateXML', 'storagePoolDefineXML',
+            'storagePoolLookupByName', 'storagePoolLookupByUUID',
+            'storagePoolLookupByUUIDString', 'storageVolLookupByKey',
+            'storageVolLookupByPath', 'suspendForDuration',
+            'unregisterCloseCallback', 'virConnGetLastError',
             'virConnResetLastError'
         ]
         for f in fnt:
-            self.__dict__[f] = stub
+            if f.startswith('is'):
+                self.__dict__[f] = yes
+            elif f.startswith('list'):
+                self.__dict__[f] = ary
+            else:
+                self.__dict__[f] = stub
 
 
 class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase):
+    type = Provider.LIBVIRT
+    name = 'Libvirt'
+    website = 'http://libvirt.org/'
+
+    NODE_STATE_MAP = {
+        0: NodeState.TERMINATED,  # no state
+        1: NodeState.RUNNING,  # domain is running
+        2: NodeState.PENDING,  # domain is blocked on resource
+        3: NodeState.TERMINATED,  # domain is paused by user
+        4: NodeState.TERMINATED,  # domain is being shut down
+        5: NodeState.TERMINATED,  # domain is shut off
+        6: NodeState.UNKNOWN,  # domain is crashed
+        7: NodeState.UNKNOWN,  # domain is suspended by guest power management
+    }
+
     def __init__(self, argv=None):
         unittest.TestCase.__init__(self, argv)
         self._uri = 'qemu:///system'
@@ -195,5 +168,28 @@ class LibvirtNodeDriverTestCase(LibvirtNodeDriver, 
unittest.TestCase):
         arp_table = self._parse_ip_table_neigh(arp_output_str)
         self._assert_arp_table(arp_table)
 
+    def test_bad_map(self):
+        arp_output_str = """1.2.10.80 dev br0  52:54:00:bc:f9:6c STALE
+1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
+1.2.10.97 dev br0 lladdr
+1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE
+"""
+        arp_table = self._parse_ip_table_neigh(arp_output_str)
+        # we should at least get the correctly formatted lines
+        self.assertEqual(len(arp_table), 2)
+        arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0
+? (1.2.10.33) at 52:54:00:04:89:51 [ether] on br0
+? (1.2.10.97) at 52:54:00:c6:40:ec [ether] on br0
+? (1.2.10.40) at 52:54:00:77:1c:83 [ether] on br0
+"""
+        arp_table = self._parse_ip_table_neigh(arp_output_str)
+        # nothing should match if the wrong output is sent
+        self.assertEqual(len(arp_table), 0)
+
+    def test_list_nodes(self):
+        nodes = self.list_nodes()
+        self.assertEqual(type([]), type(nodes))
+        self.assertEqual(len(nodes), 0)
+
 if __name__ == '__main__':
     sys.exit(unittest.main())

Reply via email to