From e9048de8befd5fa239de05af575ba14c5e9d987f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 24 Aug 2021 05:38:36 +0000 Subject: [PATCH] test/crimson/seastore/test_transaction_manager: update find_hole_assert_trigger Signed-off-by: Samuel Just --- .../seastore/test_transaction_manager.cc | 65 ++++++++++--------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/test/crimson/seastore/test_transaction_manager.cc b/src/test/crimson/seastore/test_transaction_manager.cc index ee1a5e1a7aeb7..b1c85584cb6ca 100644 --- a/src/test/crimson/seastore/test_transaction_manager.cc +++ b/src/test/crimson/seastore/test_transaction_manager.cc @@ -568,42 +568,43 @@ struct transaction_manager_test_t : EXPECT_FALSE(success); } - auto trigger_find_hole(const size_t& size, int &num) { + auto allocate_sequentially(const size_t& size, int &num) { return repeat_eagain([&, this] { - return seastar::do_with(create_transaction(), [&, this] (auto &t) { - return crimson::do_for_each( - boost::make_counting_iterator(0), - boost::make_counting_iterator(num), - [&, this] (auto idx) { - using ertr = with_trans_ertr; - using ret = ertr::future<>; - return itm.alloc_extent(*(t.t), L_ADDR_MIN, size) - .safe_then([&, this] (auto extent) ->ret { - extent->set_contents(get_random_contents()); - EXPECT_FALSE(test_mappings.contains(extent->get_laddr(), t.mapping_delta)); - EXPECT_EQ(size, extent->get_length()); - test_mappings.alloced(extent->get_laddr(), *extent, t.mapping_delta); - return ertr::make_ready_future<>(); - }); - }).safe_then([&t, this] { - using ertr = with_trans_ertr; - using ret = ertr::future<>; - return itm.submit_transaction(*t.t).safe_then([]() -> ret { - return ertr::make_ready_future<>(); - }); - }).safe_then([&t, this]() { - test_mappings.consume(t.mapping_delta); - }); - }); + return seastar::do_with( + create_transaction(), + [&, this](auto &t) { + return with_trans_intr( + *t.t, + [&, this](auto &) { + return trans_intr::do_for_each( + boost::make_counting_iterator(0), + boost::make_counting_iterator(num), + [&, this](auto) { + return tm->alloc_extent( + *(t.t), L_ADDR_MIN, size + ).si_then([&, this](auto extent) { + extent->set_contents(get_random_contents()); + EXPECT_FALSE( + test_mappings.contains(extent->get_laddr(), t.mapping_delta)); + EXPECT_EQ(size, extent->get_length()); + test_mappings.alloced(extent->get_laddr(), *extent, t.mapping_delta); + return seastar::now(); + }); + }).si_then([&t, this] { + return tm->submit_transaction(*t.t); + }); + }).safe_then([&t, this] { + test_mappings.consume(t.mapping_delta); + }); + }); }).safe_then([this]() { return segment_cleaner->run_until_halt(); }).handle_error( crimson::ct_error::assert_all{ - "Invalid error in SeaStore::list_collections" + "Invalid error in SeaStore::list_collections" } ); } - }; TEST_F(transaction_manager_test_t, basic) @@ -999,17 +1000,17 @@ TEST_F(transaction_manager_test_t, random_writes_concurrent) }); } -TEST_F(transaction_manager_test_t, find_hole_assert_triggeri) +TEST_F(transaction_manager_test_t, find_hole_assert_trigger) { - constexpr unsigned max = 20; + constexpr unsigned max = 10; constexpr size_t BSIZE = 4<<10; - int num = 100; + int num = 40; run([&, this] { return seastar::parallel_for_each( boost::make_counting_iterator(0u), boost::make_counting_iterator(max), [&, this](auto idx) { - return trigger_find_hole(BSIZE, num); + return allocate_sequentially(BSIZE, num); }); }); -- 2.39.5