]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
neorados_pool_test: Erase a pool name from local map during delete_pool 61449/head
authorMohit Agrawal <moagrawa@redhat.com>
Mon, 20 Jan 2025 06:03:31 +0000 (11:33 +0530)
committerMohit Agrawal <moagrawa@redhat.com>
Tue, 21 Jan 2025 10:00:26 +0000 (15:30 +0530)
The test case itself call CoTearDown function by the end of every test case
and the function call delete_pool on the basis of pool name exists in
local set <created_pools> and if the pool does not exist during CoTearDown
it throws an exception so the test case expects the pool should be exists
before leaving the test case.

Solution: During delete_pool erase a pool name from a local map
          and CoTearDown iterate over local copy instead of the
          orignal copy.

Fixes: https://tracker.ceph.com/issues/69405
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
src/test/neorados/pool.cc

index 9ca5b95c504fe296fd0c2e2cc2ab873a88911b03..d6546825bf287285e41fb9de09877e58905c9c43 100644 (file)
@@ -81,12 +81,9 @@ protected:
     co_return co_await lookup_pool(pname);
   }
 
-  auto delete_pool(std::string pname) {
-    return rados().delete_pool(pname, asio::use_awaitable);
-  }
-
-  auto delete_pool(std::int64_t pid) {
-    return rados().delete_pool(pid, asio::use_awaitable);
+  auto delete_pool(std::string pname)-> boost::asio::awaitable<void> {
+    co_await rados().delete_pool(pname, asio::use_awaitable);
+    created_pools.erase(pname);
   }
 
 public:
@@ -103,7 +100,8 @@ public:
 
   /// \brief Delete pool used for testing
   boost::asio::awaitable<void> CoTearDown() override {
-    for (const auto& name : created_pools) try {
+    auto pools_to_delete = created_pools;
+    for (const auto& name : pools_to_delete) try {
        co_await delete_pool(name);
       } catch (const sys::system_error& e) {
        if (e.code() != osdc_errc::pool_dne) {
@@ -151,7 +149,6 @@ CORO_TEST_F(NeoRadosPools, PoolDelete, NeoRadosPool) {
   co_await delete_pool(pname);
   co_await expect_error_code(lookup_pool(pname),
                             sys::errc::no_such_file_or_directory);
-  co_await create_pool(pname);
   co_return;
 }