replaced inheited class with autospec'ed mock 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/662e3b33 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/662e3b33 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/662e3b33 Branch: refs/heads/trunk Commit: 662e3b3308a681c30a0253e8212605bcc1930951 Parents: c38971e Author: Rene Kjellerup <[email protected]> Authored: Tue Jul 12 12:07:04 2016 -0700 Committer: Tomaz Muraus <[email protected]> Committed: Wed Jul 13 11:31:20 2016 +0200 ---------------------------------------------------------------------- libcloud/test/compute/test_libvirt_driver.py | 175 ++++------------------ 1 file changed, 28 insertions(+), 147 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/662e3b33/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 36dd851..9bc46ce 100644 --- a/libcloud/test/compute/test_libvirt_driver.py +++ b/libcloud/test/compute/test_libvirt_driver.py @@ -16,129 +16,26 @@ 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 +from unittest import mock -class virConnect: - """ - A stub/Mock implementation of the libvirt.virConnect class returned by - the libvirt.openX calles - """ - 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 - yes = self.__yes - ary = self.__ary - fnt = [ - '_dispatchCloseCallback', - '_dispatchDomainEventAgentLifecycleCallback', - '_dispatchDomainEventBalloonChangeCallback', - '_dispatchDomainEventBlockJobCallback', - '_dispatchDomainEventCallbacks', - '_dispatchDomainEventDeviceAddedCallback', - '_dispatchDomainEventDeviceRemovalFailedCallback', - '_dispatchDomainEventDeviceRemovedCallback', - '_dispatchDomainEventDiskChangeCallback', - '_dispatchDomainEventGenericCallback', - '_dispatchDomainEventGraphicsCallback', - '_dispatchDomainEventIOErrorCallback', - '_dispatchDomainEventIOErrorReasonCallback', - '_dispatchDomainEventJobCompletedCallback', - '_dispatchDomainEventLifecycleCallback', - '_dispatchDomainEventMigrationIterationCallback', - '_dispatchDomainEventPMSuspendCallback', - '_dispatchDomainEventPMSuspendDiskCallback', - '_dispatchDomainEventPMWakeupCallback', - '_dispatchDomainEventRTCChangeCallback', - '_dispatchDomainEventTrayChangeCallback', - '_dispatchDomainEventTunableCallback', - '_dispatchDomainEventWatchdogCallback', - '_dispatchNetworkEventLifecycleCallback', - '_o', 'allocPages', 'baselineCPU', 'c_pointer', 'changeBegin', - 'changeCommit', 'changeRollback', 'close', 'compareCPU', - 'createLinux', 'createXML', 'createXMLWithFiles', 'defineXML', - 'defineXMLFlags', 'domainEventDeregister', - 'domainEventDeregisterAny', 'domainEventRegister', - 'domainEventRegisterAny', 'domainListGetStats', - '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', - 'virConnResetLastError' - ] - for f in fnt: - 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' - self.connection = virConnect() [email protected]('libcloud.compute.drivers.libvirt_driver.libvirt', autospec=True) +class LibvirtNodeDriverTestCase(unittest.TestCase): + 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""" + ip_output_str = """1.2.10.80 dev br0 lladdr 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 52:54:00:c6:40:ec DELAY +1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE""" + bad_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""" def _assert_arp_table(self, arp_table): self.assertIn('52:54:00:bc:f9:6c', arp_table) @@ -150,44 +47,28 @@ class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase): self.assertIn('1.2.10.97', arp_table['52:54:00:c6:40:ec']) self.assertIn('1.2.10.40', arp_table['52:54:00:77:1c:83']) - def test_arp_map(self): - 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_arp(arp_output_str) + def test_arp_map(self, *args, **keywargs): + driver = LibvirtNodeDriver('') + arp_table = driver._parse_ip_table_arp(self.arp_output_str) self._assert_arp_table(arp_table) - def test_ip_map(self): - arp_output_str = """1.2.10.80 dev br0 lladdr 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 52:54:00:c6:40:ec DELAY -1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE -""" - arp_table = self._parse_ip_table_neigh(arp_output_str) + def test_ip_map(self, *args, **keywargs): + driver = LibvirtNodeDriver('') + arp_table = driver._parse_ip_table_neigh(self.ip_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) + def test_bad_map(self, *args, **keywargs): + driver = LibvirtNodeDriver('') + arp_table = driver._parse_ip_table_neigh(self.bad_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) + arp_table = driver._parse_ip_table_neigh(self.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() + def test_list_nodes(self, *args, **keywargs): + driver = LibvirtNodeDriver('') + nodes = driver.list_nodes() self.assertEqual(type([]), type(nodes)) self.assertEqual(len(nodes), 0)
