[PATCH] [TEST] #2 Add new test to verify enum of DiskRASD to have EmulatedType=0 for Disk

# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1229928239 28800 # Node ID 8be7de405963cc3e76bc0e5a0ed16afacc95830a # Parent e1783c9fa63c5bd2a7d301f9d5dececea01e1411 [TEST] #2 Add new test to verify enum of DiskRASD to have EmulatedType=0 for Disk Follow up patch to test EmulatedType=1 in the same test Signed-off-by: Guolian Yun <yunguol@cn.ibm.com> diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py Sun Dec 21 22:43:59 2008 -0800 @@ -0,0 +1,88 @@ +#!/usr/bin/python +# +# Copyright 2008 IBM Corp. +# +# Authors: +# Guolian Yun <yunguol@cn.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 +# + +import sys +import pywbem +from VirtLib import utils +from XenKvmLib import enumclass +from XenKvmLib.classes import get_typed_class +from XenKvmLib.test_doms import undefine_test_domain +from XenKvmLib.common_util import parse_instance_id +from XenKvmLib.const import do_main +from XenKvmLib import vxml +from CimTest.ReturnCodes import PASS, FAIL +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE +from XenKvmLib.const import get_provider_version + +SUPPORTED_TYPES = ['Xen', 'KVM', 'LXC'] +default_dom = 'test_domain' +libvirt_em_type_changeset = 737 +exp_emu_type = 0 + +@do_main(SUPPORTED_TYPES) +def main(): + status = FAIL + options = main.options + curr_cim_rev, changeset = get_provider_version(options.virt, options.ip) + if curr_cim_rev < libvirt_em_type_changeset: + return SKIP + + cxml = vxml.get_class(options.virt)(default_dom) + ret = cxml.cim_define(options.ip) + if not ret: + logger.error("Failed to call DefineSystem()") + return FAIL + + drasd= get_typed_class(options.virt, 'DiskResourceAllocationSettingData') + try: + drasd_list = enumclass.EnumInstances(options.ip, drasd, ret_cim_inst=True) + if len(drasd_list) < 1: + logger.error("%s returned %i instances, excepted at least 1.", + drasd, len(drasd_list)) + return FAIL + except Exception, detail: + logger.error(CIM_ERROR_ENUMERATE, drasd) + logger.error("Exception: %s", detail) + return FAIL + + for rasd in drasd_list: + guest, dev, status = parse_instance_id(rasd['InstanceID']) + if status != PASS: + logger.error("Unable to parse InstanceID: %s" % rasd['InstanceID']) + return FAIL + + if guest == default_dom: + if rasd['EmulatedType'] == exp_emu_type: + status = PASS + else: + logger.error("EmulatedType Mismatch: got %d, expected \ + %d", rasd['EmulatedType'], exp_emu_type) + return FAIL + + + undefine_test_domain(default_dom, options.ip, + virt=options.virt) + + return status + +if __name__ == "__main__": + sys.exit(main()) diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Sun Dec 21 22:43:59 2008 -0800 @@ -72,7 +72,7 @@ return (0, cs) def create_using_definesystem(domain_name, ip, params=None, ref_config=' ', - exp_err=None, virt='Xen'): + exp_err=None, emu_type=None, virt='Xen'): bug = "85673" try: class_vsms = eval('vsms.' + \ diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/vsms.py --- a/suites/libvirt-cim/lib/XenKvmLib/vsms.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/vsms.py Sun Dec 21 22:43:59 2008 -0800 @@ -126,8 +126,10 @@ # classes to define RASD parameters class CIM_DiskResourceAllocationSettingData(CIMClassMOF): - def __init__(self, dev, source, name): + def __init__(self, dev, source, name, emu_type=None): self.ResourceType = RASD_TYPE_DISK + if emu_type != None: + self.EmulatedType = emu_type if dev != None: self.VirtualDevice = dev self.InstanceID = '%s/%s' % (name, dev) @@ -141,10 +143,11 @@ pass class LXC_DiskResourceAllocationSettingData(CIMClassMOF): - def __init__(self, mountpoint, source, name): + def __init__(self, mountpoint, source, name, emu_type=None): self.MountPoint = mountpoint self.Address = source self.InstanceID = '%s/%s' % (name, mountpoint) + self.EmulatedType = emu_type @eval_cls('DiskResourceAllocationSettingData') def get_dasd_class(virt): @@ -239,6 +242,7 @@ proc_vcpu=1, mem_mb=512, malloc_units="MegaBytes", + emu_type=None, virt='Xen'): vssd = get_vssd_mof(virt, dom_name) @@ -252,7 +256,7 @@ elif virt == 'LXC': disk_dev = const.LXC_default_mp disk_source = const.LXC_default_source - d = class_dasd(disk_dev, disk_source, dom_name) + d = class_dasd(disk_dev, disk_source, dom_name, emu_type) class_masd = get_masd_class(virt) m = class_masd( diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/vxml.py --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Sun Dec 21 22:43:59 2008 -0800 @@ -466,11 +466,11 @@ class VirtCIM: def __init__(self, virt, dom_name, disk_dev, disk_source, - net_type, net_name, net_mac, vcpus, mem, mem_allocunits): + net_type, net_name, net_mac, vcpus, mem, mem_allocunits, emu_type=None): self.virt = virt self.domain_name = dom_name self.vssd = vsms.get_vssd_mof(virt, dom_name) - self.dasd = vsms.get_dasd_class(virt)(disk_dev, disk_source, dom_name) + self.dasd = vsms.get_dasd_class(virt)(disk_dev, disk_source, dom_name, emu_type) self.nasd = vsms.get_nasd_class(virt)(type=net_type, mac=net_mac, name=dom_name,

