Skip to content

Commit

Permalink
remove TestLoggerConfiguration::initialize_namespaces
Browse files Browse the repository at this point in the history
since it tests private functions, and the overall functionality is already covered by other tests
  • Loading branch information
martinzink committed Jan 18, 2024
1 parent d44bc94 commit 688920d
Showing 1 changed file with 1 addition and 68 deletions.
69 changes: 1 addition & 68 deletions libminifi/test/unit/LoggerConfigurationTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,71 +42,4 @@ TEST_CASE("TestLoggerProperties::get_keys_of_type", "[test get_keys_of_type]") {
std::vector<std::string> actual = logger_properties.get_keys_of_type("appender");
std::sort(actual.begin(), actual.end());
REQUIRE(expected == actual);
}

#ifndef WIN32
class TestLoggerConfiguration : public logging::LoggerConfiguration {
public:
static std::shared_ptr<logging::internal::LoggerNamespace> initialize_namespaces(const std::shared_ptr<logging::LoggerProperties> &logger_properties) {
return logging::LoggerConfiguration::initialize_namespaces(logger_properties);
}
static std::shared_ptr<spdlog::logger> get_logger(const std::shared_ptr<logging::internal::LoggerNamespace> &root_namespace,
const std::string &name,
const std::shared_ptr<spdlog::formatter>& formatter) {
auto& config = getConfiguration();
// TODO(MINIFICPP-2289) This is an ugly hack so we dont lose test coverage
// It should not be this easy to override the lock requirement
std::mutex mutex;
const std::lock_guard<std::mutex> lock(mutex);
return config.get_logger(lock, root_namespace, name, formatter);
}
};

TEST_CASE("TestLoggerConfiguration::initialize_namespaces", "[test initialize_namespaces]") {
TestController test_controller;
LogTestController &logTestController = LogTestController::getInstance();
LogTestController::getInstance().setDebug<logging::LoggerProperties>();
std::shared_ptr<logging::LoggerProperties> logger_properties = std::make_shared<logging::LoggerProperties>();

std::ostringstream stdout;
std::ostringstream stderr;
logger_properties->add_sink("stdout", std::make_shared<spdlog::sinks::ostream_sink_mt>(stdout, true));
logger_properties->add_sink("stderr", std::make_shared<spdlog::sinks::ostream_sink_mt>(stderr, true));

std::string stdout_only_warn_class = "org::apache::nifi::minifi::fake::test::StdoutOnlyWarn";
std::string stderr_only_error_pkg = "org::apache::nifi::minifi::fake2";
std::string stderr_only_error_class = stderr_only_error_pkg + "::test::StderrOnlyError";
logger_properties->set("logger.root", "INFO,stdout,stderr");
logger_properties->set("logger." + stdout_only_warn_class, "WARN,stdout");
logger_properties->set("logger." + stderr_only_error_pkg, "ERROR,stderr");

std::shared_ptr<logging::internal::LoggerNamespace> root_namespace = TestLoggerConfiguration::initialize_namespaces(logger_properties);

std::shared_ptr<spdlog::formatter> formatter = std::make_shared<spdlog::pattern_formatter>(logging::LoggerConfiguration::spdlog_default_pattern);
std::shared_ptr<spdlog::logger> logger = TestLoggerConfiguration::get_logger(root_namespace, "org::apache::nifi::minifi::fake::test::ClassName1", formatter);
std::string test_log_statement = "Test log statement";
logger->info(test_log_statement);
REQUIRE(true == LogTestController::contains(stdout, test_log_statement));
REQUIRE(true == LogTestController::contains(stderr, test_log_statement));
logTestController.resetStream(stdout);
logTestController.resetStream(stderr);

logger = TestLoggerConfiguration::get_logger(root_namespace, stdout_only_warn_class, formatter);
logger->info(test_log_statement);
REQUIRE(false == LogTestController::contains(stdout, test_log_statement, std::chrono::seconds(0)));
logger->warn(test_log_statement);
REQUIRE(true == LogTestController::contains(stdout, test_log_statement));
REQUIRE(false == LogTestController::contains(stderr, test_log_statement, std::chrono::seconds(0)));
logTestController.resetStream(stdout);
logTestController.resetStream(stderr);

logger = TestLoggerConfiguration::get_logger(root_namespace, stderr_only_error_class, formatter);
logger->warn(test_log_statement);
REQUIRE(false == LogTestController::contains(stderr, test_log_statement, std::chrono::seconds(0)));
logger->error(test_log_statement);
REQUIRE(false == LogTestController::contains(stdout, test_log_statement, std::chrono::seconds(0)));
REQUIRE(true == LogTestController::contains(stderr, test_log_statement));
logTestController.resetStream(stdout);
logTestController.resetStream(stderr);
}
#endif
}

0 comments on commit 688920d

Please sign in to comment.