[PATCH] [TEST] #5 Fix ECTP 01_forward.py to support system with multiple networks defined

# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1226619337 28800 # Node ID a969c3700069c085eef3e258a58a21119f29388d # Parent 8d6f2db22eda9bda08ff26caa8982f137a3d4486 [TEST] #5 Fix ECTP 01_forward.py to support system with multiple networks defined This test was doing a lot of unnecessary checking (and unessary building of lists). Instead, this test calls EnumInstances on each of the classes expected to be returned by the association. These instances are then compared against the list of instances returned by the ECTP association query. The FIXME will be fixed when bug 0007 is fixed. Updates from 4 to 5: -Incase of exception, return FAIL. This doesn't currently handle to XFAIL case - this will be fixed in a follow-up patch. Updates from 3 to 4: -Fix false positive - if an exception is encountered, be sure to set the return status as FAILED. -Build the appropriate profile list needed for testing with older providers -Change provider version from 680 to 686 (which has additional ECTP changes needed to have ECTP work properly). Updates from 2 to 3: -Place most of main block in a try/except. When a failure is encountered, an exception is raised, and the test is cleaned up properly. -If the provider is < 680, don't check the ECTP values for CIM:DSP1059-GenericDeviceResourceVirtualization-1.0.0 - ECTP doesn't support this provider version. Updates from 1 to 2: -Return from test case if init_vs_pool_values() returns a failure Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com> diff -r 8d6f2db22eda -r a969c3700069 suites/libvirt-cim/cimtest/ElementConforms/01_forward.py --- a/suites/libvirt-cim/cimtest/ElementConforms/01_forward.py Tue Nov 11 00:19:20 2008 -0800 +++ b/suites/libvirt-cim/cimtest/ElementConforms/01_forward.py Thu Nov 13 15:35:37 2008 -0800 @@ -23,10 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# This tc is used to verify the EnabledState, HealthState, EnabledDefault and -# the Classname are set appropriately for the results returned by the -# ElementConformsToProfile association for the RegisteredProfile class -# and ManagedElement Class +# This tc is used to verify the results of the ElementConformsToProfile +# association. This test focuses on RegisteredProfile -> ManagedElement # # "CIM:DSP1042-SystemVirtualization-1.0.0" , # "CIM:DSP1057-VirtualSystem-1.0.0a" @@ -45,98 +43,69 @@ from XenKvmLib.classes import get_typed_class from XenKvmLib import vxml from CimTest import Globals -from XenKvmLib.common_util import print_field_error, check_sblim -from CimTest.Globals import logger, CIM_ERROR_ASSOCIATORS, CIM_ERROR_ENUMERATE -from XenKvmLib.const import do_main -from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC +from XenKvmLib.common_util import print_field_error, check_sblim, get_host_info +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE +from XenKvmLib.const import do_main, get_provider_version +from CimTest.ReturnCodes import PASS, FAIL, XFAIL, XFAIL_RC from XenKvmLib.enumclass import EnumInstances -from XenKvmLib.const import default_network_name, default_pool_name -from XenKvmLib.const import get_provider_version - sup_types = ['Xen', 'XenFV', 'KVM', 'LXC'] test_dom = "domU" bug_sblim = '00007' -libvirt_cim_ectp_changes = 680 +libvirt_cim_ectp_changes = 686 -def pool_init(verify_list, pool_cn, pool_name, virt): - ccn = get_typed_class(virt, pool_cn) - instid = '%s/%s' %(pool_cn, pool_name) - verify_list[ccn]= {'InstanceID' : instid } - return verify_list - def init_vs_pool_values(server, virt): - verify_ectp_list = { } - hs_ccn = get_typed_class(virt, 'HostSystem') - host = live.hostname(server) - cs_fields = { - 'CreationClassName' : hs_ccn, - 'Name' : host - } + verify_ectp_list = {} - verify_ectp_list[hs_ccn] = cs_fields + cn_names = ["ComputerSystem"] - cs_ccn = get_typed_class(virt, 'ComputerSystem') - verify_ectp_list[cs_ccn] = cs_fields.copy() - verify_ectp_list[cs_ccn]['CreationClassName'] = cs_ccn - verify_ectp_list[cs_ccn]['Name'] = test_dom + curr_cim_rev, changeset = get_provider_version(virt, server) + if curr_cim_rev >= libvirt_cim_ectp_changes: + cn_names2 = ["VirtualSystemMigrationService", "DiskPool", "NetworkPool", + "ProcessorPool", "MemoryPool"] + cn_names.extend(cn_names2) - vs_ccn = get_typed_class(virt, 'VirtualSystemMigrationService') - verify_ectp_list[vs_ccn] = cs_fields.copy() - verify_ectp_list[vs_ccn]['CreationClassName'] = vs_ccn - verify_ectp_list[vs_ccn]['SystemCreationClassName'] = hs_ccn - verify_ectp_list[vs_ccn]['SystemName'] = host - verify_ectp_list[vs_ccn]['Name'] = 'MigrationService' + status, host_name, host_ccn = get_host_info(server, virt) + if status != PASS: + logger.error("Unable to get host system instance objects") + return FAIL, verify_ectp_list - verify_ectp_list = pool_init(verify_ectp_list, 'DiskPool', - default_pool_name, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'NetworkPool', - default_network_name, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'ProcessorPool', 0, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'MemoryPool', 0, virt) + #FIXME - get_host_info() should be updated to return the host instance + insts = EnumInstances(server, host_ccn, True) + if len(insts) < 1: + logger.error("Expected 1 %s instance", host_ccn) + return FAIL, verify_ectp_list - - return verify_ectp_list + verify_ectp_list[host_ccn] = insts -def verify_fields(assoc_val, pllst_index, vs_pool_values): + for cn_base in cn_names: + cn = get_typed_class(virt, cn_base) + insts = EnumInstances(server, cn, True) + + if len(insts) < 1: + logger.error("Expected at least 1 %s instance", cn) + return FAIL, verify_ectp_list + + verify_ectp_list[cn] = insts + + return PASS, verify_ectp_list + +def verify_fields(assoc_val, managed_ele_values): try: - field_names = vs_pool_values[pllst_index].keys() - values = vs_pool_values[pllst_index] - for field in field_names: - if values[field] != assoc_val[field]: - print_field_error(field, assoc_val[field], values[field]) - return FAIL + cn = assoc_val.classname + elements = managed_ele_values[cn] + + for ele in elements: + if assoc_val.items() == ele.items(): + managed_ele_values[cn].remove(ele) + return PASS, managed_ele_values + except Exception, details: - logger.error("Exception: In fn verify_fields() %s", details) - return FAIL + logger.error("verify_fields() exception: %s", details) + return FAIL, managed_ele_values - return PASS - -def verify_cs_hs_mig_fields(assoc_info, vs_pool_values): - try: - pllst_index = assoc_info[0]['CreationClassName'] - assoc_val = None - if 'HostSystem' in pllst_index or \ - 'VirtualSystemMigrationService' in pllst_index: - if len(assoc_info) != 1: - logger.error("'%s' returned '%d' records, expected 1", - pllst_index, len(assoc_info)) - return FAIL - assoc_val = assoc_info[0] - else: - # For ComputerSystem info - for inst in assoc_info: - if inst['Name'] == test_dom: - assoc_val = inst - break - except Exception, details: - logger.error("Exception: In fn verify_cs_hs_mig_fields() %s", details) - return FAIL - - if assoc_val == None: - return FAIL - - return verify_fields(assoc_val, pllst_index, vs_pool_values) + logger.error("%s not in expected list %s", assoc_val, elements) + return FAIL, managed_ele_values def get_proflist(server, reg_classname, virt): profiles_instid_list = [] @@ -150,8 +119,8 @@ len_prof_list = 7 if len(proflist) < len_prof_list: logger.error("'%s' returned '%d' '%s' objects, expected atleast %d", - reg_classname, len(proflist), 'Profile', len_prof_list) - status = FAIL + reg_classname, len(proflist), 'Profile', len_prof_list) + return FAIL, profiles_instid_list except Exception, detail: logger.error(CIM_ERROR_ENUMERATE, reg_classname) @@ -161,54 +130,17 @@ if status != PASS: return status, profiles_instid_list - profiles_instid_list = [ profile.InstanceID for profile in proflist ] + unsupp_prof = [] + if curr_cim_rev < libvirt_cim_ectp_changes: + unsupp_prof = ["CIM:DSP1059-GenericDeviceResourceVirtualization-1.0.0", + "CIM:DSP1045-MemoryResourceVirtualization-1.0.0", + "CIM:DSP1081-VirtualSystemMigration-0.8.1"] + + for profile in proflist: + if profile.InstanceID not in unsupp_prof: + profiles_instid_list.append(profile.InstanceID) return status, profiles_instid_list - - -def verify_ectp_assoc(server, virt): - reg_classname = get_typed_class(virt, "RegisteredProfile") - an = get_typed_class(virt,"ElementConformsToProfile") - - status, inst_lst = get_proflist(server, reg_classname, virt) - if status != PASS: - return status - - verify_ectp_list = init_vs_pool_values(server, virt) - for devid in inst_lst : - logger.info("Verifying '%s' with '%s'", an, devid) - try: - assoc_info = assoc.Associators(server, - an, - reg_classname, - InstanceID = devid) - if len(assoc_info) < 1: - ret_val, linux_cs = check_sblim(server, virt) - if ret_val != PASS: - logger.error(" '%s' returned (%d) '%s' objects", an, - len(assoc_info), reg_classname) - return FAIL - else: - return XFAIL_RC(bug_sblim) - break - - if 'DSP1059' in devid or 'DSP1045' in devid: - instid = assoc_info[0]['InstanceID'] - index, other = instid.split("/") - cn = get_typed_class(virt, index) - status = verify_fields(assoc_info[0], cn, verify_ectp_list) - else: - ccn = assoc_info[0]['CreationClassName'] - status = verify_cs_hs_mig_fields(assoc_info, verify_ectp_list) - - if status != PASS: - break - - except Exception, detail: - logger.error(CIM_ERROR_ASSOCIATORS, an) - logger.error("Exception: %s" % detail) - status = FAIL - return status @do_main(sup_types) def main(): @@ -216,7 +148,7 @@ server = options.ip virt = options.virt - status = PASS + status = None destroy_and_undefine_all(options.ip, options.virt) virt_xml = vxml.get_class(options.virt) @@ -232,11 +164,52 @@ logger.error('Unable to start domain %s' % test_dom) return FAIL - prev_namespace = Globals.CIM_NS Globals.CIM_NS = 'root/interop' - status = verify_ectp_assoc(server, virt) + try: + reg_classname = get_typed_class(virt, "RegisteredProfile") + an = get_typed_class(virt,"ElementConformsToProfile") + + status, prof_inst_lst = get_proflist(server, reg_classname, virt) + if status != PASS: + raise Exception("Failed to get profile list") + + status, verify_ectp_list = init_vs_pool_values(server, virt) + if status != PASS: + raise Exception("Failed to get instances needed for verification") + + for prof_id in prof_inst_lst: + logger.info("Verifying '%s' with '%s'", an, prof_id) + assoc_info = assoc.Associators(server, + an, + reg_classname, + InstanceID = prof_id) + + if len(assoc_info) < 1: + ret_val, linux_cs = check_sblim(server, virt) + if ret_val != PASS: + status = FAIL + raise Exception(" '%s' returned (%d) '%s' objects" % \ + (len(assoc_info), reg_classname)) + else: + status = XFAIL_RC(bug_sblim) + raise Exception("Known failure") + + for inst in assoc_info: + status, verify_ectp_list = verify_fields(inst, verify_ectp_list) + if status != PASS: + raise Exception("Failed to verify instance") + + if status == PASS: + for k, l in verify_ectp_list.iteritems(): + if len(l) != 0: + status = FAIL + raise Exception("%s items weren't returned: %s" % (k, l)) + + except Exception, detail: + logger.error("Exception: %s" % detail) + status = FAIL Globals.CIM_NS = prev_namespace cxml.destroy(server)

Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1226619337 28800 # Node ID a969c3700069c085eef3e258a58a21119f29388d # Parent 8d6f2db22eda9bda08ff26caa8982f137a3d4486 [TEST] #5 Fix ECTP 01_forward.py to support system with multiple networks defined
This test was doing a lot of unnecessary checking (and unessary building of lists). Instead, this test calls EnumInstances on each of the classes expected to be returned by the association.
These instances are then compared against the list of instances returned by the ECTP association query.
The FIXME will be fixed when bug 0007 is fixed.
Updates from 4 to 5: -Incase of exception, return FAIL. This doesn't currently handle to XFAIL case - this will be fixed in a follow-up patch.
Updates from 3 to 4: -Fix false positive - if an exception is encountered, be sure to set the return status as FAILED. -Build the appropriate profile list needed for testing with older providers -Change provider version from 680 to 686 (which has additional ECTP changes needed to have ECTP work properly).
Updates from 2 to 3: -Place most of main block in a try/except. When a failure is encountered, an exception is raised, and the test is cleaned up properly. -If the provider is < 680, don't check the ECTP values for CIM:DSP1059-GenericDeviceResourceVirtualization-1.0.0 - ECTP doesn't support this provider version.
Updates from 1 to 2: -Return from test case if init_vs_pool_values() returns a failure
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r 8d6f2db22eda -r a969c3700069 suites/libvirt-cim/cimtest/ElementConforms/01_forward.py --- a/suites/libvirt-cim/cimtest/ElementConforms/01_forward.py Tue Nov 11 00:19:20 2008 -0800 +++ b/suites/libvirt-cim/cimtest/ElementConforms/01_forward.py Thu Nov 13 15:35:37 2008 -0800 @@ -23,10 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
-# This tc is used to verify the EnabledState, HealthState, EnabledDefault and -# the Classname are set appropriately for the results returned by the -# ElementConformsToProfile association for the RegisteredProfile class -# and ManagedElement Class +# This tc is used to verify the results of the ElementConformsToProfile +# association. This test focuses on RegisteredProfile -> ManagedElement # # "CIM:DSP1042-SystemVirtualization-1.0.0" , # "CIM:DSP1057-VirtualSystem-1.0.0a" @@ -45,98 +43,69 @@ from XenKvmLib.classes import get_typed_class from XenKvmLib import vxml from CimTest import Globals -from XenKvmLib.common_util import print_field_error, check_sblim -from CimTest.Globals import logger, CIM_ERROR_ASSOCIATORS, CIM_ERROR_ENUMERATE -from XenKvmLib.const import do_main -from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC +from XenKvmLib.common_util import print_field_error, check_sblim, get_host_info +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE +from XenKvmLib.const import do_main, get_provider_version +from CimTest.ReturnCodes import PASS, FAIL, XFAIL, XFAIL_RC from XenKvmLib.enumclass import EnumInstances -from XenKvmLib.const import default_network_name, default_pool_name -from XenKvmLib.const import get_provider_version -
sup_types = ['Xen', 'XenFV', 'KVM', 'LXC'] test_dom = "domU" bug_sblim = '00007' -libvirt_cim_ectp_changes = 680 +libvirt_cim_ectp_changes = 686
-def pool_init(verify_list, pool_cn, pool_name, virt): - ccn = get_typed_class(virt, pool_cn) - instid = '%s/%s' %(pool_cn, pool_name) - verify_list[ccn]= {'InstanceID' : instid } - return verify_list - def init_vs_pool_values(server, virt): - verify_ectp_list = { } - hs_ccn = get_typed_class(virt, 'HostSystem') - host = live.hostname(server) - cs_fields = { - 'CreationClassName' : hs_ccn, - 'Name' : host - } + verify_ectp_list = {}
- verify_ectp_list[hs_ccn] = cs_fields + cn_names = ["ComputerSystem"]
- cs_ccn = get_typed_class(virt, 'ComputerSystem') - verify_ectp_list[cs_ccn] = cs_fields.copy() - verify_ectp_list[cs_ccn]['CreationClassName'] = cs_ccn - verify_ectp_list[cs_ccn]['Name'] = test_dom + curr_cim_rev, changeset = get_provider_version(virt, server) + if curr_cim_rev >= libvirt_cim_ectp_changes: + cn_names2 = ["VirtualSystemMigrationService", "DiskPool", "NetworkPool", + "ProcessorPool", "MemoryPool"] + cn_names.extend(cn_names2)
- vs_ccn = get_typed_class(virt, 'VirtualSystemMigrationService') - verify_ectp_list[vs_ccn] = cs_fields.copy() - verify_ectp_list[vs_ccn]['CreationClassName'] = vs_ccn - verify_ectp_list[vs_ccn]['SystemCreationClassName'] = hs_ccn - verify_ectp_list[vs_ccn]['SystemName'] = host - verify_ectp_list[vs_ccn]['Name'] = 'MigrationService' + status, host_name, host_ccn = get_host_info(server, virt) + if status != PASS: + logger.error("Unable to get host system instance objects") + return FAIL, verify_ectp_list
- verify_ectp_list = pool_init(verify_ectp_list, 'DiskPool', - default_pool_name, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'NetworkPool', - default_network_name, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'ProcessorPool', 0, virt) - verify_ectp_list = pool_init(verify_ectp_list, 'MemoryPool', 0, virt) + #FIXME - get_host_info() should be updated to return the host instance + insts = EnumInstances(server, host_ccn, True) + if len(insts) < 1: + logger.error("Expected 1 %s instance", host_ccn) + return FAIL, verify_ectp_list
The test case will fail for the case where we have sblim-base-provider installed with the following error. -------------------------------------------------------------------- ElementConforms - 01_forward.py: FAIL ERROR - Expected 1 Linux_ComputerSystem instance ERROR - Exception: Failed to get instances needed for verification CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- This is because we are querying for the Linux_CoumputerSystem with 'root/virt' namespace. We need to store the previous namespace and change the namespace to "Globals.CIM_NS = 'root/cimv2'" depending on if the machine has sblim-base-provider installed before enumerating for Linux_ComputerSystem and then restore back to the previous namespace.
- - return verify_ectp_list + verify_ectp_list[host_ccn] = insts
-def verify_fields(assoc_val, pllst_index, vs_pool_values): + for cn_base in cn_names: + cn = get_typed_class(virt, cn_base) + insts = EnumInstances(server, cn, True) + + if len(insts) < 1: + logger.error("Expected at least 1 %s instance", cn) + return FAIL, verify_ectp_list + + verify_ectp_list[cn] = insts + + return PASS, verify_ectp_list + +def verify_fields(assoc_val, managed_ele_values): try: - field_names = vs_pool_values[pllst_index].keys() - values = vs_pool_values[pllst_index] - for field in field_names: - if values[field] != assoc_val[field]: - print_field_error(field, assoc_val[field], values[field]) - return FAIL + cn = assoc_val.classname + elements = managed_ele_values[cn] + + for ele in elements: + if assoc_val.items() == ele.items(): + managed_ele_values[cn].remove(ele) + return PASS, managed_ele_values + except Exception, details: - logger.error("Exception: In fn verify_fields() %s", details) - return FAIL + logger.error("verify_fields() exception: %s", details) + return FAIL, managed_ele_values
- return PASS - -def verify_cs_hs_mig_fields(assoc_info, vs_pool_values): - try: - pllst_index = assoc_info[0]['CreationClassName'] - assoc_val = None - if 'HostSystem' in pllst_index or \ - 'VirtualSystemMigrationService' in pllst_index: - if len(assoc_info) != 1: - logger.error("'%s' returned '%d' records, expected 1", - pllst_index, len(assoc_info)) - return FAIL - assoc_val = assoc_info[0] - else: - # For ComputerSystem info - for inst in assoc_info: - if inst['Name'] == test_dom: - assoc_val = inst - break - except Exception, details: - logger.error("Exception: In fn verify_cs_hs_mig_fields() %s", details) - return FAIL - - if assoc_val == None: - return FAIL - - return verify_fields(assoc_val, pllst_index, vs_pool_values) + logger.error("%s not in expected list %s", assoc_val, elements) + return FAIL, managed_ele_values
def get_proflist(server, reg_classname, virt): profiles_instid_list = [] @@ -150,8 +119,8 @@ len_prof_list = 7 if len(proflist) < len_prof_list: logger.error("'%s' returned '%d' '%s' objects, expected atleast %d", - reg_classname, len(proflist), 'Profile', len_prof_list) - status = FAIL + reg_classname, len(proflist), 'Profile', len_prof_list) + return FAIL, profiles_instid_list
except Exception, detail: logger.error(CIM_ERROR_ENUMERATE, reg_classname) @@ -161,54 +130,17 @@ if status != PASS: return status, profiles_instid_list
- profiles_instid_list = [ profile.InstanceID for profile in proflist ] + unsupp_prof = [] + if curr_cim_rev < libvirt_cim_ectp_changes: + unsupp_prof = ["CIM:DSP1059-GenericDeviceResourceVirtualization-1.0.0", + "CIM:DSP1045-MemoryResourceVirtualization-1.0.0", + "CIM:DSP1081-VirtualSystemMigration-0.8.1"] + + for profile in proflist: + if profile.InstanceID not in unsupp_prof: + profiles_instid_list.append(profile.InstanceID)
return status, profiles_instid_list - - -def verify_ectp_assoc(server, virt): - reg_classname = get_typed_class(virt, "RegisteredProfile") - an = get_typed_class(virt,"ElementConformsToProfile") - - status, inst_lst = get_proflist(server, reg_classname, virt) - if status != PASS: - return status - - verify_ectp_list = init_vs_pool_values(server, virt) - for devid in inst_lst : - logger.info("Verifying '%s' with '%s'", an, devid) - try: - assoc_info = assoc.Associators(server, - an, - reg_classname, - InstanceID = devid) - if len(assoc_info) < 1: - ret_val, linux_cs = check_sblim(server, virt) - if ret_val != PASS: - logger.error(" '%s' returned (%d) '%s' objects", an, - len(assoc_info), reg_classname) - return FAIL - else: - return XFAIL_RC(bug_sblim) - break - - if 'DSP1059' in devid or 'DSP1045' in devid: - instid = assoc_info[0]['InstanceID'] - index, other = instid.split("/") - cn = get_typed_class(virt, index) - status = verify_fields(assoc_info[0], cn, verify_ectp_list) - else: - ccn = assoc_info[0]['CreationClassName'] - status = verify_cs_hs_mig_fields(assoc_info, verify_ectp_list) - - if status != PASS: - break - - except Exception, detail: - logger.error(CIM_ERROR_ASSOCIATORS, an) - logger.error("Exception: %s" % detail) - status = FAIL - return status
@do_main(sup_types) def main(): @@ -216,7 +148,7 @@ server = options.ip virt = options.virt
- status = PASS + status = None destroy_and_undefine_all(options.ip, options.virt)
virt_xml = vxml.get_class(options.virt) @@ -232,11 +164,52 @@ logger.error('Unable to start domain %s' % test_dom) return FAIL
- prev_namespace = Globals.CIM_NS Globals.CIM_NS = 'root/interop'
- status = verify_ectp_assoc(server, virt) + try: + reg_classname = get_typed_class(virt, "RegisteredProfile") + an = get_typed_class(virt,"ElementConformsToProfile") + + status, prof_inst_lst = get_proflist(server, reg_classname, virt) + if status != PASS: + raise Exception("Failed to get profile list") + + status, verify_ectp_list = init_vs_pool_values(server, virt) + if status != PASS: + raise Exception("Failed to get instances needed for verification") + + for prof_id in prof_inst_lst: + logger.info("Verifying '%s' with '%s'", an, prof_id) + assoc_info = assoc.Associators(server, + an, + reg_classname, + InstanceID = prof_id) + + if len(assoc_info) < 1: + ret_val, linux_cs = check_sblim(server, virt) + if ret_val != PASS: + status = FAIL + raise Exception(" '%s' returned (%d) '%s' objects" % \ + (len(assoc_info), reg_classname)) + else: + status = XFAIL_RC(bug_sblim) + raise Exception("Known failure") + + for inst in assoc_info: + status, verify_ectp_list = verify_fields(inst, verify_ectp_list) + if status != PASS: + raise Exception("Failed to verify instance") + + if status == PASS: + for k, l in verify_ectp_list.iteritems(): + if len(l) != 0: + status = FAIL + raise Exception("%s items weren't returned: %s" % (k, l)) + + except Exception, detail: + logger.error("Exception: %s" % detail) + status = FAIL
Since we are setting the status appropriately in all the cases within the try block, I dont think we need to set this explicitly.
Globals.CIM_NS = prev_namespace cxml.destroy(server)
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

