From 3c94cc20b686636ece847753919c82ffc9aade41 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 30 Mar 2011 09:31:45 -0700 Subject: [PATCH] test/bufferlist.cc: Added append tests Tests appending many randomly sized chunks many of which are size zero. Signed-off-by: Samuel Just --- src/Makefile.am | 2 +- src/test/bufferlist.cc | 43 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index a5bd5c99e08de..b1c5e74ab7aa8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 diff --git a/src/test/bufferlist.cc b/src/test/bufferlist.cc index 15375eee8b640..e539b2297d4c9 100644 --- a/src/test/bufferlist.cc +++ b/src/test/bufferlist.cc @@ -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); +} -- 2.39.5