[Libvirt-cim] [PATCH] [TEST] Update 32_start_reboot.py to use cim_() functions
Deepti B Kalakeri
deeptik at linux.vnet.ibm.com
Tue Jan 6 09:42:32 UTC 2009
Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1231194787 28800
> # Node ID f317d11f46a29a8141563498076d716153dfc5f2
> # Parent ae40dfa1b8f6e134d200233d2e5b3395855cafa2
> [TEST] Update 32_start_reboot.py to use cim_() functions
>
> Also change cim_state_change() to support enable and requested state parameters.
>
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
>
> diff -r ae40dfa1b8f6 -r f317d11f46a2 suites/libvirt-cim/cimtest/ComputerSystem/32_start_reboot.py
> --- a/suites/libvirt-cim/cimtest/ComputerSystem/32_start_reboot.py Mon Jan 05 14:08:38 2009 -0800
> +++ b/suites/libvirt-cim/cimtest/ComputerSystem/32_start_reboot.py Mon Jan 05 14:33:07 2009 -0800
> @@ -28,26 +28,13 @@
> # The test is considered to be successful if RequestedState Property
> # has a value of 10 when the VS is moved from active to reboot state.
> #
> -# List of Valid state values (Refer to VSP spec doc Table 2 for more)
> -# ---------------------------------
> -# State | Values
> -# ---------------------------------
> -# Defined | 3
> -# Active | 2
> -# Rebooted | 10
> -#
> # Date: 03-03-2008
>
> import sys
> -from VirtLib import utils
> -from time import sleep
> from CimTest.Globals import logger
> from XenKvmLib.const import do_main
> from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC
> -from XenKvmLib.test_doms import destroy_and_undefine_domain
> -from XenKvmLib.common_util import create_using_definesystem, \
> - call_request_state_change, \
> - poll_for_state_change
> +from XenKvmLib.vxml import get_class
>
> sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
>
The following can be removed from the test case since they are not used
in the updated test case.
ACTIVE_STATE = 2
REBOOT_STATE = 10
TIME = "00000000000000.000000:000"
> @@ -64,45 +51,35 @@
> server = options.ip
> virt = options.virt
>
> - tc_scen = [('Start', [ACTIVE_STATE, ACTIVE_STATE]), \
> - ('Reboot', [ACTIVE_STATE, REBOOT_STATE])]
> -
> + action_failed = False
> try:
> # define the vs
> - status = create_using_definesystem(default_dom, server,
> - virt=virt)
> + cxml = get_class(virt)(default_dom)
> + ret = cxml.cim_define(server)
> + if not ret:
> + raise Exception("Failed to define the guest: %s" % default_dom)
> +
> + status = cxml.cim_start(server)
> if status != PASS:
> - logger.error("Unable to define domain '%s' using DefineSystem()",
> - default_dom)
> - return status
> + action_failed = True
>
If we set action_failed here we return XFAIL even for start operation
which is not valid.
Since cim_start() is supported and should not XFAIL. No need to set
action_failed here.
> + raise Exception("Unable start dom '%s'" % default_dom)
>
> - # start, then reboot
> - for action, state in tc_scen:
> - en_state = state[0]
> - rq_state = state[1]
> - status = call_request_state_change(default_dom, server,
> - rq_state, TIME,
> - virt=virt)
> - if status != PASS:
> - logger.error("Unable to '%s' dom '%s' using RequestedStateChange()",
> - action, default_dom)
> - status = XFAIL_RC(bug_libvirt)
> - break
> -
> - status, dom_cs = poll_for_state_change(server, virt, default_dom, en_state,
> - timeout=10)
> -
> - if status != PASS or dom_cs.RequestedState != rq_state:
> - status = FAIL
> - logger.error("Attributes for dom '%s' is not set as expected.",
> - default_dom)
> - break
> + status = cxml.cim_reboot(server)
> + if status != PASS:
> + action_failed = True
> + raise Exception("Unable reboot dom '%s'" % default_dom)
>
> except Exception, detail:
> logger.error("Exception: %s", detail)
> status = FAIL
>
> - destroy_and_undefine_domain(default_dom, server, virt)
> + cxml.cim_destroy(server)
> + cxml.undefine(server)
> +
> + if action_failed:
> + if virt == "KVM" or virt == "LXC":
> + return XFAIL_RC(bug_libvirt)
> +
> return status
>
> if __name__ == "__main__":
> diff -r ae40dfa1b8f6 -r f317d11f46a2 suites/libvirt-cim/lib/XenKvmLib/vxml.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Mon Jan 05 14:08:38 2009 -0800
> +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Mon Jan 05 14:33:07 2009 -0800
> @@ -535,7 +535,7 @@
>
> try:
> cs = GetInstance(server, cs_class, keys)
> - if cs.Name != self.domain_name:
> + if cs is None or cs.Name != self.domain_name:
> raise Exception("Wrong guest instance")
>
> if cs.EnabledState != en_state:
> @@ -553,7 +553,11 @@
>
> return PASS
>
> - def cim_state_change(self, server, req_state, req_timeout, poll_time):
> + def cim_state_change(self, server, req_state, req_timeout, poll_time,
> + en_state=None):
> + if en_state is None:
> + en_state = req_state
> +
> cs = None
> cs_class = get_typed_class(self.virt, 'ComputerSystem')
> keys = { 'Name' : self.domain_name, 'CreationClassName' : cs_class }
> @@ -562,7 +566,7 @@
> return status
>
> try:
> - req_state_change = pywbem.cim_types.Uint16(req_state)
> + req_state_change = pywbem.cim_types.Uint16(req_state)
> time_period = pywbem.cim_types.CIMDateTime(req_timeout)
> cs.RequestStateChange(RequestedState=req_state_change,
> TimeoutPeriod=time_period)
> @@ -574,7 +578,7 @@
> return FAIL
>
> for i in range(1, (poll_time + 1)):
> - status = self.check_guest_state(server, req_state)
> + status = self.check_guest_state(server, en_state, req_state)
> if status == PASS:
> break
>
> @@ -606,7 +610,7 @@
>
> def cim_reboot(self, server, req_time=const.TIME, poll_time=30):
> return self.cim_state_change(server, const.CIM_REBOOT,
> - req_time, poll_time)
> + req_time, poll_time, const.CIM_ENABLE)
>
The test case gives a false positive. The following are the log messages
which means the tc is suppose to fail.
Tue, 06 Jan 2009 01:10:14:TEST LOG:INFO - ====32_start_reboot.py Log====
Tue, 06 Jan 2009 01:10:17:TEST LOG:ERROR - Unable to check guest state
Tue, 06 Jan 2009 01:10:17:TEST LOG:ERROR - Exception: Wrong guest instance
Tue, 06 Jan 2009 01:10:18:TEST LOG:ERROR - Unable to check guest state
Tue, 06 Jan 2009 01:10:18:TEST LOG:ERROR - Exception: EnabledState is 9,
expected 2.
But, the test case gives a PASS message on the console.
> def cim_reset(self, server, req_time=const.TIME, poll_time=30):
> return self.cim_state_change(server, const.CIM_RESET,
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>
More information about the Libvirt-cim
mailing list