# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1207042611 -19800
# Node ID 560b0f60eaa938d4346d9019d9a71f8b35cd7dfa
# Parent 9b12b065560215945ce8175fad6d34136069bd06
[TEST][Addition] : Adding 01_forward.py tc to verify ReferencedProfile.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 9b12b0655602 -r 560b0f60eaa9
suites/libvirt-cim/cimtest/ReferencedProfile/01_forward.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/suites/libvirt-cim/cimtest/ReferencedProfile/01_forward.py Tue Apr 01 15:06:51 2008
+0530
@@ -0,0 +1,159 @@
+#!/usr/bin/python
+#
+# Copyright 2008 IBM Corp.
+#
+# Authors:
+# Deepti B. Kalakeri <dkalaker(a)in.ibm.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# The following test case is used to verify the ReferencedProfile provider.
+#
+#Ex Command:
+#-----------
+# wbemcli ain -ac Xen_ReferencedProfile 'http://localhost:5988/root/interop:
+# Xen_RegisteredProfile.InstanceID="CIM:DSP1057-VirtualSystem-1.0.0a"'
+#
+# wbemcli ain -ac Xen_ReferencedProfile 'http://localhost:5988/root/interop:
+#
Xen_RegisteredProfile.InstanceID="CIM:DSP1059-GenericDeviceResourceVirtualization-1.0.0"'
+#
+# wbemcli ain -ac Xen_ReferencedProfile 'http://localhost:5988/root/interop:
+#
Xen_RegisteredProfile.InstanceID="CIM:DSP1045-MemoryResourceVirtualization-1.0.0"'
+#
+# wbemcli ain -ac Xen_ReferencedProfile 'http://localhost:5988/root/interop:
+#
Xen_RegisteredProfile.InstanceID="CIM:DSP1081-VirtualSystemMigration-1.0"'
+#
+# Output:
+# -------
+# All the above examples have the following as result.
+#
+# localhost:5988/root/interop:Xen_RegisteredProfile.
+# InstanceID="CIM:DSP1042-SystemVirtualization-1.0.0"
+# ......
+# InstanceID="CIM:DSP1042-SystemVirtualization-1.0.0"
+# RegisteredOrganization=2
+# RegisteredName="System Virtualization"
+# RegisteredVersion="1.0.0"
+# ....
+#
+# Date : 31-03-2008
+import sys
+from XenKvmLib import enumclass
+from XenKvmLib.assoc import Associators
+from CimTest import Globals
+from CimTest.Globals import log_param, logger, CIM_ERROR_ENUMERATE,
CIM_ERROR_ASSOCIATORS
+from CimTest.Globals import do_main
+from XenKvmLib.classes import get_typed_class
+from CimTest.ReturnCodes import FAIL, PASS
+from XenKvmLib.common_util import check_len
+
+sup_types = ['Xen', 'KVM', 'XenFV']
+
+
+def init_list():
+ sys_prof_info = {
+ "InstanceID" :
"CIM:DSP1042-SystemVirtualization-1.0.0",
+ "RegisteredOrganization" : 2,
+ "RegisteredName" : "System
Virtualization",
+ "RegisteredVersion" : "1.0.0"
+ }
+ return sys_prof_info
+
+def print_field_error(fieldname, ret_value, exp_value):
+ logger.error("%s Mismatch", fieldname)
+ logger.error("Returned %s instead of %s", ret_value, exp_value)
+
+def get_proflist():
+ proflist = []
+ status = PASS
+ try:
+ key_list = ["InstanceID"]
+ proflist = enumclass.enumerate(server, eval('enumclass.' +
reg_classname), key_list, virt)
+ status = check_len(reg_classname, proflist, 'Profile',
crit='lt', exp_len=5)
+ except Exception, detail:
+ logger.error(CIM_ERROR_ENUMERATE, reg_classname)
+ logger.error("Exception: %s", detail)
+ status = FAIL
+ if status != PASS:
+ return status, proflist
+ profiles_instid_list = []
+ for profile in proflist:
+ if not ("DSP1042" in profile.InstanceID):
+ profiles_instid_list.append(profile.InstanceID)
+ return status, profiles_instid_list
+
+def verify_ref_assoc_info(assoc_info, sys_prof_info):
+ if assoc_info['InstanceID'] != sys_prof_info['InstanceID']:
+ print_field_error('InstanceID', assoc_info['InstanceID'],
sys_prof_info['InstanceID'])
+ return FAIL
+ if assoc_info['RegisteredOrganization'] !=
sys_prof_info['RegisteredOrganization']:
+ print_field_error('RegisteredOrganization',
assoc_info['RegisteredOrganization'],
+
sys_prof_info['RegisteredOrganization'])
+ return FAIL
+ if assoc_info['RegisteredName'] != sys_prof_info['RegisteredName']:
+ print_field_error('RegisteredName', assoc_info['RegisteredName'],
+ sys_prof_info['RegisteredName'])
+ return FAIL
+ if assoc_info['RegisteredVersion'] !=
sys_prof_info['RegisteredVersion']:
+ print_field_error('RegisteredVersion',
assoc_info['RegisteredVersion'],
+
sys_prof_info['RegisteredVersion'])
+ return FAIL
+ return PASS
+
+
+
+def get_refprof_verify_info(proflist):
+ assoc_info = []
+ assoc_name = get_typed_class(virt, 'ReferencedProfile')
+ sys_prof_info = init_list()
+ for instid in proflist:
+ try:
+ assoc_info = Associators(server, assoc_name, reg_classname, virt, InstanceID
= instid,
+ CreationClassName =
reg_classname)
+ status = check_len(assoc_name, assoc_info, 'SystemVirtualization',
crit='ne', exp_len=1)
+ if status != PASS:
+ break
+ status = verify_ref_assoc_info(assoc_info[0], sys_prof_info)
+ if status != PASS:
+ break
+ except Exception, detail:
+ logger.error(CIM_ERROR_ASSOCIATORS, assoc_name)
+ logger.error("Exception: %s", detail)
+ status = FAIL
+ return status
+
+@do_main(sup_types)
+def main():
+ log_param()
+ options = main.options
+ global virt, server, reg_classname
+ virt = options.virt
+ server = options.ip
+ status = PASS
+ prev_namespace = Globals.CIM_NS
+ Globals.CIM_NS = 'root/interop'
+ reg_classname = get_typed_class(virt, 'RegisteredProfile')
+
+ status, proflist = get_proflist()
+ if status != PASS :
+ Globals.CIM_NS = prev_namespace
+ return status
+
+ status = get_refprof_verify_info(proflist)
+ Globals.CIM_NS = prev_namespace
+ return status
+
+if __name__ == "__main__":
+ sys.exit(main())