From 76e9262efbc652bf9f5b21392ec5e52bee87a64b Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 7 Apr 2022 20:48:38 +0000 Subject: [PATCH] test/crimson/seastore: improve test_seastore zero() coverage Signed-off-by: Samuel Just --- src/test/crimson/seastore/test_seastore.cc | 69 ++++++++++++++++------ 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/src/test/crimson/seastore/test_seastore.cc b/src/test/crimson/seastore/test_seastore.cc index 7b827e5395c..c6471998d9c 100644 --- a/src/test/crimson/seastore/test_seastore.cc +++ b/src/test/crimson/seastore/test_seastore.cc @@ -790,24 +790,57 @@ TEST_F(seastore_test_t, sparse_read) TEST_F(seastore_test_t, zero) { run_async([this] { - auto &test_obj = get_object(make_oid(0)); - test_obj.write( - *seastore, - 1024, - 1024, - 'a'); - test_obj.read( - *seastore, - 1024, - 1024); - test_obj.check_size(*seastore); - test_obj.zero(*seastore, 1124, 200); - test_obj.read( - *seastore, - 1024, - 1024); - test_obj.check_size(*seastore); + auto test_zero = [this]( + // [(off, len, repeat)] + std::vector> writes, + uint64_t zero_off, uint64_t zero_len) { + + // Test zero within a block + auto &test_obj = get_object(make_oid(0)); + uint64_t size = 0; + for (auto &[off, len, repeat]: writes) { + for (decltype(repeat) i = 0; i < repeat; ++i) { + test_obj.write(*seastore, off + (len * repeat), len, 'a'); + } + size = off + (len * (repeat + 1)); + } + test_obj.read( + *seastore, + 0, + size); + test_obj.check_size(*seastore); + test_obj.zero(*seastore, zero_off, zero_len); + test_obj.read( + *seastore, + 0, + size); + test_obj.check_size(*seastore); + remove_object(test_obj); + }; - remove_object(test_obj); + const uint64_t BS = 4<<10; + + // Test zero within a block + test_zero( + {{1<<10, 1<<10, 1}}, + 1124, 200); + + // Multiple writes, partial on left, partial on right. + test_zero( + {{BS, BS, 10}}, + BS + 128, + BS * 4); + + // Single large write, block boundary on right, partial on left. + test_zero( + {{BS, BS * 10, 1}}, + BS + 128, + (BS * 4) - 128); + + // Multiple writes, block boundary on left, partial on right. + test_zero( + {{BS, BS, 10}}, + BS, + (BS * 4) + 128); }); } -- 2.39.5