# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1233740067 28800
# Node ID 5e1c6b862cd74b56451397df81818d7afea68ff2
# Parent 912b7615d48c8303fd3daa6e55669c6d66af23e4
[TEST] Fixing VSMS/09_procrasd_persist.py tc.
1) Added description to the tc.
2) Removed unnecessary import stmts
3) Changed the tc to use cim_define()
4) Added the check to verify the VirtualQuantity
5) Aligned the tc to fit in 80 columns
Tested for KVM/Xen/LXC with current sources, KVM with F9 rpm.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r 912b7615d48c -r 5e1c6b862cd7
suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Mon
Feb 02 04:45:23 2009 -0800
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/09_procrasd_persist.py Wed
Feb 04 01:34:27 2009 -0800
@@ -19,50 +19,68 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+# Purpose:
+# Verify DefineSystem() properly uses the ProcRASD setting passed in
+# as part of the ResourceSeting property.
+#
+# Steps:
+# 1) Get the default rasds
+# 2) Set the ProcRASD VirtualQuantity, Weight, Limit, InstanceID values
+# 3) Define the guest using the configuration
+# 4) Verify the proc settings of the guest
+#
import sys
-import pywbem
-from XenKvmLib.common_util import call_request_state_change, \
- poll_for_state_change
-from XenKvmLib import vsms
+from pywbem.cim_types import Uint64, Uint32
+from XenKvmLib.vxml import get_class
from XenKvmLib.enumclass import GetInstance
-from XenKvmLib.common_util import get_typed_class
-from VirtLib import utils
+from XenKvmLib.classes import get_typed_class, inst_to_mof
from CimTest.Globals import logger
from XenKvmLib.const import do_main
from CimTest.ReturnCodes import FAIL, PASS
-from XenKvmLib.test_doms import destroy_and_undefine_domain
+from XenKvmLib.rasd import get_default_rasds
sup_types = ['Xen', 'XenFV', 'KVM']
-default_dom = 'rstest_domain'
+test_dom = 'procrasd_persist'
-nvcpu = 2
+nvcpu = 3
weight = 124
-limit = 256
+limit = 512
-REQUESTED_STATE = 2
-TIME = "00000000000000.000000:000"
+def setup_guest(ip, virt, cxml, prasd_cn):
+ rasds = get_default_rasds(ip, virt)
+ rasd_list= { prasd_cn : None }
+
+ for rasd in rasds:
+ if rasd.classname == prasd_cn:
+ rasd['InstanceID'] = '%s/proc' %test_dom
+ rasd['VirtualQuantity'] = Uint64(nvcpu)
+ rasd['Weight'] = Uint32(weight)
+ rasd['Limit'] = Uint64(limit)
+ rasd_list[prasd_cn] = inst_to_mof(rasd)
-def setup_rasd_mof(ip, vtype):
- vssd, rasd = vsms.default_vssd_rasd_str(default_dom, virt=vtype)
+ if rasd_list[prasd_cn] is None:
+ logger.error("Unable to set template ProcRASD")
+ return FAIL
- class_pasd = vsms.get_pasd_class(vtype)
- proc_inst = class_pasd(default_dom, nvcpu, weight, limit)
- proc_mof = proc_inst.mof()
+ cxml.set_res_settings(rasd_list)
+ ret = cxml.cim_define(ip)
+ if not ret:
+ logger.error("Unable to define %s ", test_dom)
+ return FAIL
- for i in range(len(rasd)):
- if "ProcResourceAllocationSettingData" in rasd[i]:
- rasd[i] = proc_mof
- return PASS, vssd, rasd
+ return PASS
- return FAIL, vssd, rasd
-
-def check_proc_sched(server, virt):
+def check_proc_sched(server, virt, cn_name):
try:
- key_list = {"InstanceID" : '%s/proc' %default_dom}
- cn_name = get_typed_class(virt, 'ProcResourceAllocationSettingData')
+ key_list = {"InstanceID" : '%s/proc' %test_dom}
proc = GetInstance(server, cn_name, key_list)
+ if proc.VirtualQuantity != nvcpu:
+ logger.error("VirtualQuantity is %i, expected %i",
+ proc.VirtualQuantity, nvcpu)
+ return FAIL
+
if proc.Limit != limit:
logger.error("Limit is %i, expected %i", proc.Limit, limit)
return FAIL
@@ -79,32 +97,20 @@ def check_proc_sched(server, virt):
@do_main(sup_types)
def main():
- options = main.options
+ options = main.options
+ virt = options.virt
+ server = options.ip
+
+ cxml = get_class(virt)(test_dom)
+ prasd_cn = get_typed_class(virt, "ProcResourceAllocationSettingData")
+ try:
+ status = setup_guest(server, virt, cxml, prasd_cn)
+ if status != PASS:
+ return status
- status, vssd, rasd = setup_rasd_mof(options.ip, options.virt)
- if status != PASS:
- return status
-
- try:
- service = vsms.get_vsms_class(options.virt)(options.ip)
- service.DefineSystem(SystemSettings=vssd,
- ResourceSettings=rasd,
- ReferenceConfiguration=' ')
-
- rc = call_request_state_change(default_dom, options.ip,
- REQUESTED_STATE, TIME, options.virt)
- if rc != 0:
- raise Exception("Unable to start %s using RequestedStateChange()"
%
- default_dom)
-
- status, dom_cs = poll_for_state_change(options.ip, options.virt,
- default_dom, REQUESTED_STATE)
+ status = check_proc_sched(server, virt, prasd_cn)
if status != PASS:
- raise Exception("%s didn't change state as expected" %
default_dom)
-
- status = check_proc_sched(options.ip, options.virt)
- if status != PASS:
- raise Exception("%s CPU scheduling not set properly", default_dom)
+ raise Exception("'%s' CPU scheduling not set properly" %
test_dom)
status = PASS
@@ -112,8 +118,7 @@ def main():
logger.error("Exception: details %s", details)
status = FAIL
- destroy_and_undefine_domain(default_dom, options.ip, options.virt)
-
+# cxml.undefine(server)
return status
if __name__ == "__main__":