[Libvirt-cim] [PATCH] [TEST][Resubmitting: Addition] : Adding 02_reverse.py tc to verify ReferencedProfile

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Thu Apr 3 12:52:34 UTC 2008


Hi Dan,

Please see my replies inline.

Thanks and Regards,
Deepti.

Dan Smith wrote:
> DK> +def verify_fields(assoc_info, prof_info):
> DK> +    if assoc_info['InstanceID'] != prof_info['InstanceID']:
> DK> +        print_field_error('InstanceID', assoc_info['InstanceID'], prof_info['InstanceID']) 
> DK> +        return FAIL
> DK> +    if assoc_info['RegisteredOrganization'] != prof_info['RegisteredOrganization']:
> DK> +        print_field_error('RegisteredOrganization', assoc_info['RegisteredOrganization'], \
> DK> +                                                    prof_info['RegisteredOrganization']) 
> DK> +        return FAIL
> DK> +    if assoc_info['RegisteredName'] != prof_info['RegisteredName']:
> DK> +        print_field_error('RegisteredName', assoc_info['RegisteredName'], \
> DK> +                                           prof_info['RegisteredName']) 
> DK> +        return FAIL
> DK> +    if assoc_info['RegisteredVersion'] != prof_info['RegisteredVersion']:
> DK> +        print_field_error('RegisteredVersion', assoc_info['RegisteredVersion'], \
> DK> +                                               prof_info['RegisteredVersion']) 
> DK> +        return FAIL
> DK> +    return PASS
>
> Same comment as before for this as well.
>   
Changed this.
> DK> +def verify_ref_assoc_info(assoc_info):
> DK> +    status = PASS
> DK> +    vs_prof, gen_dev_prof, mem_res_prof, vs_mig_prof = init_list() 
> DK> +    for i in range(len(assoc_info)):
>
> Please use the following syntax for for loops (unless you really need
> the index):
>
>   for i in assoc_info:
>   
Done.
> DK> +        instid = assoc_info[i]['InstanceID']
> DK> +        if instid.find("DSP1045") >=0 :
> DK> +            status = verify_fields(assoc_info[i], mem_res_prof) 
> DK> +        elif instid.find("DSP1057") >=0 :
> DK> +            status = verify_fields(assoc_info[i], vs_prof)
> DK> +        elif instid.find("DSP1059") >=0 :
> DK> +            status = verify_fields(assoc_info[i], gen_dev_prof)
> DK> +        elif instid.find("DSP1081") >=0 :
> DK> +            status = verify_fields(assoc_info[i], vs_mig_prof)
> DK> +        else:
> DK> +            status = FAIL
> DK> +        if status != PASS:
> DK> +            break
> DK> +    return status
>
> In the interest of making this more extensible in the future, why not
> embed the information you need in the profile information dictionary
> in some way to avoid this sort of static structure?  Assuming the dict
> has a "profnum" field:
>
>   
Done.
>   profiles = init_list()
>   for i in assoc_info:
>       status = None
>       for profile in profiles:
>           if profile["profnum"] in i['InstanceID']:
>               status = verify_fields(i, profile)
>               break
>       if status == FAIL:
>           break
>
> You may need to rearrange your profile dict a little to make the key
> properties distinct from other bits, but the result will be that when
> we add a new supported profile, you can just add an entry to the
> top-level list of profiles and not have to modify lots of other bits
> in the code.
>
> Most of your other tests can probably be modified in this way as well,
> which leads me to ask:  Why not define a single set of profiles in a
> common file and import them?  That way, all of the profile tests will
> work against a single set of profiles, which I think makes a lot more
> sense.
>   
Done.
>       
> DK> +def get_refprof_verify_info():
> DK> +    assoc_info = []
> DK> +    status = PASS
> DK> +    assoc_name =  get_typed_class(virt, 'ReferencedProfile')
> DK> +    instid = "CIM:DSP1042-SystemVirtualization-1.0.0"
> DK> +    try:
> DK> +        assoc_info = Associators(server, assoc_name, reg_classname, virt, InstanceID = instid, 
> DK> +                                                            CreationClassName = reg_classname)
> DK> +        if len(assoc_info) < 4:
> DK> +            logger.error("%s returned %i %s objects, expected atleast 4",
> DK> +                                     assoc_name, len(assoc_info), 'Profile')
> DK> +            status = FAIL
> DK> +
> DK> +        if status != PASS:
> DK> +            return status 
> DK> +        status = verify_ref_assoc_info(assoc_info)
> DK> +    except Exception, detail:
> DK> +        logger.error(CIM_ERROR_ASSOCIATORS, assoc_name)
> DK> +        logger.error("Exception: %s", detail)
> DK> +        status = FAIL
> DK> +    return status
>
> Perhaps you can explain the need for the repeated special case
> distinction for this profile?
>
>   
Merged in this with the other tc.
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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