summaryrefslogtreecommitdiff
path: root/icetray/unittests/testIceTrayLogger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'icetray/unittests/testIceTrayLogger.cpp')
-rw-r--r--icetray/unittests/testIceTrayLogger.cpp125
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());
}