[PATCH] [TEST] #4 Fix HostedService - 03_forward_errs.py to work with sblim base provider installed

# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1223272339 25200 # Node ID bdb5911993d5e56c6398a447b3e5eabc5d41f83d # Parent b710ecb26adf500caa6b801fdf10e4efbed3877e [TEST] #4 Fix HostedService - 03_forward_errs.py to work with sblim base provider installed Updates from 3 to 4: 1) Update the tc to verify the case when we pass Invalid CreationClassName 2) Verify the complete exception instead of just verifying part of it Signed-off-by: Guolian Yun <yunguol@cn.ibm.com> diff -r b710ecb26adf -r bdb5911993d5 suites/libvirt-cim/cimtest/HostedService/03_forward_errs.py --- a/suites/libvirt-cim/cimtest/HostedService/03_forward_errs.py Fri Oct 03 06:34:29 2008 -0700 +++ b/suites/libvirt-cim/cimtest/HostedService/03_forward_errs.py Sun Oct 05 22:52:19 2008 -0700 @@ -25,6 +25,7 @@ from pywbem.cim_obj import CIMInstanceNa from pywbem.cim_obj import CIMInstanceName from XenKvmLib import assoc from XenKvmLib import enumclass +from XenKvmLib.common_util import get_host_info from XenKvmLib.classes import get_typed_class from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, CIM_USER, \ CIM_PASS, CIM_NS @@ -33,7 +34,8 @@ from CimTest.ReturnCodes import PASS, FA sup_types = ['Xen', 'XenFV', 'KVM', 'LXC'] exp_rc = 6 #CIM_ERR_NOT_FOUND -exp_desc = "No such instance" +exp_desc = ["No such instance (Name)", + "No such instance (CreationClassName)"] @do_main(sup_types) def main(): @@ -41,37 +43,41 @@ def main(): rc = -1 status = FAIL keys = ['Name', 'CreationClassName'] - try: - host_sys = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt)[0] - except Exception: - logger.error(CIM_ERROR_ENUMERATE % host_sys.name) + status, host_name, host_ccn = get_host_info(options.ip, options.virt) + if status != PASS: + logger.error("Error in calling get_host_info function") return FAIL - conn = assoc.myWBEMConnection('http://%s' % options.ip, (CIM_USER, CIM_PASS), CIM_NS) - instanceref = CIMInstanceName(get_typed_class(options.virt, "HostSystem"), - keybindings = {"Wrong" : "wrong", "CreationClassName" : host_sys.CreationClassName}) - + hostsystem = get_typed_class(options.virt, "HostSystem") + instanceref = [CIMInstanceName(hostsystem, + keybindings = {"Wrong" : "wrong", "CreationClassName" : host_ccn}), + CIMInstanceName(hostsystem, + keybindings = {"Name" : host_name, "Wrong" : "wrong"})] + names = [] - try: - names = conn.AssociatorNames(instanceref, AssocClass = get_typed_class(options.virt, "HostedService")) - rc = 0 - except pywbem.CIMError, (rc, desc): - if rc == exp_rc and desc.find(exp_desc) >= 0: - logger.info("Got excepted rc code and error string") - status = PASS - else: - logger.error("Unexpected rc code %s and description %s\n" %(rc, desc)) - except Exception, details: - logger.error("Unknown exception happened") - logger.error(details) + hostedservice = get_typed_class(options.virt, "HostedService") + for i in range(0, len(instanceref)): + try: + names = conn.AssociatorNames(instanceref[i], AssocClass = hostedservice) + rc = 0 + except pywbem.CIMError, (rc, desc): + if rc == exp_rc and desc.find(exp_desc[i]) >= 0: + logger.info("Got excepted rc code and error string") + status = PASS + else: + logger.error("Unexpected rc code %s and description %s\n" %(rc, desc)) + except Exception, details: + logger.error("Unknown exception happened") + logger.error(details) - if rc == 0: - logger.error("HostedService associator should NOT return excepted result with a wrong key name and value of HostSystem input") - status = FAIL + if rc == 0: + logger.error("HostedService associator should NOT return excepted result\ + with a wrong key name and value of HostSystem input") + status = FAIL return status

