From: Kefu Chai Date: Tue, 16 Jan 2018 11:20:29 +0000 (+0800) Subject: test: add test for seastar denc X-Git-Tag: v14.0.1~1153^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F22454%2Fhead;p=ceph.git test: add test for seastar denc Signed-off-by: Kefu Chai --- diff --git a/src/test/crimson/CMakeLists.txt b/src/test/crimson/CMakeLists.txt index b10ed9c245a2..285e05c78f99 100644 --- a/src/test/crimson/CMakeLists.txt +++ b/src/test/crimson/CMakeLists.txt @@ -4,3 +4,10 @@ set(test_buffer_srcs add_executable(unittest_seastar_buffer ${test_buffer_srcs}) add_ceph_unittest(unittest_seastar_buffer) target_link_libraries(unittest_seastar_buffer ceph-common Seastar::seastar) + +add_executable(unittest_seastar_denc + test_denc.cc + $ + $) +add_ceph_unittest(unittest_seastar_denc) +target_link_libraries(unittest_seastar_denc ceph-common global Seastar::seastar) diff --git a/src/test/crimson/test_denc.cc b/src/test/crimson/test_denc.cc new file mode 100644 index 000000000000..aa91c762c1ca --- /dev/null +++ b/src/test/crimson/test_denc.cc @@ -0,0 +1,53 @@ +#include +#include +#include +#include "include/denc.h" +#include "common/buffer_seastar.h" + +using temporary_buffer = seastar::temporary_buffer; +using buffer_iterator = seastar_buffer_iterator; +using const_buffer_iterator = const_seastar_buffer_iterator; + +template +void test_denc(T v) { + // estimate + size_t s = 0; + denc(v, s); + ASSERT_NE(s, 0u); + + // encode + temporary_buffer buf{s}; + buffer_iterator enc{buf}; + denc(v, enc); + size_t len = enc.get() - buf.begin(); + ASSERT_LE(len, s); + + // decode + T out; + temporary_buffer encoded = buf.share(); + encoded.trim(len); + const_buffer_iterator dec{encoded}; + denc(out, dec); + ASSERT_EQ(v, out); + ASSERT_EQ(dec.get(), enc.get()); +} + +TEST(denc, simple) +{ + test_denc((uint8_t)4); + test_denc((int8_t)-5); + test_denc((uint16_t)6); + test_denc((int16_t)-7); + test_denc((uint32_t)8); + test_denc((int32_t)-9); + test_denc((uint64_t)10); + test_denc((int64_t)-11); +} + +TEST(denc, string) +{ + std::string a, b("hi"), c("multi\nline\n"); + test_denc(a); + test_denc(b); + test_denc(c); +}