Mercurial > hg > orthanc
diff OrthancFramework/UnitTestsSources/LoggingTests.cpp @ 4270:251a8b07fa37
logging categories
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 02 Nov 2020 18:45:50 +0100 |
parents | 318c16cfccab |
children | d7a50b7b8466 |
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/LoggingTests.cpp Mon Nov 02 17:15:57 2020 +0100 +++ b/OrthancFramework/UnitTestsSources/LoggingTests.cpp Mon Nov 02 18:45:50 2020 +0100 @@ -28,11 +28,11 @@ #include <gtest/gtest.h> #include "../Sources/Logging.h" +#include "../Sources/OrthancException.h" #include <boost/regex.hpp> #include <sstream> -using namespace Orthanc::Logging; static std::stringstream testErrorStream; void TestError(const char* message) @@ -133,7 +133,7 @@ { LoggingMementoScope loggingConfiguration; - EnableTraceLevel(true); + Orthanc::Logging::EnableTraceLevel(true); typedef void(*LoggingFunctionFunc)(const char*); @@ -146,7 +146,7 @@ FuncStreamBuf<LoggingFunctionFunc> infoStreamBuf(TestInfo); std::ostream infoStream(&infoStreamBuf); - SetErrorWarnInfoLoggingStreams(errorStream, warningStream, infoStream); + Orthanc::Logging::SetErrorWarnInfoLoggingStreams(errorStream, warningStream, infoStream); { const char* text = "E is the set of all sets that do not contain themselves. Does E contain itself?"; @@ -196,4 +196,166 @@ ASSERT_TRUE(ok); ASSERT_STREQ(payload.c_str(), text); } + + Orthanc::Logging::EnableTraceLevel(false); // Back to normal } + + + +TEST(Logging, Categories) +{ + using namespace Orthanc::Logging; + + // Unit tests are running in "--verbose" mode (not "--trace") + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); + + // Cannot modify categories for ERROR and WARNING + ASSERT_THROW(SetCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC, true), + Orthanc::OrthancException); + ASSERT_THROW(SetCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC, false), + Orthanc::OrthancException); + + + EnableInfoLevel(false); + EnableTraceLevel(false); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_FALSE(IsInfoLevelEnabled()); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); + + + // Test the "category" setters at INFO level + SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, true); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); // At least one category is verbose + + SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, true); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + + SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, false); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); // "GENERIC" is still verbose + + SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, false); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_FALSE(IsInfoLevelEnabled()); + + + // Test the "category" setters at TRACE level + SetCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM, true); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_TRUE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + + SetCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC, true); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_TRUE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + + SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, false); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_TRUE(IsTraceLevelEnabled()); // "GENERIC" is still at trace level + ASSERT_TRUE(IsInfoLevelEnabled()); + + SetCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC, false); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + + SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, false); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_FALSE(IsInfoLevelEnabled()); + + + + // Test the "macro" setters + EnableInfoLevel(true); + EnableTraceLevel(false); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); + + EnableInfoLevel(false); + EnableTraceLevel(true); // "--trace" implies "--verbose" + ASSERT_TRUE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); + + + + // Back to normal + EnableInfoLevel(true); + EnableTraceLevel(false); + ASSERT_FALSE(IsTraceLevelEnabled()); + ASSERT_TRUE(IsInfoLevelEnabled()); + ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); + ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); +}