From e20837a15f899a4c18d5a586c48f4b8517f3e282 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Fri, 19 Oct 2018 19:09:35 +0200 Subject: [PATCH] tests: introduce BufferList.ContiguousAppender. Signed-off-by: Radoslaw Zarzynski --- src/test/bufferlist.cc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/bufferlist.cc b/src/test/bufferlist.cc index 00bdb288775..b33018dd044 100644 --- a/src/test/bufferlist.cc +++ b/src/test/bufferlist.cc @@ -2681,6 +2681,38 @@ TEST(BufferList, InternalCarriage) { EXPECT_EQ(bl.get_num_buffers(), 3u); } +TEST(BufferList, ContiguousAppender) { + ceph::bufferlist bl; + EXPECT_EQ(bl.get_num_buffers(), 0u); + + // we expect a flush in ~contiguous_appender + { + auto ap = bl.get_contiguous_appender(100); + + denc(42l, ap); + EXPECT_EQ(bl.get_num_buffers(), 1u); + + // append bufferlist with single ptr inside. This should + // commit changes to bl::_len and the underlying bp::len. + { + ceph::bufferlist bl_with_foo; + bl_with_foo.append("foo", 3); + EXPECT_EQ(bl_with_foo.length(), 3u); + EXPECT_EQ(bl_with_foo.get_num_buffers(), 1u); + + ap.append(bl_with_foo); + // 3 as the ap::append(const bl&) splits the bp with free + // space. + EXPECT_EQ(bl.get_num_buffers(), 3u); + } + + denc(24l, ap); + EXPECT_EQ(bl.get_num_buffers(), 3u); + EXPECT_EQ(bl.length(), sizeof(long) + 3u); + } + EXPECT_EQ(bl.length(), 2u * sizeof(long) + 3u); +} + TEST(BufferList, TestPtrAppend) { bufferlist bl; char correct[MAX_TEST]; -- 2.39.5