+ #FIXME - get_host_info() should be updated to return the host instance + insts = EnumInstances(server, host_ccn, True) + if len(insts) < 1: + logger.error("Expected 1 %s instance", host_ccn) + return FAIL, verify_ectp_list
The test case will fail for the case where we have sblim-base-provider installed with the following error. -------------------------------------------------------------------- ElementConforms - 01_forward.py: FAIL ERROR - Expected 1 Linux_ComputerSystem instance ERROR - Exception: Failed to get instances needed for verification CIM_ERR_INVALID_CLASS: Linux_ComputerSystem --------------------------------------------------------------------
This is because we are querying for the Linux_CoumputerSystem with 'root/virt' namespace. We need to store the previous namespace and change the namespace to "Globals.CIM_NS = 'root/cimv2'" depending on if the machine has sblim-base-provider installed before enumerating for Linux_ComputerSystem and then restore back to the previous namespace.
Yes, agreed. Dan recently submitted a fix so that most of the associations now work with the Linux_ComputerSystem instances. I'll fix this when I fix the other test cases.
+ + except Exception, detail: + logger.error("Exception: %s" % detail) + status = FAIL
Since we are setting the status appropriately in all the cases within the try block, I dont think we need to set this explicitly.
If init_vs_pool_values() passes, but then the Associators() call throws an exception, status is still set to PASS. The test will return PASS in that case, which wouldn't be valid. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
participants (2)
-
Deepti B Kalakeri
-
Kaitlin Rupert