diff options
Diffstat (limited to 'icetray/unittests/testIceTrayLogger.cpp')
-rw-r--r-- | icetray/unittests/testIceTrayLogger.cpp | 125 |
1 files changed, 99 insertions, 26 deletions
diff --git a/icetray/unittests/testIceTrayLogger.cpp b/icetray/unittests/testIceTrayLogger.cpp index 2a7fa50..81f0023 100644 --- a/icetray/unittests/testIceTrayLogger.cpp +++ b/icetray/unittests/testIceTrayLogger.cpp @@ -9,12 +9,13 @@ #include <compileTimeFormatter.h> #include <boost/format.hpp> #include <slicer/common.h> +#include <logWriterConsole.h> using namespace IceTray::Logging; struct LogEntry { LogLevel priority; - std::string domain; + Domain domain; std::string message; }; @@ -31,7 +32,7 @@ class TestLogWriter : public AbstractLogWriter { { } - void message(LogLevel priority, const std::string & domain, const std::string & message, const Ice::Current &) override + void message(LogLevel priority, const Domain & domain, const std::string & message, const Ice::Current &) override { msgs.push_back({priority, domain, message}); } @@ -40,16 +41,32 @@ class TestLogWriter : public AbstractLogWriter { }; FACTORY(TestLogWriter, LogWriterFactory); +namespace std { + ostream & + operator<<(ostream & s, const Domain & domain) { + for (const auto & d : domain) { + s << "::" << d; + } + return s; + } +} + class StaticLogTest { public: static IceTray::Logging::LoggerPtr staticLog; }; IceTray::Logging::LoggerPtr staticLog = LOGMANAGER()->getLogger<IceTray::Service>(); +Domain other = {"other"}; +Domain test = {"test"}; +Domain testDomain = {"test", "domain"}; +Domain testDebug = {"test", "debug"}; + BOOST_AUTO_TEST_CASE( staticLogInit ) { BOOST_REQUIRE(staticLog); - BOOST_REQUIRE_EQUAL("IceTray::Service", staticLog->getDomain()); + Domain expected = {"IceTray", "Service"}; + BOOST_REQUIRE_EQUAL(expected, staticLog->getDomain()); } class TestLogImpl { @@ -90,6 +107,12 @@ BOOST_AUTO_TEST_CASE(no_writers) { log->message(DEBUG, ""); } +BOOST_AUTO_TEST_CASE(ostreamDomain) { + std::stringstream str; + str << testDomain; + BOOST_REQUIRE_EQUAL("::test::domain", str.str()); +} + BOOST_AUTO_TEST_CASE(priority_filtering) { auto w = new TestLogWriter(WARNING); auto e = new TestLogWriter(ERR); @@ -154,7 +177,7 @@ BOOST_AUTO_TEST_CASE(formatter_plain) log->message(DEBUG, "plain message."); BOOST_REQUIRE_EQUAL(1, d->msgs.size()); BOOST_REQUIRE_EQUAL("plain message.", d->msgs.front().message); - BOOST_REQUIRE_EQUAL("test.domain", d->msgs.front().domain); + BOOST_REQUIRE_EQUAL(testDomain, d->msgs.front().domain); } BOOST_AUTO_TEST_CASE(formatter_libc) @@ -164,7 +187,7 @@ BOOST_AUTO_TEST_CASE(formatter_libc) log->messagef(DEBUG, "plain %s.", "message"); BOOST_REQUIRE_EQUAL(1, d->msgs.size()); BOOST_REQUIRE_EQUAL("plain message.", d->msgs.front().message); - BOOST_REQUIRE_EQUAL("test.domain", d->msgs.front().domain); + BOOST_REQUIRE_EQUAL(testDomain, d->msgs.front().domain); } BOOST_AUTO_TEST_CASE(formatter_boost_format) @@ -174,7 +197,7 @@ BOOST_AUTO_TEST_CASE(formatter_boost_format) log->messagebf(DEBUG, "plain %s", std::string("message")); BOOST_REQUIRE_EQUAL(1, d->msgs.size()); BOOST_REQUIRE_EQUAL("plain message", d->msgs.front().message); - BOOST_REQUIRE_EQUAL("test.domain", d->msgs.front().domain); + BOOST_REQUIRE_EQUAL(testDomain, d->msgs.front().domain); } AdHocFormatter(Plain, "plain %?."); @@ -185,15 +208,15 @@ BOOST_AUTO_TEST_CASE(formatter_adhoc_compiletime) log->messagectf<Plain>(DEBUG, "message"); BOOST_REQUIRE_EQUAL(1, d->msgs.size()); BOOST_REQUIRE_EQUAL("plain message.", d->msgs.front().message); - BOOST_REQUIRE_EQUAL("test.domain", d->msgs.front().domain); + BOOST_REQUIRE_EQUAL(testDomain, d->msgs.front().domain); } BOOST_AUTO_TEST_CASE( domains_none ) { // No domains auto l = add(new TestLogWriter()); - BOOST_REQUIRE(!l->level("test")); - BOOST_REQUIRE(!l->level("test.domain")); + BOOST_REQUIRE(!l->level(test)); + BOOST_REQUIRE(!l->level(testDomain)); BOOST_REQUIRE(!l->lowestLevel()); } @@ -201,8 +224,8 @@ BOOST_AUTO_TEST_CASE( domains_single ) { // A single catch-all domain at the given level auto l = add(new TestLogWriter(ERR)); - BOOST_REQUIRE_EQUAL(ERR, *l->level("test")); - BOOST_REQUIRE_EQUAL(ERR, *l->level("test.domain")); + BOOST_REQUIRE_EQUAL(ERR, *l->level(test)); + BOOST_REQUIRE_EQUAL(ERR, *l->level(testDomain)); BOOST_REQUIRE(l->lowestLevel()); BOOST_REQUIRE_EQUAL(ERR, *l->lowestLevel()); } @@ -211,8 +234,8 @@ BOOST_AUTO_TEST_CASE( domains_fromNullProperties ) { // A single catch-all domain at the default level (WARNING) auto l = add(new TestLogWriter("", Ice::PropertiesPtr())); - BOOST_REQUIRE_EQUAL(WARNING, *l->level("test")); - BOOST_REQUIRE_EQUAL(WARNING, *l->level("test.domain")); + BOOST_REQUIRE_EQUAL(WARNING, *l->level(test)); + BOOST_REQUIRE_EQUAL(WARNING, *l->level(testDomain)); BOOST_REQUIRE(l->lowestLevel()); BOOST_REQUIRE_EQUAL(WARNING, *l->lowestLevel()); } @@ -226,10 +249,10 @@ BOOST_AUTO_TEST_CASE( domains_fromProperties ) p->setProperty("TestLogWriter.domains", "ignored"); p->setProperty("TestLogWriter.default", "WARNING"); auto l = add(new TestLogWriter("TestLogWriter", p)); - BOOST_REQUIRE_EQUAL(WARNING, *l->level("test")); - BOOST_REQUIRE_EQUAL(WARNING, *l->level("other")); - BOOST_REQUIRE_EQUAL(EMERG, *l->level("test.domain")); - BOOST_REQUIRE_EQUAL(DEBUG, *l->level("test.debug")); + BOOST_REQUIRE_EQUAL(WARNING, *l->level(test)); + BOOST_REQUIRE_EQUAL(WARNING, *l->level(other)); + BOOST_REQUIRE_EQUAL(EMERG, *l->level(testDomain)); + BOOST_REQUIRE_EQUAL(DEBUG, *l->level(testDebug)); BOOST_REQUIRE(l->lowestLevel()); BOOST_REQUIRE_EQUAL(DEBUG, *l->lowestLevel()); } @@ -241,8 +264,8 @@ BOOST_AUTO_TEST_CASE( domains_fromProperties_noDefault ) p->setProperty("TestLogWriter.domains.test.domain", "EMERG"); p->setProperty("TestLogWriter.domains.test.debug", "DEBUG"); auto l = add(new TestLogWriter("TestLogWriter", p)); - BOOST_REQUIRE_EQUAL(EMERG, *l->level("test.domain")); - BOOST_REQUIRE_EQUAL(DEBUG, *l->level("test.debug")); + BOOST_REQUIRE_EQUAL(EMERG, *l->level(testDomain)); + BOOST_REQUIRE_EQUAL(DEBUG, *l->level(testDebug)); BOOST_REQUIRE(l->lowestLevel()); BOOST_REQUIRE_EQUAL(DEBUG, *l->lowestLevel()); } @@ -253,10 +276,10 @@ BOOST_AUTO_TEST_CASE( domains_fromProperties_onlyDefault ) Ice::PropertiesPtr p = ic->getProperties(); p->setProperty("TestLogWriter.default", "INFO"); auto l = add(new TestLogWriter("TestLogWriter", p)); - BOOST_REQUIRE_EQUAL(INFO, *l->level("test")); - BOOST_REQUIRE_EQUAL(INFO, *l->level("other")); - BOOST_REQUIRE_EQUAL(INFO, *l->level("test.domain")); - BOOST_REQUIRE_EQUAL(INFO, *l->level("test.debug")); + BOOST_REQUIRE_EQUAL(INFO, *l->level(test)); + BOOST_REQUIRE_EQUAL(INFO, *l->level(other)); + BOOST_REQUIRE_EQUAL(INFO, *l->level(testDomain)); + BOOST_REQUIRE_EQUAL(INFO, *l->level(testDebug)); BOOST_REQUIRE(l->lowestLevel()); BOOST_REQUIRE_EQUAL(INFO, *l->lowestLevel()); } @@ -289,7 +312,7 @@ BOOST_AUTO_TEST_CASE( getLogger ) this->start("test", ic, {}); auto logger = LOGMANAGER()->getLogger("test.domain"); BOOST_REQUIRE(logger); - BOOST_REQUIRE_EQUAL("test.domain", logger->getDomain()); + BOOST_REQUIRE_EQUAL(testDomain, logger->getDomain()); this->stop(); ic->destroy(); } @@ -298,7 +321,8 @@ BOOST_AUTO_TEST_CASE( getLoggerForType ) { auto logger = LOGMANAGER()->getLogger<IceTray::Service>(); BOOST_REQUIRE(logger); - BOOST_REQUIRE_EQUAL("IceTray::Service", logger->getDomain()); + Domain expected = {"IceTray", "Service"}; + BOOST_REQUIRE_EQUAL(expected, logger->getDomain()); } BOOST_AUTO_TEST_SUITE_END(); @@ -307,6 +331,55 @@ BOOST_AUTO_TEST_CASE( console ) { IceTray::Logging::LogWriterPtr lwp = IceTray::Logging::LogWriterFactory::createNew("ConsoleLogWriter", NULL); - lwp->message(DEBUG, "some.domain", "some message"); + lwp->message(DEBUG, testDomain, "some message"); +} + +BOOST_AUTO_TEST_CASE( consoleNoWidth ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, -1, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: test.domain: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleWidthJustRight ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 11, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: test.domain: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleWidthSmall ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 10, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: t.domain: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleWidthTiny ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 8, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: t.domain: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleWidthTooTiny ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 7, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: t.d: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleWidthOverflow ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 1, DEBUG, testDomain, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: t.d: message\n", str.str()); +} + +BOOST_AUTO_TEST_CASE( consoleNoDomain ) +{ + std::stringstream str; + ConsoleLogWriter::writeStream(str, 0, DEBUG, {}, "message"); + BOOST_REQUIRE_EQUAL("DEBUG: : message\n", str.str()); } |