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<TransactionManager::alloc_extent_iertr>;
- using ret = ertr::future<>;
- return itm.alloc_extent<TestBlock>(*(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<TransactionManager::submit_transaction_iertr>;
- 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<TestBlock>(
+ *(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)
});
}
-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);
});
});