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

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Wed Jul 23 10:13:01 UTC 2008


+1 for me.


Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1216742122 25200
> # Node ID 28e2e11309e79c9285a122ec1f387dc1f7511e7c
> # Parent  3703b7be5a107c67e901546978e974546b3d5562
> [TEST] #3 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.
>
> Updates from 1 to 2:
>   -Create a disk pool and network pool to ensure there is an instance for each pool type.
>   -Add comment explaining the purpose of the test.
>
> Updates from 2 to 3:
>   -Change if len(pools) < 1 to if len(pools) < 4
>   -Add log message if this if statement fails.
>
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
>
> diff -r 3703b7be5a10 -r 28e2e11309e7 suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py
> --- a/suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py	Wed Jul 16 07:23:32 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/AllocationCapabilities/01_enum.py	Tue Jul 22 08:55:22 2008 -0700
> @@ -20,63 +20,98 @@
>  # License along with this library; if not, write to the Free Software
>  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
>  #
> +# This test verifies the enum of AC returns the same number of instances as 
> +# the number of instances returned by enum of:
> +#                          MemoryPool + ProcessorPool + DiskPool + NetworkPool. 
> +#
>
>  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
>  from CimTest.ReturnCodes import PASS, FAIL
> +from XenKvmLib.common_util import cleanup_restore, create_diskpool_conf, \
> +                                  create_netpool_conf, destroy_netpool
>
>  sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
> +
> +def enum_pools_and_ac(ip, virt, cn):
> +    pools = {}
> +    ac = []
> +
> +    pt = ['MemoryPool', 'ProcessorPool', 'DiskPool', 'NetworkPool']
> +
> +    try:
> +        key = ["InstanceID"]
> +        ac = enumclass.enumerate(ip, cn, key, virt)
> +
> +        for p in pt:
> +            enum_list = enumclass.enumerate(ip, p, key, virt)
> +
> +            if len(enum_list) < 1:
> +                logger.error("%s did not return any instances" % p)
> +                return pools, ac 
> +
> +            for pool in enum_list:
> +                pools[pool.InstanceID] = pool 
> +
> +    except Exception, details:
> +        logger.error(CIM_ERROR_ENUMERATE, cn)
> +        logger.error(details)
> +        return pools, ac 
> +
> +    if len(ac) != len(pools):
> +        logger.error("%s returned %s instances, expected %s" % (cn, len(ac), 
> +                     len(pools)))
> +    return pools, ac 
> +
> +def compare_pool_to_ac(ac, pools, cn):
> +    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
> +
>  @do_main(sup_types)
>  def main():
>      options = main.options
>
> -    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)
> -        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))
> +    cn = 'AllocationCapabilities'
>
> -    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')
> +    status, diskid = create_diskpool_conf(options.ip, options.virt)
> +    if status != PASS:
> +        cleanup_restore(options.ip, options.virt)
> +        return FAIL 
> +
> +    status, test_network = create_netpool_conf(options.ip, options.virt)
> +    if status != PASS:
> +        cleanup_restore(options.ip, options.virt)
> +        destroy_netpool(options.ip, options.virt, test_network)
> +        return FAIL 
> +   
> +    pools, ac = enum_pools_and_ac(options.ip, options.virt, cn)
> +    if len(pools) < 4:
> +        logger.error("Only %d pools returned, expected at least 4" % len(pools))
> +        cleanup_restore(options.ip, options.virt)
> +        destroy_netpool(options.ip, options.virt, test_network)
>          return FAIL
>
> -    return PASS
> +    status = compare_pool_to_ac(ac, pools, cn)
> +
> +    cleanup_restore(options.ip, options.virt)
> +    destroy_netpool(options.ip, options.virt, test_network)
> +
> +    return status 
>
>  if __name__ == "__main__":
>      sys.exit(main())
>
> _______________________________________________
> 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