]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/mgr/dashboard: rbd: image copy test
authorRicardo Dias <rdias@suse.com>
Thu, 12 Apr 2018 01:11:16 +0000 (02:11 +0100)
committerRicardo Dias <rdias@suse.com>
Fri, 13 Apr 2018 14:58:50 +0000 (15:58 +0100)
Signed-off-by: Ricardo Dias <rdias@suse.com>
qa/tasks/mgr/dashboard/test_rbd.py

index 701412bfb8a5c46d1f29404b21f48285e38d0415..ecd8d40c10b758ffb3075d267ffaf0c291fc73db 100644 (file)
@@ -41,6 +41,14 @@ class RbdTest(DashboardTestCase):
                               .format(parent_pool, parent_image, parent_snap),
                               data)
 
+    @classmethod
+    def copy_image(cls, src_pool, src_image, dest_pool, dest_image, **kwargs):
+        # pylint: disable=too-many-arguments
+        data = {'dest_image_name': dest_image, 'dest_pool_name': dest_pool}
+        data.update(kwargs)
+        return cls._task_post('/api/rbd/{}/{}/copy'
+                              .format(src_pool, src_image), data)
+
     @classmethod
     def remove_image(cls, pool, image):
         return cls._task_delete('/api/rbd/{}/{}'.format(pool, image))
@@ -467,3 +475,33 @@ class RbdTest(DashboardTestCase):
         self.assertStatus(204)
         self.remove_image('rbd', 'cimg')
         self.assertStatus(204)
+
+    def test_copy(self):
+        self.create_image('rbd', 'coimg', 2**30,
+                          features=["layering", "exclusive-lock", "fast-diff",
+                                    "object-map"])
+        self.assertStatus(201)
+
+        self._rbd_cmd(['bench', '--io-type', 'write', '--io-total', '5M',
+                       'rbd/coimg'])
+
+        self.copy_image('rbd', 'coimg', 'rbd_iscsi', 'coimg-copy',
+                        features=["layering", "fast-diff", "exclusive-lock",
+                                  "object-map"])
+        self.assertStatus([200, 201])
+
+        img = self._get('/api/rbd/rbd/coimg')
+        self.assertStatus(200)
+        self._validate_image(img, features_name=['layering', 'exclusive-lock',
+                                                 'fast-diff', 'object-map'])
+
+        img_copy = self._get('/api/rbd/rbd_iscsi/coimg-copy')
+        self._validate_image(img_copy, features_name=['exclusive-lock',
+                                                      'fast-diff', 'layering',
+                                                      'object-map'],
+                             disk_usage=img['disk_usage'])
+
+        self.remove_image('rbd', 'coimg')
+        self.assertStatus(204)
+        self.remove_image('rbd_iscsi', 'coimg-copy')
+        self.assertStatus(204)