diff --git a/src/test/rgw/test_d4n_directory.cc b/src/test/rgw/test_d4n_directory.cc index 7328212dcffa64..14d63e4169a407 100644 --- a/src/test/rgw/test_d4n_directory.cc +++ b/src/test/rgw/test_d4n_directory.cc @@ -49,7 +49,8 @@ class Environment : public ::testing::Environment { class ObjectDirectoryFixture: public ::testing::Test { protected: virtual void SetUp() { - dir = new rgw::d4n::ObjectDirectory{io}; + conn = std::make_shared(boost::asio::make_strand(io)); + dir = new rgw::d4n::ObjectDirectory{conn}; obj = new rgw::d4n::CacheObj{ .objName = "testName", .bucketName = "testBucket", @@ -58,13 +59,11 @@ class ObjectDirectoryFixture: public ::testing::Test { .hostsList = { env->redisHost } }; - conn = new connection{boost::asio::make_strand(io)}; - ASSERT_NE(obj, nullptr); ASSERT_NE(dir, nullptr); ASSERT_NE(conn, nullptr); - dir->init(env->cct, env->dpp); + dir->init(env->cct); /* Run fixture's connection */ config cfg; @@ -75,7 +74,9 @@ class ObjectDirectoryFixture: public ::testing::Test { } virtual void TearDown() { - delete conn; + // call cancel() on the connection's executor + boost::asio::dispatch(conn->get_executor(), [c = conn] { c->cancel(); }); + delete obj; delete dir; } @@ -84,7 +85,7 @@ class ObjectDirectoryFixture: public ::testing::Test { rgw::d4n::ObjectDirectory* dir; net::io_context io; - connection* conn; + std::shared_ptr conn; std::vector vals{"testName", "testBucket", "", "0", env->redisHost}; std::vector fields{"objName", "bucketName", "creationTime", "dirty", "objHosts"}; @@ -93,7 +94,8 @@ class ObjectDirectoryFixture: public ::testing::Test { class BlockDirectoryFixture: public ::testing::Test { protected: virtual void SetUp() { - dir = new rgw::d4n::BlockDirectory{io}; + conn = std::make_shared(boost::asio::make_strand(io)); + dir = new rgw::d4n::BlockDirectory{conn}; block = new rgw::d4n::CacheBlock{ .cacheObj = { .objName = "testName", @@ -108,13 +110,11 @@ class BlockDirectoryFixture: public ::testing::Test { .hostsList = { env->redisHost } }; - conn = new connection{boost::asio::make_strand(io)}; - ASSERT_NE(block, nullptr); ASSERT_NE(dir, nullptr); ASSERT_NE(conn, nullptr); - dir->init(env->cct, env->dpp); + dir->init(env->cct); /* Run fixture's connection */ config cfg; @@ -125,7 +125,9 @@ class BlockDirectoryFixture: public ::testing::Test { } virtual void TearDown() { - delete conn; + // call cancel() on the connection's executor + boost::asio::dispatch(conn->get_executor(), [c = conn] { c->cancel(); }); + delete block; delete dir; } @@ -134,7 +136,7 @@ class BlockDirectoryFixture: public ::testing::Test { rgw::d4n::BlockDirectory* dir; net::io_context io; - connection* conn; + std::shared_ptr conn; std::vector vals{"0", "", "0", "0", env->redisHost, "testName", "testBucket", "", "0", env->redisHost}; @@ -146,7 +148,6 @@ TEST_F(ObjectDirectoryFixture, SetYield) { spawn::spawn(io, [this] (spawn::yield_context yield) { ASSERT_EQ(0, dir->set(obj, optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -185,7 +186,6 @@ TEST_F(ObjectDirectoryFixture, GetYield) ASSERT_EQ(0, dir->get(obj, optional_yield{io, yield})); EXPECT_EQ(obj->objName, "newoid"); - dir->shutdown(); { boost::system::error_code ec; @@ -207,7 +207,6 @@ TEST_F(ObjectDirectoryFixture, CopyYield) spawn::spawn(io, [this] (spawn::yield_context yield) { ASSERT_EQ(0, dir->set(obj, optional_yield{io, yield})); ASSERT_EQ(0, dir->copy(obj, "copyTestName", "copyBucketName", optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -252,7 +251,6 @@ TEST_F(ObjectDirectoryFixture, DelYield) } ASSERT_EQ(0, dir->del(obj, optional_yield{io, yield})); - dir->shutdown(); { boost::system::error_code ec; @@ -279,7 +277,6 @@ TEST_F(ObjectDirectoryFixture, UpdateFieldYield) ASSERT_EQ(0, dir->set(obj, optional_yield{io, yield})); ASSERT_EQ(0, dir->update_field(obj, "objName", "newTestName", optional_yield{io, yield})); ASSERT_EQ(0, dir->update_field(obj, "objHosts", "127.0.0.1:5000", optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -305,7 +302,6 @@ TEST_F(BlockDirectoryFixture, SetYield) { spawn::spawn(io, [this] (spawn::yield_context yield) { ASSERT_EQ(0, dir->set(block, optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -344,7 +340,6 @@ TEST_F(BlockDirectoryFixture, GetYield) ASSERT_EQ(0, dir->get(block, optional_yield{io, yield})); EXPECT_EQ(block->cacheObj.objName, "newoid"); - dir->shutdown(); { boost::system::error_code ec; @@ -366,7 +361,6 @@ TEST_F(BlockDirectoryFixture, CopyYield) spawn::spawn(io, [this] (spawn::yield_context yield) { ASSERT_EQ(0, dir->set(block, optional_yield{io, yield})); ASSERT_EQ(0, dir->copy(block, "copyTestName", "copyBucketName", optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -411,7 +405,6 @@ TEST_F(BlockDirectoryFixture, DelYield) } ASSERT_EQ(0, dir->del(block, optional_yield{io, yield})); - dir->shutdown(); { boost::system::error_code ec; @@ -438,7 +431,6 @@ TEST_F(BlockDirectoryFixture, UpdateFieldYield) ASSERT_EQ(0, dir->set(block, optional_yield{io, yield})); ASSERT_EQ(0, dir->update_field(block, "objName", "newTestName", optional_yield{io, yield})); ASSERT_EQ(0, dir->update_field(block, "blockHosts", "127.0.0.1:5000", optional_yield{io, yield})); - dir->shutdown(); boost::system::error_code ec; request req; @@ -481,7 +473,6 @@ TEST_F(BlockDirectoryFixture, RemoveHostYield) } ASSERT_EQ(0, dir->remove_host(block, "127.0.0.1:6000", optional_yield{io, yield})); - dir->shutdown(); { boost::system::error_code ec; diff --git a/src/test/rgw/test_d4n_policy.cc b/src/test/rgw/test_d4n_policy.cc index 659fcf93e06a05..a73b01af72e516 100644 --- a/src/test/rgw/test_d4n_policy.cc +++ b/src/test/rgw/test_d4n_policy.cc @@ -60,20 +60,20 @@ class LFUDAPolicyFixture : public ::testing::Test { .hostsList = { env->redisHost } }; + conn = std::make_shared(boost::asio::make_strand(io)); rgw::cache::Partition partition_info{ .location = "RedisCache", .size = 1000 }; cacheDriver = new rgw::cache::RedisDriver{io, partition_info}; - policyDriver = new rgw::d4n::PolicyDriver(io, cacheDriver, "lfuda"); - dir = new rgw::d4n::BlockDirectory{io}; - conn = new connection{boost::asio::make_strand(io)}; + policyDriver = new rgw::d4n::PolicyDriver(conn, cacheDriver, "lfuda"); + dir = new rgw::d4n::BlockDirectory{conn}; ASSERT_NE(dir, nullptr); ASSERT_NE(cacheDriver, nullptr); ASSERT_NE(policyDriver, nullptr); ASSERT_NE(conn, nullptr); - dir->init(env->cct, env->dpp); + dir->init(env->cct); cacheDriver->initialize(env->dpp); - policyDriver->get_cache_policy()->init(env->cct, env->dpp); + policyDriver->get_cache_policy()->init(env->cct); bl.append("test data"); bufferlist attrVal; @@ -89,7 +89,9 @@ class LFUDAPolicyFixture : public ::testing::Test { } virtual void TearDown() { - delete conn; + // call cancel() on the connection's executor + boost::asio::dispatch(conn->get_executor(), [c = conn] { c->cancel(); }); + delete block; delete dir; delete cacheDriver; @@ -150,7 +152,7 @@ class LFUDAPolicyFixture : public ::testing::Test { rgw::cache::RedisDriver* cacheDriver; net::io_context io; - connection* conn; + std::shared_ptr conn; bufferlist bl; rgw::sal::Attrs attrs; @@ -165,9 +167,7 @@ TEST_F(LFUDAPolicyFixture, LocalGetBlockYield) ASSERT_GE(lfuda(env->dpp, block, cacheDriver, optional_yield{io, yield}), 0); - dir->shutdown(); cacheDriver->shutdown(); - dynamic_cast(policyDriver->get_cache_policy())->shutdown(); boost::system::error_code ec; request req; @@ -228,9 +228,7 @@ TEST_F(LFUDAPolicyFixture, RemoteGetBlockYield) ASSERT_GE(lfuda(env->dpp, block, cacheDriver, optional_yield{io, yield}), 0); - dir->shutdown(); cacheDriver->shutdown(); - dynamic_cast(policyDriver->get_cache_policy())->shutdown(); std::string key = block->cacheObj.bucketName + "_" + block->cacheObj.objName + "_" + std::to_string(block->blockID) + "_" + std::to_string(block->size); boost::system::error_code ec; @@ -260,9 +258,7 @@ TEST_F(LFUDAPolicyFixture, BackendGetBlockYield) spawn::spawn(io, [this] (spawn::yield_context yield) { ASSERT_GE(lfuda(env->dpp, block, cacheDriver, optional_yield{io, yield}), 0); - dir->shutdown(); cacheDriver->shutdown(); - dynamic_cast(policyDriver->get_cache_policy())->shutdown(); boost::system::error_code ec; request req;