[Libvirt-cim] [PATCH] [TEST] Fix potiential false positive in AC 01

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Thu Jul 17 09:31:44 UTC 2008



Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at 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 at 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 at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   




More information about the Libvirt-cim mailing list