From: Radoslaw Zarzynski Date: Fri, 19 Oct 2018 10:52:45 +0000 (+0200) Subject: tests: introduce BufferListIterator.iterate_with_empties. X-Git-Tag: v14.1.0~222^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=66b7cc88062f6338f34e91a44aadddb9f9a4652c;p=ceph-ci.git tests: introduce BufferListIterator.iterate_with_empties. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/test/bufferlist.cc b/src/test/bufferlist.cc index c8631a609f8..93bbba0f4bd 100644 --- a/src/test/bufferlist.cc +++ b/src/test/bufferlist.cc @@ -828,6 +828,53 @@ TEST(BufferListIterator, advance) { } } +TEST(BufferListIterator, iterate_with_empties) { + ceph::bufferlist bl; + EXPECT_EQ(bl.get_num_buffers(), 0u); + + bl.push_back(ceph::buffer::create(0)); + EXPECT_EQ(bl.length(), 0u); + EXPECT_EQ(bl.get_num_buffers(), 1u); + + encode(42l, bl); + EXPECT_EQ(bl.get_num_buffers(), 2u); + + bl.push_back(ceph::buffer::create(0)); + EXPECT_EQ(bl.get_num_buffers(), 3u); + + // append bufferlist with single, 0-sized ptr inside + { + ceph::bufferlist bl_with_empty_ptr; + bl_with_empty_ptr.push_back(ceph::buffer::create(0)); + EXPECT_EQ(bl_with_empty_ptr.length(), 0u); + EXPECT_EQ(bl_with_empty_ptr.get_num_buffers(), 1u); + + bl.append(bl_with_empty_ptr); + } + + encode(24l, bl); + EXPECT_EQ(bl.get_num_buffers(), 5u); + + auto i = bl.cbegin(); + long val; + decode(val, i); + EXPECT_EQ(val, 42l); + + decode(val, i); + EXPECT_EQ(val, 24l); + + val = 0; + i.seek(sizeof(long)); + decode(val, i); + EXPECT_EQ(val, 24l); + EXPECT_TRUE(i == bl.end()); + + i.seek(0); + decode(val, i); + EXPECT_EQ(val, 42); + EXPECT_FALSE(i == bl.end()); +} + TEST(BufferListIterator, get_ptr_and_advance) { bufferptr a("one", 3);