Deepti B. Kalakeri wrote:
# HG changeset patch
# User Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
# Date 1252394401 25200
# Node ID 465cfe3802c691e2315dc47eb07790df6c96fb77
# Parent fdc0d9aef3427500032bbd35caba0e5977be47f6
[TEST] Added new tc to verify the RPCS error values.
This test case verifies the creation of the StorageVol using the
CreateResourceInPool method of RPCS returns an error when invalid values
are passed.
The test case checks for the errors when:
1) FormatType field in the StoragePoolRASD set to value other than RAW_TYPE
2) Trying to create a Vol in a netfs storage pool
3) Trying to create 2 Vol in the same Path
Tested with KVM and current sources on SLES11.
Signed-off-by: Deepti B. Kalakeri <deeptik(a)linux.vnet.ibm.com>
diff -r fdc0d9aef342 -r 465cfe3802c6
suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/11_create_storagevolume_errs.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++
b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/11_create_storagevolume_errs.py Tue
Sep 08 00:20:01 2009 -0700
@@ -0,0 +1,226 @@
+#!/usr/bin/python
+#
+# Copyright 2009 IBM Corp.
+#
+# Authors:
+# Deepti B. Kalakeri<dkalaker(a)in.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
+#
+#
+# This test case verifies the creation of the StorageVol using the
+# CreateResourceInPool method of RPCS returns an error when invalid values
+# are passed.
+# The test case checks for the errors when:
+# 1) FormatType field in the StoragePoolRASD set to value other than RAW_TYPE
+# 2) Trying to create a Vol in a netfs storage pool
+# 3) Trying to create 2 Vol in the same Path
+#
+# -Date: 04-09-2009
+
+import sys
+import os
+from VirtLib import utils
+from random import randint
+from pywbem.cim_types import Uint64
+from pywbem import CIM_ERR_FAILED, CIMError
+from CimTest.Globals import logger
+from CimTest.ReturnCodes import FAIL, PASS, SKIP
+from XenKvmLib.const import do_main, platform_sup, default_pool_name, \
+ get_provider_version
+from XenKvmLib.rasd import libvirt_rasd_storagepool_changes
+from XenKvmLib import rpcs_service
+from XenKvmLib.assoc import Associators
+from XenKvmLib.enumclass import GetInstance, EnumNames
+from XenKvmLib.xm_virt_util import virsh_version
+from XenKvmLib.classes import get_typed_class, inst_to_mof
+from XenKvmLib.common_util import destroy_diskpool, nfs_netfs_setup, \
+ netfs_cleanup
+from XenKvmLib.pool import create_pool, undefine_diskpool, RAW_VOL_TYPE, \
+ DIR_POOL, NETFS_POOL, \
+ get_stovol_rasd_from_sdc, get_stovol_default_settings
+
+dir_pool_attr = { "Path" : "/tmp" }
+vol_name = "cimtest-vol.img"
+
+INVALID_FTYPE = RAW_VOL_TYPE + randint(20,100)
+exp_err_no = CIM_ERR_FAILED
+exp_err_values = { 'INVALID_FTYPE': { 'msg' : "Unable to generate
XML "\
+ "for new resource" },
+ 'NETFS_POOL' : { 'msg' : "This function does
not "\
+ "support this resource
type"},
+ 'DUP_VOL_PATH' : { 'msg' : "Unable to create storage
volume"}
Can you line up the third entry with the other two?
+ }
+
+
+@do_main(platform_sup)
+def main():
+ options = main.options
+ server = options.ip
+ virt = options.virt
+
+ libvirt_ver = virsh_version(server, virt)
+ cim_rev, changeset = get_provider_version(virt, server)
+ if libvirt_ver < "0.4.1" and cim_rev <
libvirt_rasd_storagepool_changes:
+ logger.info("Storage Volume creation support is available with
Libvirt"
+ "version >= 0.4.1 and Libvirt-CIM rev '%s'",
+ libvirt_rasd_storagepool_changes)
+ return SKIP
+
+ dp_types = { "NETFS_POOL" : NETFS_POOL }
+ dp_types['DUP_VOL_PATH'] = dp_types['INVALID_FTYPE'] = DIR_POOL
+ dp_cn = "DiskPool"
+ exp_vol_path = "%s/%s" % (dir_pool_attr['Path'], vol_name)
+
+ for pool_name, pool_type in dp_types.iteritems():
+ status = FAIL
+ clean_pool=True
+ try:
+ status, pool_attr = get_pool_attr(server, pool_type, dp_types)
+ if status != PASS:
+ return status
+
+ # err_key will contain either INVALID_FTYPE/DUP_VOL_PATH/NETFS_POOL
+ # to be able access the err mesg
+ err_key = pool_name
+
+ if pool_type == DIR_POOL:
+ pool_name = default_pool_name
+ clean_pool=False
+ else:
+ # Creating NETFS pool to verify RPCS error
+ status = create_pool(server, virt, pool_name, pool_attr,
+ mode_type=pool_type, pool_type=dp_cn)
A netfs pool requires a nfsserver running on the system, and not all
systems have nfs installed. So I wouldn't use the netfs type pool in
this test.
+
+ if status != PASS:
+ logger.error("Failed to create pool '%s'",
pool_name)
+ return status
+
+ sv_rasd = get_stovol_default_settings(virt, server, dp_cn, pool_name,
+ exp_vol_path, vol_name)
+ if sv_rasd == None:
+ raise Exception("Failed to get the defualt StorageVolRASD
info")
+
+ if err_key == "INVALID_FTYPE":
+ sv_rasd['FormatType'] = Uint64(INVALID_FTYPE)
+
+ sv_settings = inst_to_mof(sv_rasd)
Looks like you don't use sv_settings elsewhere in the test, so include
this line in verify_vol_err().
+
+ dp_inst = get_diskpool(server, virt, dp_cn, pool_name)
+ if dp_inst == None:
+ raise Exception("DiskPool instance for '%s' not
found!" \
+ % pool_name)
+
+ status = verify_vol_err(server, virt, sv_settings, dp_inst, err_key)
+ if status != PASS :
+ raise Exception("Failed to verify the Invlaid '%s' ",
err_key)
+
+ if err_key == 'NETFS_POOL':
+ netfs_cleanup(server, pool_attr)
+
+ except Exception, details:
+ logger.error("Exception details: %s", details)
+ status = FAIL
+ if err_key == 'NETFS_POOL':
+ netfs_cleanup(server, pool_attr)
+ break
I would have the try / except block outside of the for loop so you don't
need to break from the look. Raising the exception should be enough to
break you out of the loop.
+
+ cleanup_pool_vol(server, virt, pool_name, clean_pool, exp_vol_path)
+
+ return status
+if __name__ == "__main__":
+ sys.exit(main())
_______________________________________________
Libvirt-cim mailing list
Libvirt-cim(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin(a)linux.vnet.ibm.com