From ebffb3e23f14a351e494166d5de94e21db786cec Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 16 Jan 2018 19:20:29 +0800 Subject: [PATCH] test: add test for seastar denc Signed-off-by: Kefu Chai --- src/test/crimson/CMakeLists.txt | 7 +++++ src/test/crimson/test_denc.cc | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/test/crimson/test_denc.cc diff --git a/src/test/crimson/CMakeLists.txt b/src/test/crimson/CMakeLists.txt index b10ed9c245a25..285e05c78f993 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 0000000000000..aa91c762c1ca4 --- /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); +} -- 2.39.5