From 1e109e8f8c0c97cd278377036fe799cf3fd9d36a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E7=8E=AE=E6=96=87?= Date: Wed, 3 Mar 2021 15:10:09 +0800 Subject: [PATCH] test/common: unit tests for journald logger MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These tests are skipped if journald is not run. Signed-off-by: 胡玮文 --- src/test/common/CMakeLists.txt | 4 +++ src/test/common/test_journald_logger.cc | 41 +++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/test/common/test_journald_logger.cc diff --git a/src/test/common/CMakeLists.txt b/src/test/common/CMakeLists.txt index a625d8fb43bf..78f8e8a3c52a 100644 --- a/src/test/common/CMakeLists.txt +++ b/src/test/common/CMakeLists.txt @@ -358,3 +358,7 @@ target_link_libraries(unittest_blocked_completion Boost::system GTest::GTest) add_executable(unittest_allocate_unique test_allocate_unique.cc) add_ceph_unittest(unittest_allocate_unique) + +add_executable(unittest_journald_logger test_journald_logger.cc) +target_link_libraries(unittest_journald_logger ceph-common) +add_ceph_unittest(unittest_journald_logger) diff --git a/src/test/common/test_journald_logger.cc b/src/test/common/test_journald_logger.cc new file mode 100644 index 000000000000..cf8df6dbca2c --- /dev/null +++ b/src/test/common/test_journald_logger.cc @@ -0,0 +1,41 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include +#include +#include + +#include "common/Journald.h" +#include "log/Entry.h" +#include "log/SubsystemMap.h" + +using namespace ceph::logging; + +class JournaldLoggerTest : public ::testing::Test { + protected: + SubsystemMap subs; + JournaldLogger journald = {&subs}; + MutableEntry entry = {0, 0}; + + void SetUp() override { + struct stat buffer; + if (stat("/run/systemd/journal/socket", &buffer) < 0) { + if (errno == ENOENT) { + GTEST_SKIP() << "No journald socket present."; + } + FAIL() << "Unexpected stat error: " << strerror(errno); + } + } +}; + +TEST_F(JournaldLoggerTest, Log) +{ + entry.get_ostream() << "This is a testing regular log message."; + EXPECT_EQ(journald.log_entry(entry), 0); +} + +TEST_F(JournaldLoggerTest, VeryLongLog) +{ + entry.get_ostream() << std::string(16 * 1024 * 1024, 'a'); + EXPECT_EQ(journald.log_entry(entry), 0); +} -- 2.47.3