]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: add test for discard of nonexistent objects
authorSage Weil <sage@inktank.com>
Fri, 17 Aug 2012 23:04:20 +0000 (16:04 -0700)
committerSage Weil <sage@inktank.com>
Fri, 17 Aug 2012 23:04:20 +0000 (16:04 -0700)
This verifies librbd properly handles ENOENT during discard.

Signed-off-by: Sage Weil <sage@inktank.com>
src/test/test_librbd.cc

index 51f6a2ceb9a41a92bfa30b5e4c3ad9eb88ee05f9..2022298afb26b5b2b80107a90a267aa790f55fd4 100644 (file)
@@ -738,6 +738,31 @@ TEST(LibRBD, TestIO)
   ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
 }
 
+TEST(LibRBD, TestEmptyDiscard)
+{
+  rados_t cluster;
+  rados_ioctx_t ioctx;
+  string pool_name = get_temp_pool_name();
+  ASSERT_EQ("", create_one_pool(pool_name, &cluster));
+  rados_ioctx_create(cluster, pool_name.c_str(), &ioctx);
+
+  rbd_image_t image;
+  int order = 0;
+  const char *name = "testimg";
+  uint64_t size = 20 << 20;
+  
+  ASSERT_EQ(0, create_image(ioctx, name, size, &order));
+  ASSERT_EQ(0, rbd_open(ioctx, name, &image, NULL));
+
+  aio_discard_test_data(image, 0, 1*1024*1024);
+  aio_discard_test_data(image, 0, 4*1024*1024);
+
+  ASSERT_EQ(0, rbd_close(image));
+
+  rados_ioctx_destroy(ioctx);
+  ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
+}
+
 
 void simple_write_cb_pp(librbd::completion_t cb, void *arg)
 {