[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