Skip to content

Commit

Permalink
test/crimson/seastore/test_btree_lba_manager: test mutate_mapping on …
Browse files Browse the repository at this point in the history
…more split/merge states

incref_mapping has a slightly different relationship with merge than
decref_mapping, update split/merge test to ensure that we call into
mutate_mapping at each step as the nodes fill, split, empty, and merge.

Signed-off-by: Samuel Just <[email protected]>
  • Loading branch information
athanatos committed Oct 22, 2020
1 parent af4d035 commit 8bf2610
Showing 1 changed file with 38 additions and 14 deletions.
52 changes: 38 additions & 14 deletions src/test/crimson/seastore/test_btree_lba_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ struct btree_lba_manager_test :
}
}

auto incref_mapping(
test_transaction_t &t,
laddr_t addr) {
return incref_mapping(t, t.mappings.find(addr));
}

void incref_mapping(
test_transaction_t &t,
test_lba_mapping_t::iterator target) {
Expand Down Expand Up @@ -337,30 +343,48 @@ TEST_F(btree_lba_manager_test, force_split_merge)
check_mappings(t);
check_mappings();
}
incref_mapping(t, ret->get_laddr());
decref_mapping(t, ret->get_laddr());
}
logger().debug("submitting transaction");
submit_test_transaction(std::move(t));
if (i % 50 == 0) {
check_mappings();
}
}
auto addresses = get_mapped_addresses();
auto t = create_transaction();
for (unsigned i = 0; i != addresses.size(); ++i) {
if (i % 2 == 0) {
decref_mapping(t, addresses[i]);
}
logger().debug("submitting transaction");
if (i % 7 == 0) {
submit_test_transaction(std::move(t));
t = create_transaction();
{
auto addresses = get_mapped_addresses();
auto t = create_transaction();
for (unsigned i = 0; i != addresses.size(); ++i) {
if (i % 2 == 0) {
incref_mapping(t, addresses[i]);
decref_mapping(t, addresses[i]);
decref_mapping(t, addresses[i]);
}
logger().debug("submitting transaction");
if (i % 7 == 0) {
submit_test_transaction(std::move(t));
t = create_transaction();
}
if (i % 13 == 0) {
check_mappings();
check_mappings(t);
}
}
if (i % 13 == 0) {
check_mappings();
check_mappings(t);
submit_test_transaction(std::move(t));
}
{
auto addresses = get_mapped_addresses();
auto t = create_transaction();
for (unsigned i = 0; i != addresses.size(); ++i) {
incref_mapping(t, addresses[i]);
decref_mapping(t, addresses[i]);
decref_mapping(t, addresses[i]);
}
check_mappings(t);
submit_test_transaction(std::move(t));
check_mappings();
}
submit_test_transaction(std::move(t));
});
}

Expand Down

0 comments on commit 8bf2610

Please sign in to comment.