From: 胡玮文 Date: Wed, 3 Mar 2021 07:10:09 +0000 (+0800) Subject: test/common: unit tests for journald logger X-Git-Tag: v17.1.0~2374^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1e109e8f8c0c97cd278377036fe799cf3fd9d36a;p=ceph.git test/common: unit tests for journald logger These tests are skipped if journald is not run. Signed-off-by: 胡玮文 --- 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); +}