]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test: Add test for omap_rm_range function in a replica pool 66460/head
authorMatty Williams <Matty.Williams@ibm.com>
Wed, 3 Dec 2025 09:33:31 +0000 (09:33 +0000)
committerMatty Williams <Matty.Williams@ibm.com>
Fri, 5 Dec 2025 09:09:08 +0000 (09:09 +0000)
Fixes: https://tracker.ceph.com/issues/74013
Signed-off-by: Matty Williams <Matty.Williams@ibm.com>
src/test/librados/aio_cxx.cc

index 79b01e7d54b5cc6c044a6cddd44d183e5e39d6a8..6f1a0a70eaabfc6c4499333a988603f412abd342 100644 (file)
@@ -1272,6 +1272,55 @@ TEST(LibRadosAio, OmapPP) {
     ASSERT_EQ(hdr.length(), 0u);
   }
 
+  // omap_rm_range removes keys in range
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0));
+    ObjectWriteOperation op;
+    map<string,bufferlist> to_set;
+    bufferlist bl;
+    bl.append("some data");
+    to_set["aaa"] = bl;
+    to_set["aab"] = bl;
+    to_set["aac"] = bl;
+    to_set["aba"] = bl;
+    to_set["abb"] = bl;
+    to_set["abc"] = bl;
+    op.omap_set(to_set);
+    ioctx.aio_operate("test_obj2", my_completion.get(), &op);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+  }
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0));
+    ObjectWriteOperation op;
+    op.omap_rm_range("aab", "abb");
+    ioctx.aio_operate("test_obj2", my_completion.get(), &op);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+  }
+  {
+    boost::scoped_ptr<AioCompletion> my_completion(cluster.aio_create_completion(0, 0));
+    ObjectReadOperation op;
+    set<string> set_got;
+    op.omap_get_keys2("", -1, &set_got, nullptr, 0);
+    ioctx.aio_operate("test_obj2", my_completion.get(), &op, 0);
+    {
+      TestAlarm alarm;
+      ASSERT_EQ(0, my_completion->wait_for_complete());
+    }
+    EXPECT_EQ(0, my_completion->get_return_value());
+    ASSERT_EQ(set_got.size(), (unsigned)3);
+    ASSERT_EQ(set_got.count("aaa"), (unsigned)1);
+    ASSERT_EQ(set_got.count("abb"), (unsigned)1);
+    ASSERT_EQ(set_got.count("abc"), (unsigned)1);
+  }
+
   ioctx.remove("test_obj");
   destroy_one_pool_pp(pool_name, cluster);
 }