]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1955] add unit tests for logging errors
authorAndrei Pavel <andrei@isc.org>
Wed, 24 Aug 2022 19:09:28 +0000 (22:09 +0300)
committerAndrei Pavel <andrei@isc.org>
Tue, 6 Sep 2022 07:29:45 +0000 (10:29 +0300)
src/lib/log/tests/logger_unittest.cc

index 8f06a4203dc7503e6b90f17ceff30f95ee98f892..87ddae37f7eec8ce85859f8fdc08df66d324087f 100644 (file)
 #include <log/logger.h>
 #include <log/logger_manager.h>
 #include <log/logger_name.h>
+#include <log/logger_support.h>
 #include <log/log_messages.h>
 #include <log/interprocess/interprocess_sync_file.h>
+#include <log/output_option.h>
 #include <log/tests/log_test_messages.h>
 
 #include <iostream>
@@ -33,7 +35,8 @@ using namespace std;
 class LoggerTest : public ::testing::Test {
 public:
     LoggerTest() {
-        // Initialization of logging is done in main()
+        // Initialize logging before each test, even if it is already done in main().
+        isc::log::initLogger();
     }
     ~LoggerTest() {
         LoggerManager::reset();
@@ -454,3 +457,52 @@ TEST_F(LoggerTest, Lock) {
     EXPECT_TRUE(sync->wasLocked());
     EXPECT_TRUE(sync->wasUnlocked());
 }
+
+// Checks that hasAppender() reports
+TEST_F(LoggerTest, HasAppender) {
+    // Create a logger.
+    Logger logger("logger");
+
+    // By default, loggers have a file appender to /dev/null.
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_CONSOLE));
+    EXPECT_TRUE(logger.hasAppender(OutputOption::DEST_FILE));
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_SYSLOG));
+
+    // -- Create some specifications. --
+
+    OutputOption console;
+    console.destination = OutputOption::DEST_CONSOLE;
+    LoggerSpecification spec_console("logger");
+    spec_console.addOutputOption(console);
+
+    OutputOption file;
+    file.destination = OutputOption::DEST_FILE;
+    file.filename = "/dev/null";
+    LoggerSpecification spec_file("logger");
+    spec_file.addOutputOption(file);
+
+    OutputOption syslog;
+    syslog.destination = OutputOption::DEST_SYSLOG;
+    LoggerSpecification spec_syslog("logger");
+    spec_syslog.addOutputOption(syslog);
+
+    LoggerManager manager;
+
+    // Check console.
+    manager.process(spec_console);
+    EXPECT_TRUE(logger.hasAppender(OutputOption::DEST_CONSOLE));
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_FILE));
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_SYSLOG));
+
+    // Check file.
+    manager.process(spec_file);
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_CONSOLE));
+    EXPECT_TRUE(logger.hasAppender(OutputOption::DEST_FILE));
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_SYSLOG));
+
+    // Check syslog.
+    manager.process(spec_syslog);
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_CONSOLE));
+    EXPECT_FALSE(logger.hasAppender(OutputOption::DEST_FILE));
+    EXPECT_TRUE(logger.hasAppender(OutputOption::DEST_SYSLOG));
+}