]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
unittest_bufferlist: test page_aligned_appender 15728/head
authorSage Weil <sage@redhat.com>
Tue, 20 Jun 2017 03:24:36 +0000 (23:24 -0400)
committerJianpeng Ma <jianpeng.ma@intel.com>
Tue, 20 Jun 2017 23:09:04 +0000 (07:09 +0800)
Signed-off-by: Sage Weil <sage@redhat.com>
src/test/bufferlist.cc

index 983b4ef750cc65abdda194aa43551da532c9cbb0..53d66a036c8b96304639a57f169626ac65787d8d 100644 (file)
@@ -1703,6 +1703,33 @@ TEST(BufferList, is_n_page_sized) {
   }
 }
 
+TEST(BufferList, page_aligned_appender) {
+  bufferlist bl;
+  auto a = bl.get_page_aligned_appender(5);
+  a.append("asdf", 4);
+  a.flush();
+  cout << bl << std::endl;
+  ASSERT_EQ(1u, bl.get_num_buffers());
+  a.append("asdf", 4);
+  for (unsigned n = 0; n < 3 * CEPH_PAGE_SIZE; ++n) {
+    a.append("x", 1);
+  }
+  a.flush();
+  cout << bl << std::endl;
+  ASSERT_EQ(1u, bl.get_num_buffers());
+  for (unsigned n = 0; n < 3 * CEPH_PAGE_SIZE; ++n) {
+    a.append("y", 1);
+  }
+  a.flush();
+  cout << bl << std::endl;
+  ASSERT_EQ(2u, bl.get_num_buffers());
+  for (unsigned n = 0; n < 10 * CEPH_PAGE_SIZE; ++n) {
+    a.append("asdfasdfasdf", 1);
+  }
+  a.flush();
+  cout << bl << std::endl;
+}
+
 TEST(BufferList, rebuild_aligned_size_and_memory) {
   const unsigned SIMD_ALIGN = 32;
   const unsigned BUFFER_SIZE = 67;