summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Pavel <andrei@isc.org>2022-08-24 22:09:28 +0300
committerAndrei Pavel <andrei@isc.org>2022-09-06 10:29:45 +0300
commit286c2441fb0077f6e9f617f06c6a7ff9bf35179d (patch)
tree632a640ce0b6b29c328d8c2954d204a67a1c2755
parenta9ac326d83c45cef21798a31a5c744f82a1ed1bc (diff)
[#1955] add unit tests for logging errors
-rw-r--r--src/lib/log/tests/logger_unittest.cc54
1 files changed, 53 insertions, 1 deletions
diff --git a/src/lib/log/tests/logger_unittest.cc b/src/lib/log/tests/logger_unittest.cc
index 8f06a4203d..87ddae37f7 100644
--- a/src/lib/log/tests/logger_unittest.cc
+++ b/src/lib/log/tests/logger_unittest.cc
@@ -14,8 +14,10 @@
#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));
+}