From 2a18459eff71b75b6a5733f2e609b34bda2e3672 Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Mon, 20 Jan 2025 11:33:31 +0530 Subject: [PATCH] neorados_pool_test: Erase a pool name from local map during delete_pool 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 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 --- src/test/neorados/pool.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/test/neorados/pool.cc b/src/test/neorados/pool.cc index 9ca5b95c504fe..d6546825bf287 100644 --- a/src/test/neorados/pool.cc +++ b/src/test/neorados/pool.cc @@ -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 { + 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 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; } -- 2.39.5