]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/common: unit tests for journald logger 39738/head
author胡玮文 <huww98@outlook.com>
Wed, 3 Mar 2021 07:10:09 +0000 (15:10 +0800)
committer胡玮文 <huww98@outlook.com>
Tue, 9 Mar 2021 12:14:00 +0000 (20:14 +0800)
These tests are skipped if journald is not run.

Signed-off-by: 胡玮文 <huww98@outlook.com>
src/test/common/CMakeLists.txt
src/test/common/test_journald_logger.cc [new file with mode: 0644]

index a625d8fb43bf6bf821919b78dc5c0fd003211330..78f8e8a3c52a7e49dd957a9f4a0b2de651739df3 100644 (file)
@@ -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 (file)
index 0000000..cf8df6d
--- /dev/null
@@ -0,0 +1,41 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <cerrno>
+#include <gtest/gtest.h>
+#include <sys/stat.h>
+
+#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);
+}