1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#include "../src/logger.h"
#include <catch2/catch.hpp>
using namespace datadog::opentracing;
TEST_CASE("logger") {
struct LoggerTest {
std::shared_ptr<Logger> logger;
bool trace = false;
std::string debug_no_id;
std::string debug_trace_id;
std::string debug_trace_span_ids;
std::string trace_no_id;
std::string trace_trace_id;
std::string trace_trace_span_ids;
};
bool called = false;
std::string message;
auto log_func = [&](LogLevel, ot::string_view msg) {
called = true;
message = msg;
};
auto reset = [&]() {
called = false;
message = "";
};
auto test_case = GENERATE_REF(values<LoggerTest>({
{std::make_shared<StandardLogger>(log_func), false, "test debug message",
"[trace_id: 42] test debug message", "[trace_id: 42, span_id: 99] test debug message", "",
"", ""},
{std::make_shared<VerboseLogger>(log_func), true, "test debug message",
"[trace_id: 42] test debug message", "[trace_id: 42, span_id: 99] test debug message",
"test trace message", "[trace_id: 42] test trace message",
"[trace_id: 42, span_id: 99] test trace message"},
}));
// Message logged with debug log level.
test_case.logger->Log(LogLevel::debug, "test debug message");
REQUIRE(called);
REQUIRE(message == test_case.debug_no_id);
reset();
test_case.logger->Log(LogLevel::debug, 42, "test debug message");
REQUIRE(called);
REQUIRE(message == test_case.debug_trace_id);
reset();
test_case.logger->Log(LogLevel::debug, 42, 99, "test debug message");
REQUIRE(called);
REQUIRE(message == test_case.debug_trace_span_ids);
reset();
// Message only logged with trace level if using verbose logger.
test_case.logger->Trace("test trace message");
if (test_case.trace) {
REQUIRE(called);
REQUIRE(message == test_case.trace_no_id);
} else {
REQUIRE(!called);
}
reset();
test_case.logger->Trace(42, "test trace message");
if (test_case.trace) {
REQUIRE(called);
REQUIRE(message == test_case.trace_trace_id);
} else {
REQUIRE(!called);
}
reset();
test_case.logger->Trace(42, 99, "test trace message");
if (test_case.trace) {
REQUIRE(called);
REQUIRE(message == test_case.trace_trace_span_ids);
} else {
REQUIRE(!called);
}
reset();
}
|