[Kimchi-devel] [PATCH 4/5] Move rollback_wrapper function to a common place
Royce Lv
lvroyce at linux.vnet.ibm.com
Tue Dec 30 08:17:22 UTC 2014
Reviewed-by: Royce Lv<lvroyce at linux.vnet.ibm.com>
On 12/29/2014 09:53 AM, Aline Manera wrote:
> The rollback_wrapper function is used to avoid a NotFoundError when the
> tests finishes correctly. Move it to a common place to allow reuse.
>
> Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
> ---
> tests/test_model.py | 23 +++++++----------------
> tests/utils.py | 15 ++++++++++++++-
> 2 files changed, 21 insertions(+), 17 deletions(-)
>
> diff --git a/tests/test_model.py b/tests/test_model.py
> index 5984906..a8d35dc 100644
> --- a/tests/test_model.py
> +++ b/tests/test_model.py
> @@ -964,10 +964,10 @@ class ModelTests(unittest.TestCase):
> params_1 = {'name': 'kimchi-vm1', 'template': '/templates/test'}
> params_2 = {'name': 'kimchi-vm2', 'template': '/templates/test'}
> inst.vms_create(params_1)
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_delete,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
> 'kimchi-vm1')
> inst.vms_create(params_2)
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_delete,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
> 'kimchi-vm2')
>
> vms = inst.vms_get_list()
> @@ -978,7 +978,7 @@ class ModelTests(unittest.TestCase):
> {"graphics": {"passwd": "123456"}})
>
> inst.vm_start('kimchi-vm1')
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_poweroff,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_poweroff,
> 'kimchi-vm1')
>
> vm_info = inst.vm_lookup(u'kimchi-vm1')
> @@ -1019,7 +1019,7 @@ class ModelTests(unittest.TestCase):
>
> params = {'name': u'пeω-∨м', 'cpus': 4, 'memory': 2048}
> inst.vm_update('kimchi-vm1', params)
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_delete,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
> u'пeω-∨м')
> self.assertEquals(info['uuid'], inst.vm_lookup(u'пeω-∨м')['uuid'])
> info = inst.vm_lookup(u'пeω-∨м')
> @@ -1296,16 +1296,7 @@ class ModelTests(unittest.TestCase):
> inst.task_wait(taskid, timeout=10)
> self.assertEquals('finished', inst.task_lookup(taskid)['status'])
>
> - # This wrapper function is needed due to the new backend messaging in
> - # vm model. vm_poweroff and vm_delete raise exception if vm is not found.
> - # These functions are called after vm has been deleted if test finishes
> - # correctly, then NofFoundError exception is raised and rollback breaks
> - def _rollback_wrapper(self, func, vmname):
> - try:
> - func(vmname)
> - except NotFoundError:
> - # VM has been deleted already
> - return
> +
>
> @unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
> def test_delete_running_vm(self):
> @@ -1318,11 +1309,11 @@ class ModelTests(unittest.TestCase):
>
> params = {'name': u'kīмсhī-∨м', 'template': u'/templates/test'}
> inst.vms_create(params)
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_delete,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_delete,
> u'kīмсhī-∨м')
>
> inst.vm_start(u'kīмсhī-∨м')
> - rollback.prependDefer(self._rollback_wrapper, inst.vm_poweroff,
> + rollback.prependDefer(utils.rollback_wrapper, inst.vm_poweroff,
> u'kīмсhī-∨м')
>
> inst.vm_delete(u'kīмсhī-∨м')
> diff --git a/tests/utils.py b/tests/utils.py
> index c692041..3677851 100644
> --- a/tests/utils.py
> +++ b/tests/utils.py
> @@ -38,7 +38,7 @@ import kimchi.mockmodel
> import kimchi.server
> from kimchi.config import config, paths
> from kimchi.auth import User, USER_NAME, USER_GROUPS, USER_ROLES, tabs
> -from kimchi.exception import OperationFailed
> +from kimchi.exception import NotFoundError, OperationFailed
> from kimchi.utils import kimchi_log
>
> _ports = {}
> @@ -226,3 +226,16 @@ def wait_task(task_lookup, taskid, timeout=10):
> return
> kimchi_log.error("Timeout while process long-run task, "
> "try to increase timeout value.")
> +
> +
> +# The action functions in model backend raise NotFoundError exception if the
> +# element is not found. But in some tests, these functions are called after
> +# the element has been deleted if test finishes correctly, then NofFoundError
> +# exception is raised and rollback breaks. To avoid it, this wrapper ignores
> +# the NotFoundError.
> +def rollback_wrapper(func, resource):
> + try:
> + func(resource)
> + except NotFoundError:
> + # VM has been deleted already
> + return
More information about the Kimchi-devel
mailing list