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())
