[Libvirt-cim] [PATCH] [TEST] Fixing VSMS/09_procrasd_persist.py tc

Deepti B. Kalakeri deeptik at linux.vnet.ibm.com
Wed Feb 4 09:34:37 UTC 2009


# HG changeset patch
# User Deepti B. Kalakeri <deeptik at 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 at 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__":




More information about the Libvirt-cim mailing list