[Libvirt-cim] [PATCH] [TEST] Add new test to verify enum of DiskRASD to have EmulatedType=0 for Disk

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Thu Dec 18 01:17:56 UTC 2008


> +SUPPORTED_TYPES = ['Xen', 'KVM', 'LXC']
> +default_dom = 'test_domain'
> +libvirt_em_type_changeset = 737
> +
> + at do_main(SUPPORTED_TYPES)
> +def main():
> +    options = main.options
> +    curr_cim_rev, changeset = get_provider_version(options.virt, options.ip)
> +    if curr_cim_rev >= libvirt_em_type_changeset:

Instead, you can do:

if curr_cim_rev < libvirt_em_type_changeset:
     return SKIP

This way, you don't have to indent the whole body of the test.  Also, 
right now, the test returns a PASS if the rev is less than 737.  It 
should return a SKIP since the test body isn't executed.


> +        status = create_using_definesystem(default_dom, options.ip, emu_type=0, 
> +                                           virt=options.virt)

Instead of using create_using_definesystem(), use cim_define() - 
create_using_definesystem() really should be removed at some point as 
cim_define() is a better interface.

> +
> +        if status != PASS:
> +            logger.error("Failed to call DefineSystem()")
> +            return FAIL
> +    
> +        drasd= get_typed_class(options.virt, 'DiskResourceAllocationSettingData')
> +
> +        try:
> +            drasd_list = enumclass.EnumInstances(options.ip, drasd, ret_cim_inst=True)
> +            if len(drasd_list) < 1:
> +                logger.error("%s returned %i instances, excepted at least 1.",
> +                             drasd, len(drasd_list))

If you do an enum here, you can't be sure the first RASD in the list is 
the RASD that corresponds to the guest (because there might be more than 
one guest defined on the system).

You'll need to loop through the RASD list and find the corresponding 
RASD.  You can use the parse_instance_id() to extract the guest name for 
the RASD InstanceID..

If you don't find the corresponding RASD, return an error

> +                return FAIL
> +        except Exception, detail:
> +            logger.error(CIM_ERROR_ENUMERATE, drasd)
> +            logger.error("Exception: %s", detail)
> +            return FAIL
> +

You could use exp_emu_type = 0

> +        if drasd_list[0]['EmulatedType'] != 0:
> +            logger.error("%s Mismatch", 'EmulatedType')

Instead, you can format this as "EmulatedType Mismatch" since its a 
static string.  However, the following would be more descriptive:

logger.error("EmulatedType Mismatch: got %d, expected 
%d",drasd_list[0]['EmulatedType'], exp_emu_type)

> +            return FAIL 
> +
> +
> +        undefine_test_domain(default_dom, options.ip, 
> +                             virt=options.virt)
> +
> +        return status
> +

You can test both EmulationType = 0 and EmulationType = 1 in the same test.

Have the main body of the test be a loop, something like the following:

emu_types = [0, 1]

for exp_emu_type in emu_types:
   #Define guest with exp_emu_type set

   #Enum DiskRASDs and find the instance that corresponds to the guest

   #Verify the EmulationType equals the exp_emu_type

   #Undefine the guest


-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list