# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1215715693 25200
# Node ID c09b0a978a6621139eb355079994ba3eb2847779
# Parent 502dddef8c34eeb85b571df0ee97f0ee0676861b
[TEST] Fix potiential false positive in AC 01.
This test needs to verify enum of AC returns the same number of instances as the number of
instances returned by enum of MemoryPool + ProcessorPool + DiskPool + NetworkPool.
Also, cleaned up the logic to verify that the ResourceType and the InstanceIDs of the AC
instances match the Pool instances they're describing.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 502dddef8c34 -r c09b0a978a66
suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py
--- a/suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py Tue Jul 01 14:12:48
2008 -0700
+++ b/suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py Thu Jul 10 11:48:13
2008 -0700
@@ -22,6 +22,7 @@
#
import sys
+from VirtLib.live import virsh_version
from XenKvmLib import enumclass
from CimTest.Globals import do_main
from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, platform_sup
@@ -32,48 +33,52 @@
def main():
options = main.options
+ cn = 'AllocationCapabilities'
+
pools = {}
pt = ['MemoryPool', 'ProcessorPool', 'DiskPool',
'NetworkPool']
try:
- key_list = ["InstanceID"]
- ac = enumclass.enumerate(options.ip,
- "AllocationCapabilities",
- key_list,
- options.virt)
- pools['MemoryPool'] = enumclass.enumerate(options.ip,
- "MemoryPool",
- key_list,
- options.virt)
- pools['ProcessorPool'] = enumclass.enumerate(options.ip,
- "ProcessorPool",
- key_list,
- options.virt)
- pools['DiskPool'] = enumclass.enumerate(options.ip,
- "DiskPool",
- key_list,
- options.virt)
- pools['NetworkPool'] = enumclass.enumerate(options.ip,
- "NetworkPool",
- key_list,
- options.virt)
- except Exception:
- logger.error(CIM_ERROR_ENUMERATE, '%s_AllocationCapabilities' %
options.virt)
+ key = ["InstanceID"]
+ ac = enumclass.enumerate(options.ip, cn, key, options.virt)
+
+ for p in pt:
+ enum_list = enumclass.enumerate(options.ip, p, key, options.virt)
+
+ if len(enum_list) < 1:
+ # If libvirt version >= 0.4.1, libvirt-cim uses libvirt's
+ # disk pool support instead of creating its own diskpool.
+ # In this case, it's possible for a disk pool to not exist.
+ libvirt_version = virsh_version(options.ip, options.virt)
+ if p == "DiskPool" and libvirt_version >= '0.4.1':
+ continue
+
+ logger.error("%s did not return any instances" % p)
+ return FAIL
+
+ for pool in enum_list:
+ pools[pool.InstanceID] = pool
+
+ except Exception, details:
+ logger.error(CIM_ERROR_ENUMERATE, cn)
+ logger.error(details)
return FAIL
- acset = set([(x.InstanceID, x.ResourceType) for x in ac])
- poolset = set()
- for pl in pools.values():
- for x in pl:
- poolset.add((x.InstanceID, x.ResourceType))
+ if len(ac) != len(pools):
+ logger.error("%s returned %s instances, expected %s" % (cn, len(ac),
+ len(pools)))
+ return FAIL
- if len(acset) != len(poolset):
- logger.error(
- 'AllocationCapabilities return %i instances, excepted %i'
- % (ac_size, pool_size))
- return FAIL
- zeroset = acset - poolset
- if len(zeroset) != 0:
- logger.error('AC is inconsistent with pools')
+ try:
+ for inst in ac:
+ id = inst.InstanceID
+ if pools[id].ResourceType != inst.ResourceType:
+ logger.error("%s ResourceType %s, Pool ResourceType %s" % (cn,
+ inst.ResourceType, pools[id].ResourceType))
+ return FAIL
+
+ except Exception, details:
+ logger.error("%s returned instance with unexpected InstanceID %s" %
(cn,
+ details))
return FAIL
return PASS