Kaitlin Rupert wrote:
# 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
The tc will fail in the following conditions:
1) if p == "DiskPool" and libvirt_version < '0.4.1' and when there is
no
diskpool on the machines.
2) Also, when the NetworkPool does not exist OR when the existing
NetworkPool are in inactive states.
We can improve the test case by making sure we have atleast one of each
type of the pool and then verify that the AC and the various pools
return the similar results.
Also, Can we include the comment that you have in the patch in the test
case as it does not have any comments as of now and also, it will
provide as a reference for maintenance of the tc.
+
+ 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
_______________________________________________
Libvirt-cim mailing list
Libvirt-cim(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim