[Libvirt-cim] [PATCH] [TEST] #3 Fix CS 22 to use providers instead of virsh

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Mon Jul 21 17:36:35 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1216661611 25200
# Node ID abcd4c8a873656b6f12c4416832d185f8c9eb151
# Parent  18d3c235f0c893f934aaf61f9a1de22ed6f3dd60
[TEST] #3 Fix CS 22 to use providers instead of virsh.

This test was defining a guest with virsh and then suspending it with virsh, which doesn't touch the providers in anyway.  Now the test calls DefineSystem() and RequestStateChange().

Updates from 1 to 2:
  -Add check to verify guest is the expected state after the RequestStateChange() call.
  -Create a network pool because the VSMS provider requires a network pool to exist in order to create a guest.

Updates from 2 to 3:
  -Remove destroy_netpool() if create_netpool_conf() fails.  This is not needed.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 18d3c235f0c8 -r abcd4c8a8736 suites/libvirt-cim/cimtest/ComputerSystem/22_define_suspend.py
--- a/suites/libvirt-cim/cimtest/ComputerSystem/22_define_suspend.py	Mon Jul 21 09:51:33 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ComputerSystem/22_define_suspend.py	Mon Jul 21 10:33:31 2008 -0700
@@ -32,54 +32,71 @@
 from XenKvmLib import computersystem
 from VirtLib import utils
 from XenKvmLib import vxml
-from XenKvmLib.test_doms import destroy_and_undefine_all
-from CimTest.Globals import do_main
-from CimTest import Globals
+from XenKvmLib.test_doms import destroy_and_undefine_domain
+from CimTest.Globals import do_main, logger
 from CimTest.ReturnCodes import PASS, FAIL
+from XenKvmLib.common_util import create_using_definesystem, \
+                                  call_request_state_change, get_cs_instance, \
+                                  create_netpool_conf, destroy_netpool
 
 sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
 test_dom = "domgst"
 
+DEFINE_STATE = 3
+SUSPND_STATE = 9
+TIME        = "00000000000000.000000:000"
+
+def chk_state(domain_name, ip, en_state, virt):
+    rc, cs = get_cs_instance(domain_name, ip, virt)
+    if rc != 0:
+        return rc
+
+    if cs.EnabledState != en_state:
+        logger.error("EnabledState should be %d not %d",
+                     en_state, cs.EnabledState)
+        return FAIL
+
+    return PASS
+
 @do_main(sup_types)
 def main():
     options = main.options
-    status = FAIL
-    
-    cxml = vxml.get_class(options.virt)(test_dom)
 
-#define VS
+    status, test_network = create_netpool_conf(options.ip, options.virt)
+    if status != PASS:
+        return FAIL
+
     try:
-        ret = cxml.define(options.ip)
-        if not ret:
-            Globals.logger.error(Globals.VIRSH_ERROR_DEFINE % test_dom)
-            return status
-        
-        cs = computersystem.get_cs_class(options.virt)(options.ip, test_dom)
-        if not (cs.Name == test_dom) :
-            Globals.logger.error("Error: VS %s not found" % test_dom)
-            cxml.undefine(options.ip)
+        # define the vs
+        status = create_using_definesystem(test_dom, options.ip,
+                                           virt=options.virt)
+        if status != PASS:
+            logger.error("Unable to define %s using DefineSystem()" % test_dom)
+            destroy_netpool(options.ip, options.virt, test_network)
             return status
 
-    except Exception, detail:
-        Globals.logger.error("Errors: %s" % detail)
+        # suspend the vs
+        status = call_request_state_change(test_dom, options.ip, SUSPND_STATE,
+                                           TIME, virt=options.virt)
+        if status != PASS:
+            logger.info("Suspending defined %s failed, as expected" % test_dom)
+            status = PASS
 
-#Suspend the defined VS
-    
-    try:
-        ret = cxml.run_virsh_cmd(options.ip, "suspend")
-        if not ret :
-            Globals.logger.info("Suspending defined VS %s failed, as expected" \
-% test_dom)
-            status = PASS
+            status = chk_state(test_dom, options.ip, DEFINE_STATE, options.virt)
+            if status != PASS:
+                logger.error("%s not in defined state as expected." % test_dom)
+                status = FAIL 
+            
         else :
-            Globals.logger.info("Error: Suspending defined VS %s should not \
-have been allowed" % test_dom)
+            logger.error("Suspending defined %s should have failed" % test_dom)
             status = FAIL 
 
     except Exception, detail:
-        Globals.logger.error("Error: %s" % detail)
+        logger.error("Error: %s" % detail)
+        status = FAIL 
 
-    ret = cxml.undefine(options.ip)
+    destroy_netpool(options.ip, options.virt, test_network)
+    destroy_and_undefine_domain(test_dom, options.ip, options.virt)
     return status
 
 if __name__ == "__main__":




More information about the Libvirt-cim mailing list