File: logger_test.cpp

package info (click to toggle)
dd-opentracing-cpp 1.3.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,336 kB
  • sloc: cpp: 44,895; sh: 697; ansic: 27; makefile: 20
file content (84 lines) | stat: -rw-r--r-- 2,318 bytes parent folder | download | duplicates (2)
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();
}