[Libvirt-cim] [PATCH 2 of 2] [TEST] Added new tc to verify the RPCS error values

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Wed Sep 9 07:17:22 UTC 2009



Kaitlin Rupert wrote:
> Deepti B. Kalakeri wrote:
>> # HG changeset patch
>> # User Deepti B. Kalakeri <deeptik at 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 at 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 at 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?
>
>> + }
>> +
>
>> +
>> + at 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.

Other pool types would require user to give inputs. So I found netfs the 
only option to verify the error.
Any suggestion for the pool types ?
>
>> +
>> + 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 at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvirt-cim
>
>

-- 
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list