From 33f61b832a3d133bf89e396e8deb021f18f0631e Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 19 Oct 2020 15:14:28 -0700 Subject: [PATCH] test/crimson/seastore/test_btree_lba_manager: add single transaction split/merge test Signed-off-by: Samuel Just --- .../seastore/test_btree_lba_manager.cc | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/test/crimson/seastore/test_btree_lba_manager.cc b/src/test/crimson/seastore/test_btree_lba_manager.cc index b02d34427b1..78d47d4da05 100644 --- a/src/test/crimson/seastore/test_btree_lba_manager.cc +++ b/src/test/crimson/seastore/test_btree_lba_manager.cc @@ -249,6 +249,15 @@ struct btree_lba_manager_test : return addresses; } + std::vector get_mapped_addresses(test_transaction_t &t) { + std::vector addresses; + addresses.reserve(t.mappings.size()); + for (auto &i: t.mappings) { + addresses.push_back(i.first); + } + return addresses; + } + void check_mappings() { auto t = create_transaction(); check_mappings(t); @@ -354,3 +363,45 @@ TEST_F(btree_lba_manager_test, force_split_merge) submit_test_transaction(std::move(t)); }); } + +TEST_F(btree_lba_manager_test, single_transaction_split_merge) +{ + run_async([this] { + { + auto t = create_transaction(); + for (unsigned i = 0; i < 600; ++i) { + alloc_mapping(t, 0, block_size, get_paddr()); + } + check_mappings(t); + submit_test_transaction(std::move(t)); + } + check_mappings(); + + { + auto addresses = get_mapped_addresses(); + auto t = create_transaction(); + for (unsigned i = 0; i != addresses.size(); ++i) { + if (i % 4 != 0) { + decref_mapping(t, addresses[i]); + } + } + check_mappings(t); + submit_test_transaction(std::move(t)); + } + check_mappings(); + + { + auto t = create_transaction(); + for (unsigned i = 0; i < 600; ++i) { + alloc_mapping(t, 0, block_size, get_paddr()); + } + auto addresses = get_mapped_addresses(t); + for (unsigned i = 0; i != addresses.size(); ++i) { + decref_mapping(t, addresses[i]); + } + check_mappings(t); + submit_test_transaction(std::move(t)); + } + check_mappings(); + }); +} -- 2.39.5