25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

136 satır
3.4 KiB

  1. #include <set>
  2. #include <list>
  3. #include <regex>
  4. #include <mutex>
  5. #include <thread>
  6. #include <memory>
  7. #include <chrono>
  8. #include <iostream>
  9. #include <gtest/gtest.h>
  10. #include <gmock/gmock.h>
  11. namespace logging_tests
  12. {
  13. #include "../src/LoggerImpl.cpp"
  14. }
  15. using namespace ::testing;
  16. using namespace ::logging_tests;
  17. using namespace ::logging_tests::logging;
  18. struct LoggingReset
  19. {
  20. ~LoggingReset()
  21. { ::logging_tests::logging::resetLogging(); }
  22. };
  23. struct ConsumerMock : public Consumer
  24. {
  25. MOCK_METHOD1(log, void (DataPtrS data));
  26. ConsumerMock(const std::string& n) :
  27. Consumer(n, true)
  28. { }
  29. };
  30. MATCHER_P5(MatchLogData, level, sender, thread, name, message, "")
  31. {
  32. if (!arg)
  33. return false;
  34. auto& d = *arg;
  35. return d.level == level
  36. && d.sender == sender
  37. && d.thread == thread
  38. && d.name == name
  39. && d.message == message;
  40. }
  41. TEST(LoggingTests, AllMatcher)
  42. {
  43. LoggingReset loggingReset;
  44. StreamConsumer c0("TestConsumer1", std::cout, false, false);
  45. StreamConsumer c1("TestConsumer2", std::cout, false, false);
  46. auto& l0 = getLogger();
  47. auto& l1 = getLogger("TestLogger");
  48. AllMatcher matcher;
  49. EXPECT_TRUE(matcher.match(c0));
  50. EXPECT_TRUE(matcher.match(c1));
  51. EXPECT_TRUE(matcher.match(l0));
  52. EXPECT_TRUE(matcher.match(l1));
  53. }
  54. TEST(LoggingTests, DefaultLoggerMatcher)
  55. {
  56. LoggingReset loggingReset;
  57. StreamConsumer c0("TestConsumer1", std::cout, false, false);
  58. StreamConsumer c1("TestConsumer2", std::cout, false, false);
  59. auto& l0 = getLogger();
  60. auto& l1 = getLogger("TestLogger");
  61. DefaultLoggerMatcher matcher;
  62. EXPECT_FALSE(matcher.match(c0));
  63. EXPECT_FALSE(matcher.match(c1));
  64. EXPECT_TRUE (matcher.match(l0));
  65. EXPECT_FALSE(matcher.match(l1));
  66. }
  67. TEST(LoggingTests, RegexMatcher)
  68. {
  69. LoggingReset loggingReset;
  70. StreamConsumer c0("TestConsumer1", std::cout, false, false);
  71. StreamConsumer c1("TestConsumer2", std::cout, false, false);
  72. auto& l0 = getLogger();
  73. auto& l1 = getLogger("TestLogger");
  74. RegexMatcher matcher0("TestConsumer1");
  75. RegexMatcher matcher1("ASEF", true);
  76. EXPECT_TRUE (matcher0.match(c0));
  77. EXPECT_FALSE(matcher0.match(c1));
  78. EXPECT_FALSE(matcher1.match(l0));
  79. EXPECT_TRUE (matcher1.match(l1));
  80. }
  81. TEST(LoggingTests, log)
  82. {
  83. LoggingReset loggingReset;
  84. StrictMock<ConsumerMock> c0("consumer0");
  85. StrictMock<ConsumerMock> c1("Consumer1");
  86. EXPECT_CALL(c0, log(MatchLogData(
  87. Level::Info,
  88. (void*)12,
  89. std::this_thread::get_id(),
  90. std::string("logger0"),
  91. std::string("test1 info"))));
  92. EXPECT_CALL(c0, log(MatchLogData(
  93. Level::Warn,
  94. (void*)13,
  95. std::this_thread::get_id(),
  96. std::string("logger0"),
  97. std::string("test1 warn"))));
  98. defineRule(MatcherPtrU(new RegexMatcher("logger0")), MatcherPtrU(new RegexMatcher("consumer0")), Level::Info, Level::Warn);
  99. auto& l0 = getLogger("logger0");
  100. auto& l1 = getLogger("logger1");
  101. logMessage(l0, Debug, (void*)11, "test1 ") << "debug";
  102. logMessage(l0, Info, (void*)12, "test1 ") << "info";
  103. logMessage(l0, Warn, (void*)13, "test1 ") << "warn";
  104. logMessage(l0, Error, (void*)14, "test1 ") << "error";
  105. logMessage(l1, Debug, (void*)21, "test2 ") << "debug";
  106. logMessage(l1, Info, (void*)22, "test2 ") << "info";
  107. logMessage(l1, Warn, (void*)23, "test2 ") << "warn";
  108. logMessage(l1, Error, (void*)24, "test2 ") << "error";
  109. }