From 670a19f27761c937ad8d07abf9bb7c94ed4a3b00 Mon Sep 17 00:00:00 2001 From: Myoungwon Oh Date: Thu, 31 Aug 2023 14:13:07 +0900 Subject: [PATCH] test/crimson/seastore/rbm: add sub-tests regarding RBM to the existing tests Signed-off-by: Myoungwon Oh --- .../onode_tree/test_fltree_onode_manager.cc | 13 ++++++- .../seastore/onode_tree/test_staged_fltree.cc | 13 ++++++- .../seastore/test_collection_manager.cc | 15 +++++-- .../seastore/test_object_data_handler.cc | 39 ++++++++++++------- .../crimson/seastore/test_omap_manager.cc | 29 +++++++++----- src/test/crimson/seastore/test_seastore.cc | 14 +------ .../seastore/test_transaction_manager.cc | 12 +----- .../seastore/transaction_manager_test_state.h | 11 +++--- 8 files changed, 87 insertions(+), 59 deletions(-) diff --git a/src/test/crimson/seastore/onode_tree/test_fltree_onode_manager.cc b/src/test/crimson/seastore/onode_tree/test_fltree_onode_manager.cc index 83701701600..1f661cdca59 100644 --- a/src/test/crimson/seastore/onode_tree/test_fltree_onode_manager.cc +++ b/src/test/crimson/seastore/onode_tree/test_fltree_onode_manager.cc @@ -239,7 +239,7 @@ struct fltree_onode_manager_test_t fltree_onode_manager_test_t() {} }; -TEST_F(fltree_onode_manager_test_t, 1_single) +TEST_P(fltree_onode_manager_test_t, 1_single) { run_async([this] { uint64_t block_size = tm->get_block_size(); @@ -267,7 +267,7 @@ TEST_F(fltree_onode_manager_test_t, 1_single) }); } -TEST_F(fltree_onode_manager_test_t, 2_synthetic) +TEST_P(fltree_onode_manager_test_t, 2_synthetic) { run_async([this] { uint64_t block_size = tm->get_block_size(); @@ -319,3 +319,12 @@ TEST_F(fltree_onode_manager_test_t, 2_synthetic) validate_list_onodes(pool); }); } + +INSTANTIATE_TEST_SUITE_P( + fltree_onode__manager_test, + fltree_onode_manager_test_t, + ::testing::Values ( + "segmented", + "circularbounded" + ) +); diff --git a/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc b/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc index 26461b87f04..7357b5ced1e 100644 --- a/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc +++ b/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc @@ -1572,7 +1572,7 @@ struct d_seastore_tm_test_t : } }; -TEST_F(d_seastore_tm_test_t, 6_random_tree_insert_erase) +TEST_P(d_seastore_tm_test_t, 6_random_tree_insert_erase) { run_async([this] { constexpr bool TEST_SEASTORE = true; @@ -1662,7 +1662,7 @@ TEST_F(d_seastore_tm_test_t, 6_random_tree_insert_erase) }); } -TEST_F(d_seastore_tm_test_t, 7_tree_insert_erase_eagain) +TEST_P(d_seastore_tm_test_t, 7_tree_insert_erase_eagain) { run_async([this] { constexpr double EAGAIN_PROBABILITY = 0.1; @@ -1781,3 +1781,12 @@ TEST_F(d_seastore_tm_test_t, 7_tree_insert_erase_eagain) tree.reset(); }); } + +INSTANTIATE_TEST_SUITE_P( + d_seastore_tm_test, + d_seastore_tm_test_t, + ::testing::Values ( + "segmented", + "circularbounded" + ) +); diff --git a/src/test/crimson/seastore/test_collection_manager.cc b/src/test/crimson/seastore/test_collection_manager.cc index 00c5a6b87cf..cedcc5e8f44 100644 --- a/src/test/crimson/seastore/test_collection_manager.cc +++ b/src/test/crimson/seastore/test_collection_manager.cc @@ -100,7 +100,7 @@ struct collection_manager_test_t : } }; -TEST_F(collection_manager_test_t, basic) +TEST_P(collection_manager_test_t, basic) { run_async([this] { coll_root_t coll_root = get_root(); @@ -137,7 +137,7 @@ TEST_F(collection_manager_test_t, basic) }); } -TEST_F(collection_manager_test_t, overflow) +TEST_P(collection_manager_test_t, overflow) { run_async([this] { coll_root_t coll_root = get_root(); @@ -158,7 +158,7 @@ TEST_F(collection_manager_test_t, overflow) }); } -TEST_F(collection_manager_test_t, update) +TEST_P(collection_manager_test_t, update) { run_async([this] { coll_root_t coll_root = get_root(); @@ -184,3 +184,12 @@ TEST_F(collection_manager_test_t, update) checking_mappings(coll_root); }); } + +INSTANTIATE_TEST_SUITE_P( + collection_manager_test, + collection_manager_test_t, + ::testing::Values ( + "segmented", + "circularbounded" + ) +); diff --git a/src/test/crimson/seastore/test_object_data_handler.cc b/src/test/crimson/seastore/test_object_data_handler.cc index abbe7445738..6510cb5d93f 100644 --- a/src/test/crimson/seastore/test_object_data_handler.cc +++ b/src/test/crimson/seastore/test_object_data_handler.cc @@ -163,7 +163,7 @@ struct object_data_handler_test_t: } }; -TEST_F(object_data_handler_test_t, single_write) +TEST_P(object_data_handler_test_t, single_write) { run_async([this] { write(1<<20, 8<<10, 'c'); @@ -173,7 +173,7 @@ TEST_F(object_data_handler_test_t, single_write) }); } -TEST_F(object_data_handler_test_t, multi_write) +TEST_P(object_data_handler_test_t, multi_write) { run_async([this] { write((1<<20) - (4<<10), 4<<10, 'a'); @@ -188,7 +188,7 @@ TEST_F(object_data_handler_test_t, multi_write) }); } -TEST_F(object_data_handler_test_t, write_hole) +TEST_P(object_data_handler_test_t, write_hole) { run_async([this] { write((1<<20) - (4<<10), 4<<10, 'a'); @@ -203,7 +203,7 @@ TEST_F(object_data_handler_test_t, write_hole) }); } -TEST_F(object_data_handler_test_t, overwrite_single) +TEST_P(object_data_handler_test_t, overwrite_single) { run_async([this] { write((1<<20), 4<<10, 'a'); @@ -214,7 +214,7 @@ TEST_F(object_data_handler_test_t, overwrite_single) }); } -TEST_F(object_data_handler_test_t, overwrite_double) +TEST_P(object_data_handler_test_t, overwrite_double) { run_async([this] { write((1<<20), 4<<10, 'a'); @@ -232,7 +232,7 @@ TEST_F(object_data_handler_test_t, overwrite_double) }); } -TEST_F(object_data_handler_test_t, overwrite_partial) +TEST_P(object_data_handler_test_t, overwrite_partial) { run_async([this] { write((1<<20), 12<<10, 'a'); @@ -257,7 +257,7 @@ TEST_F(object_data_handler_test_t, overwrite_partial) }); } -TEST_F(object_data_handler_test_t, unaligned_write) +TEST_P(object_data_handler_test_t, unaligned_write) { run_async([this] { objaddr_t base = 1<<20; @@ -274,7 +274,7 @@ TEST_F(object_data_handler_test_t, unaligned_write) }); } -TEST_F(object_data_handler_test_t, unaligned_overwrite) +TEST_P(object_data_handler_test_t, unaligned_overwrite) { run_async([this] { objaddr_t base = 1<<20; @@ -295,7 +295,7 @@ TEST_F(object_data_handler_test_t, unaligned_overwrite) }); } -TEST_F(object_data_handler_test_t, truncate) +TEST_P(object_data_handler_test_t, truncate) { run_async([this] { objaddr_t base = 1<<20; @@ -317,7 +317,7 @@ TEST_F(object_data_handler_test_t, truncate) }); } -TEST_F(object_data_handler_test_t, no_split) { +TEST_P(object_data_handler_test_t, no_split) { run_async([this] { write(0, 8<<10, 'x'); write(0, 8<<10, 'a'); @@ -329,7 +329,7 @@ TEST_F(object_data_handler_test_t, no_split) { }); } -TEST_F(object_data_handler_test_t, split_left) { +TEST_P(object_data_handler_test_t, split_left) { run_async([this] { write(0, 128<<10, 'x'); @@ -349,7 +349,7 @@ TEST_F(object_data_handler_test_t, split_left) { }); } -TEST_F(object_data_handler_test_t, split_right) { +TEST_P(object_data_handler_test_t, split_right) { run_async([this] { write(0, 128<<10, 'x'); write(4<<10, 60<<10, 'a'); @@ -367,7 +367,7 @@ TEST_F(object_data_handler_test_t, split_right) { read(0, 128<<10); }); } -TEST_F(object_data_handler_test_t, split_left_right) { +TEST_P(object_data_handler_test_t, split_left_right) { run_async([this] { write(0, 128<<10, 'x'); write(48<<10, 32<<10, 'a'); @@ -384,7 +384,7 @@ TEST_F(object_data_handler_test_t, split_left_right) { } }); } -TEST_F(object_data_handler_test_t, multiple_split) { +TEST_P(object_data_handler_test_t, multiple_split) { run_async([this] { write(0, 128<<10, 'x'); @@ -418,3 +418,14 @@ TEST_F(object_data_handler_test_t, multiple_split) { read(0, 128<<10); }); } + +INSTANTIATE_TEST_SUITE_P( + object_data_handler_test, + object_data_handler_test_t, + ::testing::Values ( + "segmented", + "circularbounded" + ) +); + + diff --git a/src/test/crimson/seastore/test_omap_manager.cc b/src/test/crimson/seastore/test_omap_manager.cc index 9973add40e9..ab2218565f8 100644 --- a/src/test/crimson/seastore/test_omap_manager.cc +++ b/src/test/crimson/seastore/test_omap_manager.cc @@ -280,7 +280,7 @@ struct omap_manager_test_t : } }; -TEST_F(omap_manager_test_t, basic) +TEST_P(omap_manager_test_t, basic) { run_async([this] { omap_root_t omap_root = initialize(); @@ -312,7 +312,7 @@ TEST_F(omap_manager_test_t, basic) }); } -TEST_F(omap_manager_test_t, force_leafnode_split) +TEST_P(omap_manager_test_t, force_leafnode_split) { run_async([this] { omap_root_t omap_root = initialize(); @@ -333,7 +333,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split) }); } -TEST_F(omap_manager_test_t, force_leafnode_split_merge) +TEST_P(omap_manager_test_t, force_leafnode_split_merge) { run_async([this] { omap_root_t omap_root = initialize(); @@ -376,7 +376,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge) }); } -TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) +TEST_P(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) { run_async([this] { omap_root_t omap_root = initialize(); @@ -423,7 +423,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) }); } -TEST_F(omap_manager_test_t, force_split_listkeys_list_rmkey_range_clear) +TEST_P(omap_manager_test_t, force_split_listkeys_list_rmkey_range_clear) { run_async([this] { omap_root_t omap_root = initialize(); @@ -511,7 +511,7 @@ TEST_F(omap_manager_test_t, force_split_listkeys_list_rmkey_range_clear) }); } -TEST_F(omap_manager_test_t, force_inner_node_split_list_rmkey_range) +TEST_P(omap_manager_test_t, force_inner_node_split_list_rmkey_range) { run_async([this] { omap_root_t omap_root = initialize(); @@ -584,7 +584,7 @@ TEST_F(omap_manager_test_t, force_inner_node_split_list_rmkey_range) } -TEST_F(omap_manager_test_t, internal_force_split) +TEST_P(omap_manager_test_t, internal_force_split) { run_async([this] { omap_root_t omap_root = initialize(); @@ -606,7 +606,7 @@ TEST_F(omap_manager_test_t, internal_force_split) }); } -TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) +TEST_P(omap_manager_test_t, internal_force_merge_fullandbalanced) { run_async([this] { omap_root_t omap_root = initialize(); @@ -646,7 +646,7 @@ TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) }); } -TEST_F(omap_manager_test_t, replay) +TEST_P(omap_manager_test_t, replay) { run_async([this] { omap_root_t omap_root = initialize(); @@ -692,7 +692,7 @@ TEST_F(omap_manager_test_t, replay) } -TEST_F(omap_manager_test_t, internal_force_split_to_root) +TEST_P(omap_manager_test_t, internal_force_split_to_root) { run_async([this] { omap_root_t omap_root = initialize(); @@ -719,3 +719,12 @@ TEST_F(omap_manager_test_t, internal_force_split_to_root) check_mappings(omap_root); }); } + +INSTANTIATE_TEST_SUITE_P( + omap_manager_test, + omap_manager_test_t, + ::testing::Values ( + "segmented", + "circularbounded" + ) +); diff --git a/src/test/crimson/seastore/test_seastore.cc b/src/test/crimson/seastore/test_seastore.cc index d2f57a385f1..63bf4c51f2a 100644 --- a/src/test/crimson/seastore/test_seastore.cc +++ b/src/test/crimson/seastore/test_seastore.cc @@ -56,8 +56,7 @@ ghobject_t make_temp_oid(int i) { struct seastore_test_t : public seastar_test_suite_t, - SeaStoreTestState, - ::testing::WithParamInterface { + SeaStoreTestState { coll_t coll_name{spg_t{pg_t{0, 0}}}; CollectionRef coll; @@ -65,16 +64,7 @@ struct seastore_test_t : seastore_test_t() {} seastar::future<> set_up_fut() final { - std::string j_type = GetParam(); - journal_type_t journal; - if (j_type == "segmented") { - journal = journal_type_t::SEGMENTED; - } else if (j_type == "circularbounded") { - journal = journal_type_t::RANDOM_BLOCK; - } else { - ceph_assert(0 == "no support"); - } - return tm_setup(journal + return tm_setup( ).then([this] { return sharded_seastore->create_new_collection(coll_name); }).then([this](auto coll_ref) { diff --git a/src/test/crimson/seastore/test_transaction_manager.cc b/src/test/crimson/seastore/test_transaction_manager.cc index d9e0ecad167..1148884a0c1 100644 --- a/src/test/crimson/seastore/test_transaction_manager.cc +++ b/src/test/crimson/seastore/test_transaction_manager.cc @@ -56,8 +56,7 @@ struct fmt::formatter : fmt::formatter { struct transaction_manager_test_t : public seastar_test_suite_t, - TMTestState, - ::testing::WithParamInterface { + TMTestState { std::random_device rd; std::mt19937 gen; @@ -76,14 +75,7 @@ struct transaction_manager_test_t : } seastar::future<> set_up_fut() final { - std::string j_type = GetParam(); - if (j_type == "segmented") { - return tm_setup(journal_type_t::SEGMENTED); - } else if (j_type == "circularbounded") { - return tm_setup(journal_type_t::RANDOM_BLOCK); - } else { - ceph_assert(0 == "no support"); - } + return tm_setup(); } seastar::future<> tear_down_fut() final { diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index fadf17019c1..c7c035928bc 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -167,7 +167,7 @@ public: void set_primary_device_ref(DeviceRef) final; }; -class EphemeralTestState { +class EphemeralTestState : public ::testing::WithParamInterface { protected: journal_type_t journal_type; size_t num_main_device_managers = 0; @@ -209,16 +209,15 @@ protected: restart_fut().get0(); } - seastar::future<> tm_setup( - journal_type_t type = journal_type_t::SEGMENTED) { + seastar::future<> tm_setup() { LOG_PREFIX(EphemeralTestState::tm_setup); - journal_type = type; - if (journal_type == journal_type_t::SEGMENTED) { + std::string j_type = GetParam(); + if (j_type == "segmented") { devices.reset(new EphemeralSegmentedDevices( num_main_device_managers, num_cold_device_managers)); } else { - assert(journal_type == journal_type_t::RANDOM_BLOCK); + assert(j_type == "circularbounded"); //TODO: multiple devices ceph_assert(num_main_device_managers == 1); ceph_assert(num_cold_device_managers == 0); -- 2.39.5