]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa/tasks/mgr/dashboard: rbd: snapshot rollback test
authorRicardo Dias <rdias@suse.com>
Wed, 11 Apr 2018 22:57:31 +0000 (23:57 +0100)
committerRicardo Dias <rdias@suse.com>
Fri, 13 Apr 2018 14:58:49 +0000 (15:58 +0100)
Signed-off-by: Ricardo Dias <rdias@suse.com>
qa/tasks/mgr/dashboard/helper.py
qa/tasks/mgr/dashboard/test_rbd.py

index 8843cbad2e36683639e1b8b85d5d2cb2e66c8009..0fcfd80060622b1ef2bc0793177df0fd11e72d7d 100644 (file)
@@ -249,7 +249,10 @@ class DashboardTestCase(MgrTestCase):
         self.assertEqual(self._resp.text, body)
 
     def assertStatus(self, status):
-        self.assertEqual(self._resp.status_code, status)
+        if isinstance(status, list):
+            self.assertIn(self._resp.status_code, status)
+        else:
+            self.assertEqual(self._resp.status_code, status)
 
     @classmethod
     def _ceph_cmd(cls, cmd):
index e417a1152e326604978d3220245670d0decd9053..dee05b11f47fe4d4eaa6cc83055d314616f56cfc 100644 (file)
@@ -390,3 +390,34 @@ class RbdTest(DashboardTestCase):
 
         self.remove_snapshot('rbd', 'img1', 'snap5')
         self.assertStatus(204)
+
+    def test_snapshot_rollback(self):
+        self.create_image('rbd', 'rollback_img', 2**30,
+                          features=["layering", "exclusive-lock", "fast-diff",
+                                    "object-map"])
+        self.assertStatus(201)
+        self.create_snapshot('rbd', 'rollback_img', 'snap1')
+        self.assertStatus(201)
+
+        img = self._get('/api/rbd/rbd/rollback_img')
+        self.assertStatus(200)
+        self.assertEqual(img['disk_usage'], 0)
+
+        self._rbd_cmd(['bench', '--io-type', 'write', '--io-total', '5M',
+                       'rbd/rollback_img'])
+
+        img = self._get('/api/rbd/rbd/rollback_img')
+        self.assertStatus(200)
+        self.assertGreater(img['disk_usage'], 0)
+
+        self._task_post('/api/rbd/rbd/rollback_img/snap/snap1/rollback')
+        self.assertStatus([201, 200])
+
+        img = self._get('/api/rbd/rbd/rollback_img')
+        self.assertStatus(200)
+        self.assertEqual(img['disk_usage'], 0)
+
+        self.remove_snapshot('rbd', 'rollback_img', 'snap1')
+        self.assertStatus(204)
+        self.remove_image('rbd', 'rollback_img')
+        self.assertStatus(204)