From c5cc3fa6d11c202685d806af8758ac2a24c697b5 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 16 May 2020 10:00:29 -0500 Subject: [PATCH] unittest_cdc: generate fragmented buffers Signed-off-by: Sage Weil --- src/test/common/test_cdc.cc | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/test/common/test_cdc.cc b/src/test/common/test_cdc.cc index b34ecac3f3b..00187804fb1 100644 --- a/src/test/common/test_cdc.cc +++ b/src/test/common/test_cdc.cc @@ -13,13 +13,23 @@ void generate_buffer(int size, bufferlist *outbl, int seed = 0) { - outbl->clear(); - outbl->append_zero(size); - char *b = outbl->c_str(); - std::mt19937_64 engine; + std::mt19937_64 engine, engine2; engine.seed(seed); - for (size_t i = 0; i < size / sizeof(uint64_t); ++i) { - ((uint64_t*)b)[i] = engine(); + engine2.seed(seed); + + // assemble from randomly-sized segments! + outbl->clear(); + auto left = size; + while (left) { + size_t l = std::min((engine2() & 0xffff0) + 16, left); + left -= l; + bufferptr p(l); + p.set_length(l); + char *b = p.c_str(); + for (size_t i = 0; i < l / sizeof(uint64_t); ++i) { + ((uint64_t*)b)[i] = engine(); + } + outbl->append(p); } } -- 2.39.5