[Kimchi-devel] [PATCH v4 5/5] test_model: test creating iSCSI storage pool

Royce Lv lvroyce at linux.vnet.ibm.com
Tue Dec 31 09:03:26 UTC 2013


Reviewed-by: Royce Lv<lvroyce at linux.vnet.ibm.com>
On 2013年12月31日 14:39, Zhou Zheng Sheng wrote:
> This patch adds iSCSI storage pool test to test_model.test_storagepool.
> It firstly checks if there exists an iSCSI target named
> "iqn.2013-12.localhost.kimchiUnitTest" on local host. If not, skip the
> test; if yes, continue to run the test already defined in test_storagepool.
>
> v2 -> v3
>    Do not create dir for the pool, pool.build() called by
>    storagepools_create() does this automatically.
>
> v3 -> v4
>    No Changes.
>
> Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
> ---
>   tests/test_model.py | 89 ++++++++++++++++++++++++++++++-----------------------
>   1 file changed, 50 insertions(+), 39 deletions(-)
>
> diff --git a/tests/test_model.py b/tests/test_model.py
> index e19364f..432976f 100644
> --- a/tests/test_model.py
> +++ b/tests/test_model.py
> @@ -38,6 +38,7 @@ import utils
>   from kimchi import netinfo
>   from kimchi.exception import InvalidOperation, InvalidParameter
>   from kimchi.exception import NotFoundError, OperationFailed
> +from kimchi.iscsi import TargetClient
>
>
>   class ModelTests(unittest.TestCase):
> @@ -115,48 +116,58 @@ class ModelTests(unittest.TestCase):
>       def test_storagepool(self):
>           inst = kimchi.model.Model('qemu:///system', self.tmp_store)
>
> -        with utils.RollbackContext() as rollback:
> -            path = '/tmp/kimchi-images'
> -            name = 'test-pool'
> -            if not os.path.exists(path):
> -                os.mkdir(path)
> +        poolDefs = [
> +            {'type': 'dir',
> +             'name': 'unitTestDirPool',
> +             'path': '/tmp/kimchi-images'},
> +            {'type': 'iscsi',
> +             'name': 'unitTestISCSIPool',
> +             'source': {'host': '127.0.0.1',
> +                        'target': 'iqn.2013-12.localhost.kimchiUnitTest'}}]
>
> -            pools = inst.storagepools_get_list()
> -            num = len(pools) + 1
> +        for poolDef in poolDefs:
> +            with utils.RollbackContext() as rollback:
> +                path = poolDef.get('path')
> +                name = poolDef['name']
> +
> +                if poolDef['type'] == 'iscsi':
> +                    if not TargetClient(**poolDef['source']).validate():
> +                        continue
> +
> +                pools = inst.storagepools_get_list()
> +                num = len(pools) + 1
> +
> +                inst.storagepools_create(poolDef)
> +                rollback.prependDefer(inst.storagepool_delete, name)
> +
> +                pools = inst.storagepools_get_list()
> +                self.assertEquals(num, len(pools))
> +
> +                poolinfo = inst.storagepool_lookup(name)
> +                if path is not None:
> +                    self.assertEquals(path, poolinfo['path'])
> +                self.assertEquals('inactive', poolinfo['state'])
> +                if poolinfo['type'] == 'dir':
> +                    self.assertEquals(True, poolinfo['autostart'])
> +                else:
> +                    self.assertEquals(False, poolinfo['autostart'])
> +
> +                inst.storagepool_activate(name)
> +                rollback.prependDefer(inst.storagepool_deactivate, name)
>
> -            args = {'name': name,
> -                    'path': path,
> -                    'type': 'dir'}
> -            inst.storagepools_create(args)
> -            rollback.prependDefer(inst.storagepool_delete, name)
> -
> -            pools = inst.storagepools_get_list()
> -            self.assertEquals(num, len(pools))
> -
> -            poolinfo = inst.storagepool_lookup(name)
> -            self.assertEquals(path, poolinfo['path'])
> -            self.assertEquals('inactive', poolinfo['state'])
> -            if poolinfo['type'] == 'dir':
> -                self.assertEquals(True, poolinfo['autostart'])
> -            else:
> -                self.assertEquals(False, poolinfo['autostart'])
> -
> -            inst.storagepool_activate(name)
> -            rollback.prependDefer(inst.storagepool_deactivate, name)
> -
> -            poolinfo = inst.storagepool_lookup(name)
> -            self.assertEquals('active', poolinfo['state'])
> -
> -            autostart = poolinfo['autostart']
> -            ori_params = {'autostart': True} if autostart else {'autostart': False}
> -            for i in [True, False]:
> -                params = {'autostart': i}
> -                inst.storagepool_update(name, params)
> -                rollback.prependDefer(inst.storagepool_update, name,
> -                        ori_params)
>                   poolinfo = inst.storagepool_lookup(name)
> -                self.assertEquals(i, poolinfo['autostart'])
> -            inst.storagepool_update(name, ori_params)
> +                self.assertEquals('active', poolinfo['state'])
> +
> +                autostart = poolinfo['autostart']
> +                ori_params = {'autostart': True} if autostart else {'autostart': False}
> +                for i in [True, False]:
> +                    params = {'autostart': i}
> +                    inst.storagepool_update(name, params)
> +                    rollback.prependDefer(inst.storagepool_update, name,
> +                            ori_params)
> +                    poolinfo = inst.storagepool_lookup(name)
> +                    self.assertEquals(i, poolinfo['autostart'])
> +                inst.storagepool_update(name, ori_params)
>
>           pools = inst.storagepools_get_list()
>           self.assertIn('default', pools)




More information about the Kimchi-devel mailing list