yunguol@cn.ibm.com wrote:
# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1229928239 28800 # Node ID 8be7de405963cc3e76bc0e5a0ed16afacc95830a # Parent e1783c9fa63c5bd2a7d301f9d5dececea01e1411 [TEST] #2 Add new test to verify enum of DiskRASD to have EmulatedType=0 for Disk
Follow up patch to test EmulatedType=1 in the same test
Signed-off-by: Guolian Yun <yunguol@cn.ibm.com>
diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py Sun Dec 21 22:43:59 2008 -0800 @@ -0,0 +1,88 @@ +#!/usr/bin/python +# +# Copyright 2008 IBM Corp. +# +# Authors: +# Guolian Yun <yunguol@cn.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 +# + +import sys +import pywbem +from VirtLib import utils +from XenKvmLib import enumclass +from XenKvmLib.classes import get_typed_class +from XenKvmLib.test_doms import undefine_test_domain +from XenKvmLib.common_util import parse_instance_id +from XenKvmLib.const import do_main +from XenKvmLib import vxml +from CimTest.ReturnCodes import PASS, FAIL +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE +from XenKvmLib.const import get_provider_version + +SUPPORTED_TYPES = ['Xen', 'KVM', 'LXC'] +default_dom = 'test_domain' +libvirt_em_type_changeset = 737 +exp_emu_type = 0 + +@do_main(SUPPORTED_TYPES) +def main(): + status = FAIL + options = main.options + curr_cim_rev, changeset = get_provider_version(options.virt, options.ip) + if curr_cim_rev < libvirt_em_type_changeset: + return SKIP
you need to import the SKIP value otherwise, the test case will FAIL on version < 737 with the following error: -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: FAIL ERROR - NameError : global name 'SKIP' is not defined Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 132, in do_try File "05_disk_rasd_emu_type.py", line 47, in main return SKIP NameError: global name 'SKIP' is not defined ERROR - None --------------------------------------------------------------------
+ + cxml = vxml.get_class(options.virt)(default_dom) + ret = cxml.cim_define(options.ip) + if not ret: + logger.error("Failed to call DefineSystem()") + return FAIL + + drasd= get_typed_class(options.virt, 'DiskResourceAllocationSettingData') + try: + drasd_list = enumclass.EnumInstances(options.ip, drasd, ret_cim_inst=True)
Can you wrap this to 80 columns ?
+ if len(drasd_list) < 1: + logger.error("%s returned %i instances, excepted at least 1.", + drasd, len(drasd_list)) + return FAIL
Need to undefine the guest before returning.
+ except Exception, detail: + logger.error(CIM_ERROR_ENUMERATE, drasd) + logger.error("Exception: %s", detail) + return FAIL
Same here
+ + for rasd in drasd_list: + guest, dev, status = parse_instance_id(rasd['InstanceID']) + if status != PASS: + logger.error("Unable to parse InstanceID: %s" % rasd['InstanceID']) + return FAIL
Same here
+ + if guest == default_dom: + if rasd['EmulatedType'] == exp_emu_type: + status = PASS + else: + logger.error("EmulatedType Mismatch: got %d, expected \ + %d", rasd['EmulatedType'], exp_emu_type) + return FAIL
Same here.
+ + + undefine_test_domain(default_dom, options.ip, + virt=options.virt) + + return status + +if __name__ == "__main__": + sys.exit(main()) diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Sun Dec 21 22:43:59 2008 -0800 @@ -72,7 +72,7 @@ return (0, cs)
def create_using_definesystem(domain_name, ip, params=None, ref_config=' ', - exp_err=None, virt='Xen'): + exp_err=None, emu_type=None, virt='Xen'): bug = "85673" try: class_vsms = eval('vsms.' + \ diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/vsms.py --- a/suites/libvirt-cim/lib/XenKvmLib/vsms.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/vsms.py Sun Dec 21 22:43:59 2008 -0800 @@ -126,8 +126,10 @@
# classes to define RASD parameters class CIM_DiskResourceAllocationSettingData(CIMClassMOF): - def __init__(self, dev, source, name): + def __init__(self, dev, source, name, emu_type=None): self.ResourceType = RASD_TYPE_DISK + if emu_type != None: + self.EmulatedType = emu_type if dev != None: self.VirtualDevice = dev self.InstanceID = '%s/%s' % (name, dev) @@ -141,10 +143,11 @@ pass
class LXC_DiskResourceAllocationSettingData(CIMClassMOF): - def __init__(self, mountpoint, source, name): + def __init__(self, mountpoint, source, name, emu_type=None): self.MountPoint = mountpoint self.Address = source self.InstanceID = '%s/%s' % (name, mountpoint) + self.EmulatedType = emu_type
@eval_cls('DiskResourceAllocationSettingData') def get_dasd_class(virt): @@ -239,6 +242,7 @@ proc_vcpu=1, mem_mb=512, malloc_units="MegaBytes", + emu_type=None, virt='Xen'): vssd = get_vssd_mof(virt, dom_name)
@@ -252,7 +256,7 @@ elif virt == 'LXC': disk_dev = const.LXC_default_mp disk_source = const.LXC_default_source - d = class_dasd(disk_dev, disk_source, dom_name) + d = class_dasd(disk_dev, disk_source, dom_name, emu_type)
class_masd = get_masd_class(virt) m = class_masd( diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/vxml.py --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Sun Dec 21 22:43:59 2008 -0800 @@ -466,11 +466,11 @@
class VirtCIM: def __init__(self, virt, dom_name, disk_dev, disk_source, - net_type, net_name, net_mac, vcpus, mem, mem_allocunits): + net_type, net_name, net_mac, vcpus, mem, mem_allocunits, emu_type=None):
Can you wrap this to 80 columns ?
self.virt = virt self.domain_name = dom_name self.vssd = vsms.get_vssd_mof(virt, dom_name) - self.dasd = vsms.get_dasd_class(virt)(disk_dev, disk_source, dom_name) + self.dasd = vsms.get_dasd_class(virt)(disk_dev, disk_source, dom_name, emu_type)
Can you wrap this to 80 columns ?
self.nasd = vsms.get_nasd_class(virt)(type=net_type, mac=net_mac, name=dom_name,
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

+ + drasd= get_typed_class(options.virt, 'DiskResourceAllocationSettingData') + try: + drasd_list = enumclass.EnumInstances(options.ip, drasd, ret_cim_inst=True) + if len(drasd_list) < 1: + logger.error("%s returned %i instances, excepted at least 1.", + drasd, len(drasd_list)) + return FAIL + except Exception, detail: + logger.error(CIM_ERROR_ENUMERATE, drasd) + logger.error("Exception: %s", detail) + return FAIL + + for rasd in drasd_list: + guest, dev, status = parse_instance_id(rasd['InstanceID']) + if status != PASS: + logger.error("Unable to parse InstanceID: %s" % rasd['InstanceID']) + return FAIL + + if guest == default_dom: + if rasd['EmulatedType'] == exp_emu_type: + status = PASS + else: + logger.error("EmulatedType Mismatch: got %d, expected \ + %d", rasd['EmulatedType'], exp_emu_type) + return FAIL
Once you find a match, you should break from the for loop. Also, you want to return an error if none of the DiskRASDs are for the guest you're looking for.
+ + + undefine_test_domain(default_dom, options.ip, + virt=options.virt)\
This should be cxml.undefine().
+ + return status
You can use this testcase to test both EmulatedType = 1 and EmulatedType = 0. 1) Create a list that is emu_types = [0, 1] 2) for exp_emu_type in emu_types: 3) Define guest 4) Enum DiskRASDs 5) Get DiskRASD for guest 6) Verify EmulationType 7) Undefine guest That way you can test both values in one test.
+ +if __name__ == "__main__": + sys.exit(main()) diff -r e1783c9fa63c -r 8be7de405963 suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Dec 18 14:35:14 2008 -0800 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Sun Dec 21 22:43:59 2008 -0800 @@ -72,7 +72,7 @@ return (0, cs)
def create_using_definesystem(domain_name, ip, params=None, ref_config=' ', - exp_err=None, virt='Xen'): + exp_err=None, emu_type=None, virt='Xen'):
You aren't using create_using_definesystem(), so no need to update it. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
participants (3)
-
Deepti B Kalakeri
-
Kaitlin Rupert
-
yunguol@cn.ibm.com