From: Matty Williams Date: Wed, 3 Dec 2025 09:33:31 +0000 (+0000) Subject: test: Add test for omap_rm_range function in a replica pool X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a14b34a974deb1fe3fe83adab45924ddbc3bea21;p=ceph.git test: Add test for omap_rm_range function in a replica pool Fixes: https://tracker.ceph.com/issues/74013 Signed-off-by: Matty Williams --- diff --git a/src/test/librados/aio_cxx.cc b/src/test/librados/aio_cxx.cc index 79b01e7d54b5..6f1a0a70eaab 100644 --- a/src/test/librados/aio_cxx.cc +++ b/src/test/librados/aio_cxx.cc @@ -1272,6 +1272,55 @@ TEST(LibRadosAio, OmapPP) { ASSERT_EQ(hdr.length(), 0u); } + // omap_rm_range removes keys in range + { + boost::scoped_ptr my_completion(cluster.aio_create_completion(0, 0)); + ObjectWriteOperation op; + map 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 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 my_completion(cluster.aio_create_completion(0, 0)); + ObjectReadOperation op; + set 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); }