Skip to content

Commit 278f3f6

Browse files
committed
test/crimson/seastore/test_omap_manager: redesign test basic
Signed-off-by: Chanyoung Park <[email protected]>
1 parent dd35ac2 commit 278f3f6

File tree

1 file changed

+101
-12
lines changed

1 file changed

+101
-12
lines changed

src/test/crimson/seastore/test_omap_manager.cc

Lines changed: 101 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,33 @@ struct omap_manager_test_t :
105105
return key;
106106
}
107107

108+
std::vector<std::string> set_random_keys(
109+
omap_root_t &omap_root,
110+
Transaction &t,
111+
size_t count) {
112+
std::map<std::string, ceph::bufferlist> kvs;
113+
std::vector<std::string> keys;
114+
keys.reserve(count);
115+
116+
while (kvs.size() < count) {
117+
auto k = rand_name(STR_LEN);
118+
auto v = rand_buffer(STR_LEN);
119+
// 'inserted' will be true only if the key did not already exist.
120+
if (auto [_, inserted] = kvs.emplace(k, v); inserted) {
121+
test_omap_mappings[k] = v;
122+
keys.push_back(k);
123+
}
124+
}
125+
126+
with_trans_intr(
127+
t,
128+
[&, this](auto &t) {
129+
return omap_manager->omap_set_keys(omap_root, t, std::move(kvs));
130+
}).unsafe_get();
131+
132+
return keys;
133+
}
134+
108135
void get_value(
109136
omap_root_t &omap_root,
110137
Transaction &t,
@@ -340,34 +367,96 @@ struct omap_manager_test_t :
340367
}
341368
};
342369

343-
TEST_P(omap_manager_test_t, basic)
370+
TEST_P(omap_manager_test_t, set_key)
344371
{
345372
run_async([this] {
346373
omap_root_t omap_root = initialize();
347374

348-
string key = "owner";
349-
string val = "test";
375+
for (int i = 0; i < 8; ++i) {
376+
auto t = create_mutate_transaction();
377+
set_random_key(omap_root, *t);
378+
check_mappings(omap_root, *t);
379+
submit_transaction(std::move(t));
380+
check_mappings(omap_root);
381+
}
382+
});
383+
}
350384

385+
TEST_P(omap_manager_test_t, set_keys)
386+
{
387+
run_async([this] {
388+
omap_root_t omap_root = initialize();
389+
390+
for (int i = 0; i < 8; ++i) {
391+
auto t = create_mutate_transaction();
392+
set_random_keys(omap_root, *t, std::pow(2, i));
393+
check_mappings(omap_root, *t);
394+
submit_transaction(std::move(t));
395+
check_mappings(omap_root);
396+
}
397+
});
398+
}
399+
400+
TEST_P(omap_manager_test_t, rm_key)
401+
{
402+
run_async([this] {
403+
omap_root_t omap_root = initialize();
404+
405+
auto t = create_mutate_transaction();
406+
set_random_keys(omap_root, *t, 8);
407+
submit_transaction(std::move(t));
408+
check_mappings(omap_root);
409+
410+
while (test_omap_mappings.size() > 0) {
411+
auto t = create_mutate_transaction();
412+
rm_key(omap_root, *t, test_omap_mappings.begin()->first);
413+
check_mappings(omap_root, *t);
414+
submit_transaction(std::move(t));
415+
check_mappings(omap_root);
416+
}
417+
});
418+
}
419+
420+
TEST_P(omap_manager_test_t, rm_key_range)
421+
{
422+
run_async([this] {
423+
omap_root_t omap_root = initialize();
424+
425+
auto t = create_mutate_transaction();
426+
set_random_keys(omap_root, *t, 1200);
427+
submit_transaction(std::move(t));
428+
check_mappings(omap_root);
429+
430+
std::vector<std::string> keys;
431+
for (const auto& [k, _] : test_omap_mappings) {
432+
keys.push_back(k);
433+
}
434+
435+
logger().debug("== delete the middle 400 keys");
351436
{
352437
auto t = create_mutate_transaction();
353-
logger().debug("first transaction");
354-
set_key(omap_root, *t, key, val);
355-
get_value(omap_root, *t, key);
438+
rm_key_range(omap_root, *t, keys[400], keys[799]);
439+
check_mappings(omap_root, *t);
356440
submit_transaction(std::move(t));
441+
check_mappings(omap_root);
357442
}
443+
444+
logger().debug("== delete the first 400 keys");
358445
{
359446
auto t = create_mutate_transaction();
360-
logger().debug("second transaction");
361-
get_value(omap_root, *t, key);
362-
rm_key(omap_root, *t, key);
363-
get_value(omap_root, *t, key);
447+
rm_key_range(omap_root, *t, keys[0], keys[399]);
448+
check_mappings(omap_root, *t);
364449
submit_transaction(std::move(t));
450+
check_mappings(omap_root);
365451
}
452+
453+
logger().debug("== delete the last 400 keys");
366454
{
367455
auto t = create_mutate_transaction();
368-
logger().debug("third transaction");
369-
get_value(omap_root, *t, key);
456+
rm_key_range(omap_root, *t, keys[800], keys[1199]);
457+
check_mappings(omap_root, *t);
370458
submit_transaction(std::move(t));
459+
check_mappings(omap_root);
371460
}
372461
});
373462
}

0 commit comments

Comments
 (0)