]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/pybind/rbd: test callbacks raising exceptions
authorMykola Golub <mgolub@suse.com>
Sun, 3 Dec 2023 09:37:02 +0000 (09:37 +0000)
committerMykola Golub <mgolub@suse.com>
Wed, 6 Dec 2023 09:58:28 +0000 (11:58 +0200)
Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 55b3be5234f1c670b0c7d3f3a1584af2573d9288)

src/test/pybind/test_rbd.py

index 7b5f31b577a61c50aa990afd42bc6455a55f22d8..0ce3c0dd90caa5d98ace848f1d49d8678bbe6c06 100644 (file)
@@ -415,6 +415,18 @@ def test_remove_canceled(tmp_image):
     assert_raises(OperationCanceled, RBD().remove, ioctx, image_name,
                   on_progress=progress_cb)
 
+def test_remove_with_progress_except():
+    create_image()
+    d = {'received_callback': False}
+    def progress_cb(current, total):
+        d['received_callback'] = True
+        raise Exception()
+
+    # exception is logged and ignored with a Cython warning:
+    #   Exception ignored in: 'rbd.progress_callback'
+    RBD().remove(ioctx, image_name, on_progress=progress_cb)
+    eq(True, d['received_callback'])
+
 def test_rename(tmp_image):
     rbd = RBD()
     image_name2 = get_temp_image_name()
@@ -1251,6 +1263,16 @@ class TestImage(object):
         assert(comp.get_return_value() < 0)
         eq(sys.getrefcount(comp), 2)
 
+        # test3: except case
+        def cbex(_, buf):
+            raise KeyError()
+
+        def test3():
+            comp = self.image.aio_read(IMG_SIZE, 20, cbex)
+            comp.wait_for_complete_and_cb()
+
+        assert_raises(KeyError, test3)
+
     def test_aio_write(self):
         retval = [None]
         def cb(comp):