[Kimchi-devel] [PATCH] [Kimchi 4/5] Fix test_vm_lifecycle testcase.

pvital at linux.vnet.ibm.com pvital at linux.vnet.ibm.com
Sat Dec 5 19:22:35 UTC 2015


From: Paulo Vital <pvital at linux.vnet.ibm.com>

Libvirt of the Fedora 23 is not able to delete the storage volume in the
testcase test_vm_lifecycle when testing ModelTests. This happens because
Libvirt is not able to unlink/rmdir returning an error (-1) and
setting errno to ENOENT, causing the error:

"cannot unlink file '/var/lib/libvirt/images/test-vol': Success"

This patch fixes the testcase by manually remove the volume file from the
storage pool directory if the wok.plugins.kimchi.model.storagevolume_delete()
was not capable to delete the volume.

Signed-off-by: Paulo Vital <pvital at linux.vnet.ibm.com>
---
 tests/test_model.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tests/test_model.py b/tests/test_model.py
index 0ac36dd..338f04d 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -124,12 +124,23 @@ class ModelTests(unittest.TestCase):
 
     @unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
     def test_vm_lifecycle(self):
+
+        def temporary_storagevolume_delete(pool, vol):
+            # Quick fix to passby the Libvirt error:
+            # "error: cannot unlink file '%(vol)': Success"
+            # in Fedora <= 23. The Libvirt fix will be present only on Fedora 24
+            try:
+                inst.storagevolume_delete(pool, vol)
+            except OperationFailed as e:
+                path = inst.storagevolume_lookup(pool, vol)['path']
+                os.remove(path)
+
         inst = model.Model(objstore_loc=self.tmp_store)
 
         with RollbackContext() as rollback:
             vol_params = {'name': u'test-vol', 'capacity': 1024}
             task = inst.storagevolumes_create(u'default', vol_params)
-            rollback.prependDefer(inst.storagevolume_delete, u'default',
+            rollback.prependDefer(temporary_storagevolume_delete, u'default',
                                   vol_params['name'])
             inst.task_wait(task['id'])
             task = inst.task_lookup(task['id'])
-- 
2.5.0




More information about the Kimchi-devel mailing list