You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2016/07/13 09:44:19 UTC
[05/14] libcloud git commit: adding more tests,
and cleaning up the mock setup
adding more tests, and cleaning up the mock setup
Signed-off-by: Tomaz Muraus <to...@tomaz.me>
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 <rk...@touchcommerce.com>
Authored: Fri Jul 8 17:07:14 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
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())