libvirt-cim-bounces@redhat.com wrote on 2008-10-06 21:29:45:
yunguol@cn.ibm.com wrote: # HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1223272339 25200 # Node ID bdb5911993d5e56c6398a447b3e5eabc5d41f83d # Parent b710ecb26adf500caa6b801fdf10e4efbed3877e [TEST] #4 Fix HostedService - 03_forward_errs.py to work with sblim base provider installed
Updates from 3 to 4:
1) Update the tc to verify the case when we pass Invalid
2) Verify the complete exception instead of just verifying part of it
Signed-off-by: Guolian Yun <yunguol@cn.ibm.com>
diff -r b710ecb26adf -r bdb5911993d5 suites/libvirt- cim/cimtest/HostedService/03_forward_errs.py --- a/suites/libvirt-cim/cimtest/HostedService/03_forward_errs.py Fri Oct 03 06:34:29 2008 -0700 +++ b/suites/libvirt-cim/cimtest/HostedService/03_forward_errs.py Sun Oct 05 22:52:19 2008 -0700 @@ -25,6 +25,7 @@ from pywbem.cim_obj import CIMInstanceNa from pywbem.cim_obj import CIMInstanceName from XenKvmLib import assoc from XenKvmLib import enumclass +from XenKvmLib.common_util import get_host_info from XenKvmLib.classes import get_typed_class from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, CIM_USER, \ CIM_PASS, CIM_NS @@ -33,7 +34,8 @@ from CimTest.ReturnCodes import PASS, FA
sup_types = ['Xen', 'XenFV', 'KVM', 'LXC'] exp_rc = 6 #CIM_ERR_NOT_FOUND -exp_desc = "No such instance" +exp_desc = ["No such instance (Name)", + "No such instance (CreationClassName)"]
@do_main(sup_types) def main(): @@ -41,37 +43,41 @@ def main(): rc = -1 status = FAIL keys = ['Name', 'CreationClassName'] - try: - host_sys = enumclass.enumerate(options.ip, 'HostSystem', keys, options.virt)[0] - except Exception: - logger.error(CIM_ERROR_ENUMERATE % host_sys.name) + status, host_name, host_ccn = get_host_info(options.ip,
CreationClassName options.virt)
+ if status != PASS: + logger.error("Error in calling get_host_info function") return FAIL -
conn = assoc.myWBEMConnection('http://%s' % options.ip, (CIM_USER, CIM_PASS), CIM_NS) - instanceref = CIMInstanceName(get_typed_class(options.virt, "HostSystem"), - keybindings = {"Wrong" : "wrong", "CreationClassName" : host_sys.CreationClassName}) - + hostsystem = get_typed_class(options.virt, "HostSystem") + instanceref = [CIMInstanceName(hostsystem, + keybindings = {"Wrong" : "wrong", "CreationClassName" : host_ccn}), + CIMInstanceName(hostsystem, + keybindings = {"Name" : host_name, "Wrong" : "wrong"})] +
The instanceref[0] will produce unexpected result as below and not the required exception
DEBUG instanceref is Xen_HostSystem. CreationClassName="Linux_ComputerSystem",Wrong="wrong" Unexpected rc code 6 and description CIM_ERR_NOT_FOUND: No such instance (CreationClassName)
Replace CIMInstanceName(hostsystem, of instanceref[0] with CIMInstanceName(host_ccn, otherwise it the instanceref will give unexpected exception as above when sblim-base-provider is installed. names = []
- try: - names = conn.AssociatorNames(instanceref, AssocClass = get_typed_class(options.virt, "HostedService")) - rc = 0 - except pywbem.CIMError, (rc, desc): - if rc == exp_rc and desc.find(exp_desc) >= 0: - logger.info("Got excepted rc code and error string") - status = PASS - else: - logger.error("Unexpected rc code %s and description % s\n" %(rc, desc)) - except Exception, details: - logger.error("Unknown exception happened") - logger.error(details) + hostedservice = get_typed_class(options.virt, "HostedService") + for i in range(0, len(instanceref)): + try: + names = conn.AssociatorNames(instanceref[i], AssocClass = hostedservice) + rc = 0 + except pywbem.CIMError, (rc, desc): + if rc == exp_rc and desc.find(exp_desc[i]) >= 0: + logger.info("Got excepted rc code and error string") + status = PASS + else: + logger.error("Unexpected rc code %s and description %s\n" %(rc, desc)) + except Exception, details: + logger.error("Unknown exception happened") + logger.error(details)
- if rc == 0: - logger.error("HostedService associator should NOT return excepted result with a wrong key name and value of HostSystem input") - status = FAIL + if rc == 0: + logger.error("HostedService associator should NOT return excepted result\ + with a wrong key name and value of HostSystem input") + status = FAIL
This does not exit the test case even when it fails. Return appropriate return value here directly, for sblim-base- provider we need to return XFAIL.
return status
You can replace calling Associators() and verifications, with the library function try_assoc() of common_util.py to verify the exceptions for the associtations.
#5 patch on the way. Thanks for your good point.
This is not related to your changes, but can you change the following
log msg
logger.error("Unknown exception happened") to logger.error("Unknown exception")
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim _______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

- try: - names = conn.AssociatorNames(instanceref, AssocClass = get_typed_class(options.virt, "HostedService")) - rc = 0 - except pywbem.CIMError, (rc, desc): - if rc == exp_rc and desc.find(exp_desc) >= 0: - logger.info("Got excepted rc code and error string") - status = PASS - else: - logger.error("Unexpected rc code %s and description %s\n" %(rc, desc)) - except Exception, details: - logger.error("Unknown exception happened") - logger.error(details) + hostedservice = get_typed_class(options.virt, "HostedService") + for i in range(0, len(instanceref)):
If you use a for loop, it's better to use: for inst in instanceref:
+ try: + names = conn.AssociatorNames(instanceref[i], AssocClass = hostedservice) + rc = 0 + except pywbem.CIMError, (rc, desc): + if rc == exp_rc and desc.find(exp_desc[i]) >= 0:
Using exp_desc[i] isn't very clear. It's not obvious which exception corresponds to which reference. I'd use a list or some other way to make it obvious which exception you're expecting in a given case.
+ logger.info("Got excepted rc code and error string") + status = PASS + else: + logger.error("Unexpected rc code %s and description %s\n" %(rc, desc)) + except Exception, details: + logger.error("Unknown exception happened") + logger.error(details)
- if rc == 0: - logger.error("HostedService associator should NOT return excepted result with a wrong key name and value of HostSystem input") - status = FAIL + if rc == 0: + logger.error("HostedService associator should NOT return excepted result\ + with a wrong key name and value of HostSystem input")
This is an existing typo, but can you change "HostedService associator should NOT return excepted result" to "HostedService associator should NOT return expected result" And its better to fix this in the following manner: logger.error("HostedService associator should NOT return excepted result" "with a wrong key name and value of HostSystem input") -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
participants (4)
-
Deepti B Kalakeri
-
Guo Lian Yun
-
Kaitlin Rupert
-
yunguol@cn.ibm.com