
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1214945951 25200 # Node ID 5872801b69296bac39b1b5060e6de2643471f290 # Parent ea52dde5ac3e1b10d5aa59b101d91b8ffc5b127e [TEST] #2 Fix VirtualSystemSettingDataComponent - 01_forward.py failure. Test was expecting one ProcRASD for each domain processor. It should expect only one RASD. Also updated this test to use PASS/FAIL, removed global variables, and cleaned up indention. This test will need to be updated to support other XenFV, etc. Updates from 1 to 2: -Fix build_vssd_info() to return FAIL in case of error, not call sys.exit(). Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com> diff -r ea52dde5ac3e -r 5872801b6929 suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/01_forward.py --- a/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/01_forward.py Tue Jul 01 13:45:25 2008 -0700 +++ b/suites/libvirt-cim/cimtest/VirtualSystemSettingDataComponent/01_forward.py Tue Jul 01 13:59:11 2008 -0700 @@ -58,6 +58,7 @@ from CimTest import Globals from XenKvmLib import assoc from CimTest.Globals import logger, do_main +from CimTest.ReturnCodes import FAIL, PASS sup_types = ['Xen'] @@ -67,64 +68,49 @@ test_disk = 'xvda' status = 0 VSType = "Xen" -vssd_names = [] -vssd_values = [] -RASD_cllist = [ - 'Xen_DiskResourceAllocationSettingData', \ - 'Xen_MemResourceAllocationSettingData', \ - 'Xen_NetResourceAllocationSettingData', \ - 'Xen_ProcResourceAllocationSettingData' - ] - def init_list(): """ Creating the lists that will be used for comparisons. """ - prop_list = [] - prop_list = ["%s/%s" % (test_dom, test_disk), \ - "%s/%s" % (test_dom, "mem"), \ - "%s/%s" % (test_dom, test_mac) - ] - proc_list = [] - for i in range(test_vcpus): - proc_list.append("%s/%s" % (test_dom, i)) - return prop_list, proc_list + + rlist = ['Xen_DiskResourceAllocationSettingData', + 'Xen_MemResourceAllocationSettingData', + 'Xen_NetResourceAllocationSettingData', + 'Xen_ProcResourceAllocationSettingData' + ] + + prop_list = {rlist[0] : "%s/%s" % (test_dom, test_disk), + rlist[1] : "%s/%s" % (test_dom, "mem"), + rlist[2] : "%s/%s" % (test_dom, test_mac), + rlist[3] : "%s/%s" % (test_dom, "proc") + } + + return prop_list def build_vssd_info(ip, vssd): """ Creating the vssd fileds lists that will be used for comparisons. """ - global vssd_names, vssd_values if vssd.Bootloader == "" or vssd.Caption == "" or \ vssd.InstanceID == "" or vssd.ElementName == "" or \ vssd.VirtualSystemIdentifier == "" or vssd.VirtualSystemType == "": logger.error("One of the required VSSD details seems to be empty") - status = 1 test_domain_function(test_dom, ip, "undefine") - sys.exit(status) + return FAIL - vssd_names = [ - 'Bootloader', \ - 'Caption', \ - 'InstanceID', \ - 'ElementName', \ - 'VirtualSystemIdentifier', \ - 'VirtualSystemType', \ - ] - - vssd_values = [ - vssd.Bootloader, \ - vssd.Caption, \ - vssd.InstanceID, \ - vssd.ElementName, \ - vssd.VirtualSystemIdentifier, \ - vssd.VirtualSystemType, \ - ] + vssd_vals = {'Bootloader' : vssd.Bootloader, + 'Caption' : vssd.Caption, + 'InstanceID' : vssd.InstanceID, + 'ElementName' : vssd.ElementName, + 'VirtualSystemIdentifier' : vssd.VirtualSystemIdentifier, + 'VirtualSystemType' : vssd.VirtualSystemType + } + return vssd_vals -def assoc_values(ip, assoc_info, cn): +def assoc_values(ip, assoc_info, cn, an, vals): """ The association info of Xen_VirtualSystemSettingDataComponent with every RASDclass is @@ -132,36 +118,29 @@ Caption, InstanceID, ElementName, VirtualSystemIdentifier, VirtualSystemType, Bootloader """ - global status - global vssd_names, vssd_values try: if len(assoc_info) != 1: - Globals.logger.error("Xen_VirtualSystemSettingDataComponent \ -returned %i Resource objects for class '%s'", len(assoc_info),cn) - status = 1 - return status + Globals.logger.error("%s returned %i resource objects for '%s'" % \ + (an, len(assoc_info), cn)) + return FAIL - for idx in range(len(vssd_names)): - if assoc_info[0][vssd_names[idx]] != vssd_values[idx]: - Globals.logger.error("%s Mismatch", vssd_names[idx]) - Globals.logger.error("Returned %s instead of %s", \ - assoc_info[0][vssd_names[idx]], \ - vssd_fields[idx]) - status = 1 - if status != 0: - break + for prop, val in vals.iteritems(): + if assoc_info[0][prop] != val: + Globals.logger.error("%s mismatch: returned %s instead of %s" %\ + (prop, assoc_info[0][prop], val)) + return FAIL + + return PASS + except Exception, detail : logger.error("Exception in assoc_values function: %s" % detail) - status = 1 - test_domain_function(test_dom, ip, "undefine") - return status - + return FAIL @do_main(sup_types) def main(): options = main.options - global status + status = FAIL destroy_and_undefine_all(options.ip) test_xml = testxml_bl(test_dom, vcpus = test_vcpus, \ @@ -171,9 +150,7 @@ ret = test_domain_function(test_xml, options.ip, cmd = "define") if not ret: logger.error("Failed to define the dom: %s", test_dom) - status = 1 - return status - + return FAIL instIdval = "%s:%s" % (VSType, test_dom) keyname = "InstanceID" @@ -183,48 +160,39 @@ vssd = enumclass.getInstance(options.ip, \ enumclass.Xen_VirtualSystemSettingData, \ key_list) - build_vssd_info(options.ip, vssd) + if vssd is None: + logger.error("VSSD instance for %s not found" % test_dom) + test_domain_function(test_dom, options.ip, "undefine") + return FAIL + + vssd_vals = build_vssd_info(options.ip, vssd) except Exception, detail : logger.error(Globals.CIM_ERROR_GETINSTANCE, \ - 'Xen_VirtualSystemSettingData') + 'Xen_VirtualSystemSettingData') logger.error("Exception : %s" % detail) test_domain_function(test_dom, options.ip, "undefine") - status = 1 - return status + return FAIL - prop_list, proc_list = init_list() + prop_list = init_list() try: - idx = 0 - # Looping through the RASD_cllist, call association - # Xen_VirtualSystemSettingDataComponent with each class in RASD_cllist - for rasd_cname in RASD_cllist: - if rasd_cname != 'Xen_ProcResourceAllocationSettingData': - assoc_info = assoc.Associators(options.ip, \ - 'Xen_VirtualSystemSettingDataComponent', \ - rasd_cname, \ - InstanceID = prop_list[idx]) - # Verify the association fields returned for particular rasd_cname. - assoc_values(options.ip, assoc_info, rasd_cname) - idx = idx + 1 - else: - # Xen_ProcResourceAllocationSettingData, we need to find - # association information for all the proc InstanceID and hence - # we loop from 0 to (test_vcpus - 1 ) - for index in range(len(proc_list)): - assoc_info = assoc.Associators(options.ip, \ - 'Xen_VirtualSystemSettingDataComponent', \ - rasd_cname, \ - InstanceID = prop_list[index]) + # Looping through the RASD_cllist, call association + # Xen_VirtualSystemSettingDataComponent with each class in RASD_cllist + an = 'Xen_VirtualSystemSettingDataComponent' + for rasd_cname, prop in prop_list.iteritems(): + assoc_info = assoc.Associators(options.ip, an, rasd_cname, + InstanceID = prop) # Verify the association fields returned for particular rasd_cname. - assoc_values(options.ip, assoc_info, rasd_cname) + status = assoc_values(options.ip, assoc_info, rasd_cname, an, + vssd_vals) + if status != PASS: + break except Exception, detail : - logger.error(Globals.CIM_ERROR_ASSOCIATORS, \ - 'Xen_VirtualSystemSettingDataComponent') + logger.error(Globals.CIM_ERROR_ASSOCIATORS, an) logger.error("Exception : %s" % detail) - status = 1 + status = FAIL test_domain_function(test_dom, options.ip, "undefine") return status