]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/bufferlist.cc: Added append tests
authorsam <sam@Pondermatic.(none)>
Wed, 30 Mar 2011 16:31:45 +0000 (09:31 -0700)
committerSamuel Just <samuel.just@dreamhost.com>
Wed, 30 Mar 2011 17:08:54 +0000 (10:08 -0700)
Tests appending many randomly sized chunks many of which are size zero.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/Makefile.am
src/test/bufferlist.cc

index a5bd5c99e08de60451484b472d69e9cb1538a9c6..b1c5e74ab7aa8f51b5d5f29bc34fb28f2a81e8bb 100644 (file)
@@ -404,7 +404,7 @@ unittest_librados_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
 check_PROGRAMS += unittest_librados
 
 unittest_bufferlist_SOURCES = test/bufferlist.cc
-unittest_bufferlist_LDADD = ${UNITTEST_LDADD}
+unittest_bufferlist_LDADD = ${UNITTEST_LDADD} libcommon.a
 unittest_bufferlist_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
 check_PROGRAMS += unittest_bufferlist
 
index 15375eee8b6406fae2b0c121117f585e0d8f8905..e539b2297d4c9ba86614c2c3711e60d073131b4d 100644 (file)
@@ -2,6 +2,9 @@
 #include "include/encoding.h"
 
 #include "gtest/gtest.h"
+#include "stdlib.h"
+
+#define MAX_TEST 1000000
 
 
 TEST(BufferList, EmptyAppend) {
@@ -10,3 +13,43 @@ TEST(BufferList, EmptyAppend) {
        bl.push_back(ptr);
        ASSERT_EQ(bl.begin().end(), 1);
 }
+
+TEST(BufferList, TestPtrAppend) {
+       bufferlist bl;
+       char correct[MAX_TEST];
+       int curpos = 0;
+       int length = random() % 5 > 0 ? random() % 1000 : 0;
+       while (curpos + length < MAX_TEST) {
+               if (!length) {
+                       bufferptr ptr;
+                       bl.push_back(ptr);
+               } else {
+                       char *current = correct + curpos;
+                       for (int i = 0; i < length; ++i) {
+                               char next = random() % 255;
+                               correct[curpos++] = next;
+                       }
+                       bufferptr ptr(current, length);
+                       bl.append(ptr);
+               }
+               length = random() % 5 > 0 ? random() % 1000 : 0;
+       }
+       ASSERT_EQ(memcmp(bl.c_str(), correct, curpos), 0);
+}
+
+TEST(BufferList, TestDirectAppend) {
+       bufferlist bl;
+       char correct[MAX_TEST];
+       int curpos = 0;
+       int length = random() % 5 > 0 ? random() % 1000 : 0;
+       while (curpos + length < MAX_TEST) {
+               char *current = correct + curpos;
+               for (int i = 0; i < length; ++i) {
+                       char next = random() % 255;
+                       correct[curpos++] = next;
+               }
+               bl.append(current, length);
+               length = random() % 5 > 0 ? random() % 1000 : 0;
+       }
+       ASSERT_EQ(memcmp(bl.c_str(), correct, curpos), 0);
+}