[PATCH] [TEST] Modify CSI test to support modified and deleted indications
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1217543970 25200
# Node ID a0f1042dd8dd0b685aa755e1cedbbd7cdd71bbfc
# Parent 837943c970641071e55637386d9ac30df5d41e4b
[TEST] Modify CSI test to support modified and deleted indications.
This may fail on KVM with the following error message: "CIM_ERR_FAILED: Invalid state transition." Will follow up on this issue.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r 837943c97064 -r a0f1042dd8dd suites/libvirt-cim/cimtest/ComputerSystemIndication/01_created_indication.py
--- a/suites/libvirt-cim/cimtest/ComputerSystemIndication/01_created_indication.py Thu Jul 31 15:35:35 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ComputerSystemIndication/01_created_indication.py Thu Jul 31 15:39:30 2008 -0700
@@ -24,91 +24,163 @@
import os
import signal
import time
+from pywbem.cim_obj import CIMInstanceName
from CimTest.Globals import logger
from CimTest.Globals import do_main
from CimTest.ReturnCodes import PASS, FAIL
-from XenKvmLib.common_util import create_using_definesystem
-from XenKvmLib.test_doms import undefine_test_domain
+from XenKvmLib.common_util import create_using_definesystem, \
+ call_request_state_change
+from XenKvmLib.test_doms import destroy_and_undefine_domain
from XenKvmLib.classes import get_typed_class
from XenKvmLib.indication_tester import CIMIndicationSubscription
from XenKvmLib.vxml import set_default
+from XenKvmLib.vsms import get_vsms_class
SUPPORTED_TYPES = ['Xen', 'XenFV', 'KVM']
test_dom = "domU"
+REQ_STATE = 2
+TIME = "00000000000000.000000:000"
+
+def sub_ind(ip, virt):
+ dict = set_default(ip)
+ ind_names = {"define" : 'ComputerSystemCreatedIndication',
+ "start" : 'ComputerSystemModifiedIndication',
+ "destroy" : 'ComputerSystemDeletedIndication'
+ }
+
+ sub_list = {}
+ port = 5
+
+ for ind, iname in ind_names.iteritems():
+ ind_name = get_typed_class(virt, iname)
+
+ sub_name = "Test%s" % ind_name
+ port += 1
+
+ sub = CIMIndicationSubscription(sub_name, ind_name,
+ dict['default_ns'],
+ dict['default_print_ind'],
+ dict['default_sysname'],
+ port)
+ sub.subscribe(dict['default_url'], dict['default_auth'])
+ logger.info("Watching for %s" % iname)
+ ind_names[ind] = ind_name
+ sub_list[ind] = sub
+
+ return sub_list, ind_names, dict
+
+def gen_ind(test_dom, ip, vtype, ind):
+ if ind == "define":
+ return create_using_definesystem(test_dom, ip, virt=vtype)
+
+ elif ind == "start":
+ rc = call_request_state_change(test_dom, ip, REQ_STATE, TIME, vtype)
+ if rc != 0:
+ logger.error("Failed to start domain: %s" % test_dom)
+ return FAIL
+ return PASS
+
+ elif ind == "destroy":
+ service = get_vsms_class(vtype)(ip)
+ try:
+ classname = get_typed_class(vtype, 'ComputerSystem')
+ cs_ref = CIMInstanceName(classname, keybindings = {
+ 'Name':test_dom,
+ 'CreationClassName':classname})
+ service.DestroySystem(AffectedSystem=cs_ref)
+ except Exception, details:
+ logger.error('Unknow exception happened')
+ logger.error(details)
+ return FAIL
+ return PASS
+
+ return FAIL
+
+def handle_request(sub, ind_name):
+ sub.server.handle_request()
+ if len(sub.server.indications) == 0:
+ logger.error("No valid indications received")
+ return FAIL
+ elif str(sub.server.indications[0]) != ind_name:
+ logger.error("Received indication %s instead of %s" % \
+ (str(sub.server.indications[0])), ind_name)
+ return FAIL
+
+ return PASS
+
+def poll_for_ind(pid):
+ for i in range(0, 20):
+ pw = os.waitpid(pid, os.WNOHANG)
+
+ # If pid exits, waitpid returns [pid, return_code]
+ # If pid is still running, waitpid returns [0, 0]
+ # Only return a success if waitpid returns the expected pid
+ # and the return code is 0.
+ if pw[0] == pid and pw[1] == 0:
+ logger.info("Great, got indication successfuly")
+ status = PASS
+ break
+ elif pw[1] == 0 and i < 19:
+ if i % 10 == 0:
+ logger.info("In child process, waiting for indication")
+ time.sleep(1)
+ else:
+ # Time is up and waitpid never returned the expected pid
+ if pw[0] != pid:
+ logger.error("Waited too long for indication")
+ os.kill(pid, signal.SIGKILL)
+ else:
+ logger.error("Received indication error: %d" % pw[1])
+
+ status = FAIL
+ break
+
+ return status
@do_main(SUPPORTED_TYPES)
def main():
options = main.options
status = FAIL
- dict = set_default(options.ip)
- indication_name = get_typed_class(options.virt,
- 'ComputerSystemCreatedIndication')
-
- sub = CIMIndicationSubscription(dict['default_name'], indication_name,
- dict['default_ns'],
- dict['default_print_ind'],
- dict['default_sysname'])
- sub.subscribe(dict['default_url'], dict['default_auth'])
- logger.info("Watching for %s" % indication_name)
-
- try:
- pid = os.fork()
- if pid == 0:
- sub.server.handle_request()
- if len(sub.server.indications) == 0:
- logger.error("No valid indications received")
- os._exit(1)
- elif str(sub.server.indications[0]) != indication_name:
- logger.error("Received indication %s instead of %s" % \
- (indication_name, str(sub.server.indications[0])))
- os._exit(2)
+ sub_list, ind_names, dict = sub_ind(options.ip, options.virt)
+
+ ind_list = ["define", "start", "destroy"]
+
+ for ind in ind_list:
+ sub = sub_list[ind]
+ ind_name = ind_names[ind]
+
+ try:
+ pid = os.fork()
+ if pid == 0:
+ status = handle_request(sub, ind_name)
+ if status != PASS:
+ os._exit(1)
+
+ os._exit(0)
else:
- os._exit(0)
- else:
- status = create_using_definesystem(test_dom, options.ip, None, None,
- options.virt)
- if status != PASS:
- sub.unsubscribe(dict['default_auth'])
- logger.info("Cancelling subscription for %s" % indication_name)
- os.kill(pid, signal.SIGKILL)
- return status
+ try:
+ status = gen_ind(test_dom, options.ip, options.virt, ind)
+ if status != PASS:
+ os.kill(pid, signal.SIGKILL)
+ return FAIL
- status = FAIL
- for i in range(0,100):
- pw = os.waitpid(pid, os.WNOHANG)
+ status = poll_for_ind(pid)
+ except Exception, details:
+ logger.error("Exception: %s" % details)
+ os.kill(pid, signal.SIGKILL)
+ return FAIL
- # If pid exits, waitpid returns [pid, return_code]
- # If pid is still running, waitpid returns [0, 0]
- # Only return a success if waitpid returns the expected pid
- # and the return code is 0.
- if pw[0] == pid and pw[1] == 0:
- logger.info("Great, got indication successfuly")
- status = PASS
- break
- elif pw[1] == 0 and i < 99:
- if i % 10 == 0:
- logger.info("In child process, waiting for indication")
- time.sleep(1)
- else:
- status = FAIL
-
- # Time is up and waitpid never returned the expected pid
- if pw[0] != pid:
- logger.error("Waited too long for indication")
- os.kill(pid, signal.SIGKILL)
- else:
- logger.error("Received indication error: %d" % pw[1])
- break
+ except Exception, details:
+ logger.error("Exception: %s" % details)
+ return FAIL
- except Exception, details:
- logger.error("Unknown exception happened")
- logger.error(details)
-
- sub.unsubscribe(dict['default_auth'])
- logger.info("Cancelling subscription for %s" % indication_name)
- undefine_test_domain(test_dom, options.ip, options.virt)
+ for ind, sub in sub_list.iteritems():
+ sub.unsubscribe(dict['default_auth'])
+ logger.info("Cancelling subscription for %s" % ind_names[ind])
+
+ destroy_and_undefine_domain(test_dom, options.ip, options.virt)
return status
16 years, 3 months
[PATCH] [TEST] Add test for DiskRASD size parameter
by Dan Smith
# HG changeset patch
# User Dan Smith <danms(a)us.ibm.com>
# Date 1217005489 25200
# Node ID 3c80ea156a3c45bc321f9c465ba7692c011ab2e0
# Parent 2972728363defd7c9a7683ebfa85a4dfc8225e32
[TEST] Add test for DiskRASD size parameter
Signed-off-by: Dan Smith <danms(a)us.ibm.com>
diff -r 2972728363de -r 3c80ea156a3c suites/libvirt-cim/cimtest/RASD/04_disk_rasd_size.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/suites/libvirt-cim/cimtest/RASD/04_disk_rasd_size.py Fri Jul 25 10:04:49 2008 -0700
@@ -0,0 +1,127 @@
+#!/usr/bin/python
+#
+# Copyright 2008 IBM Corp.
+#
+# Authors:
+# Dan Smith <danms(a)us.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
+#
+
+sup_types = ['Xen', 'XenFV', 'KVM']
+default_dom = "diskrasd_test"
+
+import sys
+
+from CimTest.ReturnCodes import FAIL, PASS
+from CimTest.Globals import do_main
+from CimTest.Globals import logger
+from VirtLib import utils
+from XenKvmLib.test_doms import undefine_test_domain
+from XenKvmLib.common_util import create_using_definesystem
+from XenKvmLib import vsms
+from XenKvmLib import enumclass
+
+def make_image(ip, size):
+ s, fn = utils.run_remote(ip, "mktemp")
+ if s != 0:
+ return None
+
+ s, _ = utils.run_remote(ip,
+ "dd if=/dev/zero of=%s bs=1 count=%i" % (fn, size))
+ if s != 0:
+ return None
+
+ return fn
+
+def kill_image(ip, name):
+ s, _ = utils.run_remote(ip, "rm -f %s" % name)
+
+ return s == 0
+
+def check_rasd_size(rasd, size):
+ if rasd["AllocationUnits"] != "Bytes":
+ logger.error("AllocationUnits != Bytes?")
+ return FAIL
+
+ try:
+ cim_size = int(rasd["VirtualQuantity"])
+ except Exception, e:
+ logger.error("Failed to get DiskRASD size: %s" % e)
+ return FAIL
+
+ if cim_size != size:
+ logger.error("CIM reports %i bytes, but should be %i bytes" % (cim_size,
+ size))
+ return FAIL
+ else:
+ logger.info("Verified %i bytes" % cim_size)
+ return PASS
+
+def test_rasd(options, temp, test_size):
+ vssd_class = vsms.get_vssd_class(options.virt)
+ vssd = vssd_class(name=default_dom, virt=options.virt)
+
+ drasd_class = vsms.get_dasd_class(options.virt)
+ drasd = drasd_class("hda", temp, default_dom)
+
+ mrasd_class = vsms.get_masd_class(options.virt)
+ mrasd = mrasd_class(32, default_dom)
+
+ params = {
+ "vssd" : vssd.mof(),
+ "rasd" : [drasd.mof(), mrasd.mof()]
+ }
+
+ create_using_definesystem(default_dom,
+ options.ip,
+ params=params,
+ virt=options.virt)
+
+ rasds = enumclass.enumerate_inst(options.ip, drasd_class, options.virt)
+
+ status = FAIL
+ for rasd in rasds:
+ if rasd["Address"] == temp:
+ status = check_rasd_size(rasd, test_size)
+ break
+
+ return status
+
+@do_main(sup_types)
+def main():
+ options = main.options
+
+ test_size = 123 << 10
+
+ temp = make_image(options.ip, test_size)
+ if not temp:
+ logger.error("Unable to create a temporary disk image")
+ return FAIL
+
+ logger.info("Created temp disk %s of size %i bytes" % (temp, test_size))
+
+ try:
+ status = test_rasd(options, temp, test_size)
+ except Exception, e:
+ logger.error("Failed to test RASD: %s" % e)
+
+ undefine_test_domain(default_dom, options.ip, options.virt)
+ kill_image(options.ip, temp)
+
+ return status
+
+if __name__ == "__main__":
+ sys.exit(main())
16 years, 3 months
[PATCH] [TEST] Make related indication_test.py changes
by Kaitlin Rupert
# HG changeset patch
# User Kaitlin Rupert <karupert(a)us.ibm.com>
# Date 1217543735 25200
# Node ID 837943c970641071e55637386d9ac30df5d41e4b
# Parent b53b5a20e8f561366ff90f2156ad6d26d90b5d1b
[TEST] Make related indication_test.py changes.
The version of indication_tester.py in libcmpiutil has changed, so the version in libvirt needs to change as well.
Signed-off-by: Kaitlin Rupert <karupert(a)us.ibm.com>
diff -r b53b5a20e8f5 -r 837943c97064 suites/libvirt-cim/lib/XenKvmLib/indication_tester.py
--- a/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py Thu Jul 31 15:17:28 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py Thu Jul 31 15:35:35 2008 -0700
@@ -169,7 +169,7 @@
</CIM>
""" % (sysname, name, sysname, name)
-def delete_inst_xml(name, type, sysname):
+def delete_inst_xml(name, type, sysname, inst_name):
return """
<?xml version="1.0" encoding="utf-8"?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
@@ -192,7 +192,7 @@
<KEYVALUE>CIM_Indication%s</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="Name">
- <KEYVALUE>%s%s</KEYVALUE>
+ <KEYVALUE>%s</KEYVALUE>
</KEYBINDING>
</INSTANCENAME>
</IPARAMVALUE>
@@ -200,7 +200,7 @@
</SIMPLEREQ>
</MESSAGE>
</CIM>;
- """ % (type, sysname, type, name, type);
+ """ % (type, sysname, type, inst_name);
def delete_sub_xml(name, sysname):
return """
@@ -298,15 +298,16 @@
self.server.indications.append(indication)
class CIMIndicationSubscription:
- def __init__(self, name, typ, ns, print_ind, sysname):
+ def __init__(self, name, typ, ns, print_ind, sysname, port=0):
self.name = name
self.type = typ
self.ns = ns
self.sysname = sysname
- self.server = BaseHTTPServer.HTTPServer(('', 8000), CIMSocketHandler)
+ self.port = 8000 + port
+ self.server = BaseHTTPServer.HTTPServer(('', self.port),
+ CIMSocketHandler)
self.server.print_ind = print_ind
- self.port = 8000
self.server.indications = []
self.filter_xml = filter_xml(name, typ, ns, sysname)
@@ -325,7 +326,7 @@
conn.request("POST", "/cimom", body, headers)
resp = conn.getresponse()
if not resp.getheader("content-length"):
- raise Exception("Request Failed: %d %s" %
+ raise Exception("Request Failed: %d %s" %
(resp.status, resp.reason))
resp.read()
@@ -355,10 +356,12 @@
xml = delete_sub_xml(self.name, self.sysname)
self.__do_cimpost(self.conn, xml,
"DeleteInstance", auth_hdr)
- xml = delete_inst_xml(self.name, "Handler", self.sysname)
+ xml = delete_inst_xml(self.name, "HandlerCIMXML", self.sysname,
+ "%sHandler" % self.name)
self.__do_cimpost(self.conn, xml,
"DeleteInstance", auth_hdr)
- xml = delete_inst_xml(self.name, "Filter", self.sysname)
+ xml = delete_inst_xml(self.name, "Filter", self.sysname,
+ "%sFilter" % self.name)
self.__do_cimpost(self.conn, xml,
"DeleteInstance", auth_hdr)
@@ -366,8 +369,9 @@
filter_str = filter_xml(name, typ, ns, sysname)
handler_str = handler_xml(name, 8000, sysname)
subscript_str = subscription_xml(name, sysname)
- del_filter_str = delete_inst_xml(name, "Filter", sysname)
- del_handler_str = delete_inst_xml(name, "Handler", sysname)
+ del_filter_str = delete_inst_xml(name, "Filter", sysname, "%sFilter" % name)
+ del_handler_str = delete_inst_xml(name, "HandlerCIMXML", sysname,
+ "%sHandler" % name)
del_subscript_str = delete_sub_xml(name, sysname)
print "CreateFilter:\n%s\n" % filter_str
@@ -398,6 +402,8 @@
help="HTTP Auth username")
parser.add_option("-P", "--pass", dest="password", default=None,
help="HTTP Auth password")
+ parser.add_option("--port", dest="port", default=0, type=int,
+ help="Port increment value (server default: 8000)")
(options, args) = parser.parse_args()
@@ -413,14 +419,14 @@
if ":" in options.url:
(sysname, port) = options.url.split(":")
else:
- sysname = url
+ sysname = options.url
if options.dump:
dump_xml(options.name, args[0], options.ns, sysname)
sys.exit(0)
sub = CIMIndicationSubscription(options.name, args[0], options.ns,
- options.print_ind, sysname)
+ options.print_ind, sysname, options.port)
sub.subscribe(options.url, auth)
print "Watching for %s" % args[0]
16 years, 3 months
[PATCH] [TEST] #2 Rewrite get_pool_details() to return less valeus in SettingsDefineCapabilities.01
by yunguol@cn.ibm.com
# HG changeset patch
# User Guolian Yun <yunguol(a)cn.ibm.com>
# Date 1217477534 25200
# Node ID 780f9b713dcae42c3faf0d73580c51c4c6d4a1e1
# Parent fc92abb3ae7cab32dec6718412be1c0d88874a4a
[TEST] #2 Rewrite get_pool_details() to return less valeus in SettingsDefineCapabilities.01
Signed-off-by: Guolian Yun <yunguol(a)cn.ibm.com>
diff -r fc92abb3ae7c -r 780f9b713dca suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py
--- a/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py Wed Jul 30 06:55:31 2008 -0700
+++ b/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py Wed Jul 30 21:12:14 2008 -0700
@@ -63,7 +63,7 @@ CIM_ERROR_GETINSTANCE, CIM_ERROR_ASSOCIA
CIM_ERROR_GETINSTANCE, CIM_ERROR_ASSOCIATORS
from XenKvmLib.classes import get_typed_class
from XenKvmLib.common_util import cleanup_restore, create_diskpool_conf, \
-create_netpool_conf
+create_netpool_conf, destroy_netpool
from XenKvmLib.common_util import print_field_error
platform_sup = ['Xen', 'KVM', 'XenFV', 'LXC']
@@ -130,27 +130,28 @@ def get_pool_info(virt, server, devid, p
def get_pool_details(virt, server):
dpool = npool = mpool = ppool = None
+ pool_set = [dpool, npool, mpool, ppool]
try :
status, diskid = create_diskpool_conf(server, virt)
if status != PASS:
- return status, dpool, npool, mpool, ppool
+ return status, pool_set, None
dpool = get_pool_info(virt, server, diskid, poolname="DiskPool")
mpool = get_pool_info(virt, server, memid, poolname= "MemoryPool")
ppool = get_pool_info(virt, server, procid, poolname= "ProcessorPool")
-
+ pool_set = [dpool, npool, mpool, ppool]
status, test_network = create_netpool_conf(server, virt)
if status != PASS:
- return status, dpool, npool, mpool, ppool
+ return status, pool_set, None
netid = "%s/%s" % ("NetworkPool", test_network)
npool = get_pool_info(virt, server, netid, poolname= "NetworkPool")
-
+ pool_set = [dpool, npool, mpool, ppool]
except Exception, detail:
logger.error("Exception: %s", detail)
- return FAIL, dpool, npool, mpool, ppool
+ return FAIL, pool_set, test_network
- return PASS, dpool, npool, mpool, ppool
+ return PASS, pool_set, test_network
def verify_rasd_fields(loop, assoc_info, cllist, rtype, rangelist):
for inst in assoc_info:
@@ -200,14 +201,17 @@ def main():
server = options.ip
virt = options.virt
- status, dpool, npool, mpool, ppool = get_pool_details(virt, server)
- if status != PASS or dpool.InstanceID == None or mpool.InstanceID == None \
- or npool.InstanceID == None or ppool.InstanceID == None:
- cleanup_restore(server, virt)
- return FAIL
+ status, pool_set, test_network = get_pool_details(virt, server)
+ for i in range(0, len(pool_set)):
+ if status != PASS or pool_set[i].InstanceID == None:
+ cleanup_restore(server, virt)
+ destroy_netpool(server, virt, test_network)
+ return FAIL
- status = verify_sdc_with_ac(virt, server, dpool, npool, mpool, ppool)
+ status = verify_sdc_with_ac(virt, server, pool_set[0], pool_set[1],
+ pool_set[2], pool_set[3])
cleanup_restore(server, virt)
+ destroy_netpool(server, virt, test_network)
return status
if __name__ == "__main__":
16 years, 3 months
Re: Need CS state transition related info.
by Deepti B Kalakeri
Kaitlin Rupert wrote:
> Deepti B Kalakeri wrote:
>>
>> Hi,
>>
>> I have following query regarding the CS provider state transition.
>>
>> 1)
>>
>> The following tc 32_start_reboot.py, which tries to use
>> DefineSystem() to first define the VS and then change the state from
>> Start to Reboot, fails for KVM with the following error.
>>
>> ComputerSystem - 32_start_reboot.py: FAIL
>> ERROR - Exception: (1, u'CIM_ERR_FAILED: Domain Operation Failed')
>> ERROR - Unable to Reboot dom test_domain using RequestedStateChange()
>> InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Domain Operation
>> Failed
>>
>> tc cannot be used to support KVM, because of the following debug
>> statement
>>
>> *Virt_ComputerSystem.c(807): Reboot domain
>> libvir: error : this function is not supported by the hypervisor:
>> virDomainReboot*
>> *
>> *Is my analysis correct?
>
> What version of libvirt is this with? For KVM, we are more concerned
> with newer version of libvirt. So this might be something we can get
> fixed in libvirt.
The previous version of the libvirt was 0.4.2. I updated the libvirt
yesterday on my machine to 0.4.4.
I still see the same error.
Virt_ComputerSystem.c(807): Reboot domain
libvir: error : this function is not supported by the hypervisor:
virDomainReboot
>
>>
>> 2)
>> According to the state transition diagram in the DMTF VSP doc (Pg:
>> 20) implies that a state transition from *Suspend* to *Active(through
>> reboot) *is valid,
>> but our provider returns an *exception. *What is the correct state
>> transition to be considered?
>> We can use 33_suspend_reboot.py tc to verify the same.
>
> This sounds like a bug.Can you capture the exception you're seeing and
> send it to the external mailing list? I haven't had a chance today to
> look into it.
>
Here is the provider exception that is thrown when the VS state is
changed from suspend to reboot.
ERROR - DETAILS IS (1, u'CIM_ERR_FAILED: Domain not running')
InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Domain not running
Thanks and Regards,
Deepti.
> Thanks!
>
16 years, 3 months
[PATCH 0 of 6] CS related tc changes.
by Deepti B. Kalakeri
1) Fixed 40_RSC_start.py
2) Supported KVM in 23_suspend_suspend.py, 33_suspend_reboot.py, 35_start_reset.py.
3) Updated 32_start_reboot.py.
16 years, 3 months
[PATCH 0 of 2] Make ComputerSystem.EnabledState aware of snapshot
by Dan Smith
This makes the state of a guest appear to be suspended if there is a snapshot
for the domain and the domain is offline. This also makes sure to prevent
the user from starting the domain when such a snapshot exists, to force them
to either apply or delete the snapshot.
16 years, 3 months
CimTest Report on XenFV 31-07-2008
by Deepti B Kalakeri
======================================
CIM Test Report for XenFV
======================================
Distro : RHEL 5.2 Beta
Kernel : 2.6.18-88.el5xen
Xen version : 3.1.2-88.el5
Libvirt : libvirt-0.3.3-7.el5
CIMOM : pegasus
PyWBEM : pywbem-3.14
CIM Schema : cimv216Experimental
LibCMPIutil : 83
LibVirtCIM : 654
CIMTEST : 270
======================================
PASS : 112
TOTAL FAILED : 12 [6 test cases passed when ran manually]
ACTUAL FAILED : 6
XFAIL : 2
SKIP : 7
-------------------
Total : 133
======================================
List of tc that are failing:
ComputerSystem - 06_paused_active_suspend.py: FAIL
Will send fix for the same.
ComputerSystem - 23_suspend_suspend.py: FAIL
ComputerSystem - 32_start_reboot.py: FAIL
ComputerSystem - 33_suspend_reboot.py: FAIL
ComputerSystem - 35_start_reset.py: FAIL
The fix for the above is under review.
VirtualSystemManagementService - 08_modifyresource.py: FAIL
Unable to get vcpuinfo from virsh, using XML values
INFO - good status for vcpu
ERROR - Got 0, exp 262144.
ERROR - Error invoking ModifyRS: mod_mem_res
ERROR - Error changing rs for mem
Fixing AllocationUnits = "MegaBytes" in vsms.py will fix this.
Fix sent for the same.
The following tc passed when run manually:
LogicalDisk - 02_nodevs.py: FAIL
LogicalDisk - 03_ld_gi_errs.py: FAIL
Memory - 01_memory.py: FAIL
NetworkPort - 01_netport.py: FAIL
VSSD - 04_vssd_to_rasd.py: FAIL
VirtualSystemManagementService - 09_procrasd_persist.py: FAIL
Please find the complete report attached with the mail.
Thanks and Regards,
Deepti.
Starting test suite: libvirt-cim
Cleaned log files.
Testing XenFV hypervisor
AllocationCapabilities - 01_enum.py: PASS
AllocationCapabilities - 02_alloccap_gi_errs.py: PASS
ComputerSystem - 01_enum.py: PASS
ComputerSystem - 02_nosystems.py: SKIP
ComputerSystem - 03_defineVS.py: PASS
ComputerSystem - 04_defineStartVS.py: PASS
ComputerSystem - 05_activate_defined_start.py: XFAIL Bug: 00002
ComputerSystem - 06_paused_active_suspend.py: FAIL
InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Domain not running
ComputerSystem - 22_define_suspend.py: PASS
ComputerSystem - 23_suspend_suspend.py: FAIL
ComputerSystem - 27_define_suspend_errs.py: PASS
ComputerSystem - 32_start_reboot.py: FAIL
ComputerSystem - 33_suspend_reboot.py: FAIL
ComputerSystem - 35_start_reset.py: FAIL
ComputerSystem - 40_RSC_start.py: XFAIL Bug: 00002
ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP
ComputerSystem - 42_cs_gi_errs.py: PASS
ComputerSystemIndication - 01_created_indication.py: PASS
ElementAllocatedFromPool - 01_forward.py: PASS
ElementAllocatedFromPool - 02_reverse.py: PASS
ElementAllocatedFromPool - 03_reverse_errs.py: PASS
ElementAllocatedFromPool - 04_forward_errs.py: PASS
ElementCapabilities - 01_forward.py: PASS
ElementCapabilities - 02_reverse.py: PASS
ElementCapabilities - 03_forward_errs.py: PASS
ElementCapabilities - 04_reverse_errs.py: PASS
ElementCapabilities - 05_hostsystem_cap.py: PASS
ElementConforms - 01_forward.py: PASS
ElementConforms - 02_reverse.py: PASS
ElementConforms - 03_ectp_fwd_errs.py: PASS
ElementConforms - 04_ectp_rev_errs.py: PASS
ElementSettingData - 01_forward.py: PASS
ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS
EnabledLogicalElementCapabilities - 01_enum.py: PASS
EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS
HostSystem - 01_enum.py: PASS
HostSystem - 02_hostsystem_to_rasd.py: PASS
HostSystem - 03_hs_to_settdefcap.py: PASS
HostSystem - 04_hs_to_EAPF.py: SKIP
HostSystem - 05_hs_gi_errs.py: PASS
HostSystem - 06_hs_to_vsms.py: PASS
HostedDependency - 01_forward.py: PASS
HostedDependency - 02_reverse.py: PASS
HostedDependency - 03_enabledstate.py: PASS
HostedDependency - 04_reverse_errs.py: PASS
HostedResourcePool - 01_forward.py: PASS
HostedResourcePool - 02_reverse.py: PASS
HostedResourcePool - 03_forward_errs.py: PASS
HostedResourcePool - 04_reverse_errs.py: PASS
HostedService - 01_forward.py: PASS
HostedService - 02_reverse.py: PASS
HostedService - 03_forward_errs.py: PASS
HostedService - 04_reverse_errs.py: PASS
LogicalDisk - 01_disk.py: PASS
LogicalDisk - 02_nodevs.py: FAIL
LogicalDisk - 03_ld_gi_errs.py: FAIL
Memory - 01_memory.py: FAIL
Memory - 02_defgetmem.py: PASS
Memory - 03_mem_gi_errs.py: PASS
NetworkPort - 01_netport.py: FAIL
NetworkPort - 02_np_gi_errors.py: PASS
NetworkPort - 03_user_netport.py: SKIP
Processor - 01_processor.py: PASS
Processor - 02_definesys_get_procs.py: PASS
Processor - 03_proc_gi_errs.py: PASS
Profile - 01_enum.py: PASS
Profile - 02_profile_to_elec.py: SKIP
Profile - 03_rprofile_gi_errs.py: PASS
RASD - 01_verify_rasd_fields.py: PASS
RASD - 02_enum.py: PASS
RASD - 03_rasd_errs.py: PASS
RASD - 04_disk_rasd_size.py: PASS
ReferencedProfile - 01_verify_refprof.py: PASS
ReferencedProfile - 02_refprofile_errs.py: PASS
ResourceAllocationFromPool - 01_forward.py: PASS
ResourceAllocationFromPool - 02_reverse.py: PASS
ResourceAllocationFromPool - 03_forward_errs.py: PASS
ResourceAllocationFromPool - 04_reverse_errs.py: PASS
ResourceAllocationFromPool - 05_RAPF_err.py: PASS
ResourcePool - 01_enum.py: PASS
ResourcePool - 02_rp_gi_errors.py: PASS
ResourcePoolConfigurationCapabilities - 01_enum.py: PASS
ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS
ResourcePoolConfigurationService - 01_enum.py: PASS
ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS
ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS
ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS
ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS
ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS
ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS
SettingsDefine - 01_forward.py: PASS
SettingsDefine - 02_reverse.py: PASS
SettingsDefine - 03_sds_fwd_errs.py: PASS
SettingsDefine - 04_sds_rev_errs.py: PASS
SettingsDefineCapabilities - 01_forward.py: PASS
SettingsDefineCapabilities - 03_forward_errs.py: PASS
SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS
SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS
SystemDevice - 01_forward.py: PASS
SystemDevice - 02_reverse.py: PASS
SystemDevice - 03_fwderrs.py: PASS
VSSD - 01_enum.py: PASS
VSSD - 02_bootldr.py: SKIP
VSSD - 03_vssd_gi_errs.py: PASS
VSSD - 04_vssd_to_rasd.py: FAIL
VirtualSystemManagementCapabilities - 01_enum.py: PASS
VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS
VirtualSystemManagementService - 01_definesystem_name.py: PASS
VirtualSystemManagementService - 02_destroysystem.py: PASS
VirtualSystemManagementService - 03_definesystem_ess.py: PASS
VirtualSystemManagementService - 04_definesystem_ers.py: PASS
VirtualSystemManagementService - 05_destroysystem_neg.py: PASS
VirtualSystemManagementService - 06_addresource.py: SKIP
VirtualSystemManagementService - 07_addresource_neg.py: PASS
VirtualSystemManagementService - 08_modifyresource.py: FAIL
InvokeMethod(ModifyResourceSettings): CIM_ERR_FAILED: Unknown system `rstest_domain'
VirtualSystemManagementService - 09_procrasd_persist.py: FAIL
VirtualSystemManagementService - 10_hv_version.py: PASS
VirtualSystemManagementService - 11_define_memrasdunits.py: PASS
VirtualSystemMigrationCapabilities - 01_enum.py: PASS
VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS
VirtualSystemMigrationService - 01_migratable_host.py: PASS
VirtualSystemMigrationService - 02_host_migrate_type.py: PASS
VirtualSystemMigrationService - 05_migratable_host_errs.py: PASS
VirtualSystemMigrationSettingData - 01_enum.py: PASS
VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS
VirtualSystemSettingDataComponent - 01_forward.py: PASS
VirtualSystemSettingDataComponent - 02_reverse.py: PASS
VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS
VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS
VirtualSystemSnapshotService - 01_enum.py: PASS
VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS
VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS
VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS
16 years, 3 months