[Libvirt-cim] [PATCH] [TEST] #2 Fix VirtualSystemManagementService/05_destroysystem_neg.py with provider's updates of error message
Deepti B Kalakeri
deeptik at linux.vnet.ibm.com
Mon Mar 16 09:03:31 UTC 2009
yunguol at cn.ibm.com wrote:
> # HG changeset patch
> # User Guolian Yun <yunguol at cn.ibm.com>
> # Date 1237189564 25200
> # Node ID 079bbc777d5b6968c4d2cf0220a509ffc63e820d
> # Parent b1e05c9de638909c5c6a7ba86aa2b3551802d013
> [TEST] #2 Fix VirtualSystemManagementService/05_destroysystem_neg.py with provider's updates of error message
>
>
> Updates from 1 to 2:
> 1) Remove unused import statement
> 2) Redefine exp_value for different provider version
> 3) Add log error desc for report mismatching exception
>
> Tested for KVM with current sources and rpm
>
> Signed-off-by: Guolian Yun<yunguol at cn.ibm.com>
>
> diff -r b1e05c9de638 -r 079bbc777d5b suites/libvirt-cim/cimtest/VirtualSystemManagementService/05_destroysystem_neg.py
> --- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/05_destroysystem_neg.py Fri Mar 13 10:31:05 2009 -0700
> +++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/05_destroysystem_neg.py Mon Mar 16 00:46:04 2009 -0700
> @@ -20,47 +20,54 @@
> # 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 case is used to verify the VSMS.DestroySystem with invalid vs.
> +
>
> import sys
> import pywbem
> from pywbem.cim_obj import CIMInstanceName
> -from VirtLib import utils
> from XenKvmLib import vsms
> from XenKvmLib.classes import get_typed_class
> -from XenKvmLib.test_doms import undefine_test_domain
> from CimTest.Globals import logger
> -from XenKvmLib.const import do_main
> +from XenKvmLib.const import do_main, get_provider_version
> from CimTest.ReturnCodes import FAIL, PASS, SKIP
>
> sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
> -vsms_status_version = 534
> +vsms_err_message = 814
>
> def destroysystem_fail(tc, options):
> service = vsms.get_vsms_class(options.virt)(options.ip)
>
> classname = get_typed_class(options.virt, 'ComputerSystem')
> + curr_cim_rev, changeset = get_provider_version(options.virt, options.ip)
>
> if tc == 'noname':
> cs_ref = CIMInstanceName(classname,
> keybindings = {'CreationClassName':classname})
>
> - exp_value = { 'rc' : pywbem.CIM_ERR_FAILED,
> - 'desc' : 'Unable to retrieve domain name.'
> - }
> + if curr_cim_rev >= vsms_err_message:
> + exp_value = { 'rc' : pywbem.CIM_ERR_NOT_FOUND,
> + 'desc' : 'Unable to retrieve domain name: Error 0'
> + }
> + else:
> + exp_value = { 'rc' : pywbem.CIM_ERR_FAILED,
> + 'desc' : 'Unable to retrieve domain name.'
> + }
>
> elif tc == 'nonexistent':
> cs_ref = CIMInstanceName(classname,keybindings = {
> 'Name':'##@@!!cimtest_domain',
> 'CreationClassName':classname})
>
> - exp_value = { 'rc' : pywbem.CIM_ERR_FAILED,
> - 'desc' : 'Failed to find domain'
> - }
> + if curr_cim_rev >= vsms_err_message:
> + exp_value = { 'rc' : pywbem.CIM_ERR_NOT_FOUND,
> + 'desc' : "Referenced domain `##@@!!cimtest_domain'" \
> + " does not exist: Domain not found"}
> + else:
> + exp_value = { 'rc' : pywbem.CIM_ERR_FAILED,
> + 'desc' : 'Failed to find domain'
> + }
>
> - else:
> - return SKIP
> -
> - status = FAIL
> try:
> ret = service.DestroySystem(AffectedSystem=cs_ref)
>
> @@ -68,30 +75,33 @@
> err_no = details[0]
> err_desc = details[1]
> if err_no == exp_value['rc'] and err_desc.find(exp_value['desc']) >= 0:
> - logger.error("For Invalid Scenario '%s'", tc)
> + logger.info("For Invalid Scenario '%s'", tc)
> logger.info('Got expected error no: %s', err_no)
> logger.info('Got expected error desc: %s',err_desc)
> return PASS
> -
> - logger.error('destroy_fail>> %s: Error executing DestroySystem', tc)
> - logger.error(details)
> - return FAIL
> + else:
> + logger.error("For Invalid Scenario '%s'", tc)
> + logger.error('Got error no %s, but expected no %s',
> + err_no, exp_value['rc'])
> + logger.error('Got error desc: %s, but expected desc: %s',
> + err_desc, exp_value['desc'])
> + return FAIL
>
You can write the following log message before the if conditional
statement above, we dont need to duplicate the statement.
logger.error("For Invalid Scenario '%s'", tc)
> + logger.error('destroy_fail>> %s: Error executing DestroySystem', tc)
> + logger.error(details)
> + return FAIL
>
> @do_main(sup_types)
> def main():
> options = main.options
> rc1 = destroysystem_fail('noname', options)
> rc2 = destroysystem_fail('nonexistent', options)
> -
> +
> status = FAIL
> if rc1 == PASS and rc2 == PASS:
> status = PASS
>
No need to assign status separately, instead use return PASS.
> else:
> - rclist = [rc1, rc2]
> - rclist.sort()
> - if rclist[0] == PASS and rclist[1] == SKIP:
> - status = PASS
> -
> + status = FAIL
>
No need to assign status separately here for else, since status = FAIL
is assigned before the if rc1 == PASS and rc2 == PASS: condition.
> +
> return status
>
Or else the main() can written as below:
@do_main(sup_types)
def main():
options = main.options
rc1 = destroysystem_fail('noname', options)
rc2 = destroysystem_fail('nonexistent', options)
if rc1 == PASS and rc2 == PASS:
return PASS
return FAIL
if __name__ == "__main__":
sys.exit(main())
> if __name__ == "__main__":
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>
--
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list