json_layout_test.cxx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // json_layout_test.cxx
  3. // logger_test
  4. //
  5. // Created by Sam Jaffe on 4/13/19.
  6. //
  7. #include <gmock/gmock.h>
  8. #include "resource_factory/prototype_factory.hpp"
  9. #include "logger/detail/layout.h"
  10. #include "logger/log_manager.h"
  11. #include "logger/logpacket.h"
  12. #include "logger/properties.h"
  13. TEST(JsonLayoutTest, CanConstructWithNoConfig) {
  14. EXPECT_NO_THROW(logging::layouts::instance().get("JsonLayout", {}));
  15. }
  16. // Thursday, April 4, 2019 6:17:20 PM GMT
  17. namespace {
  18. constexpr const int NOW = 1554401840;
  19. }
  20. std::string const formatted_output = R"({
  21. "instant": {
  22. "epochSecond": 1554401840,
  23. "nanoOfSecond": 123456000
  24. },
  25. "level": "warning",
  26. "loggerName": "UnitTest",
  27. "message": "This is a test message"
  28. })";
  29. std::string const compact_output = "{\"instant\":{\"epochSecond\":"
  30. "1554401840,\"nanoOfSecond\":123456000},\"level\":\"warning\","
  31. "\"loggerName\":\"UnitTest\",\"message\":\"This is a test message\"}";
  32. TEST(JsonLayoutTest, LogsInformationInJSON) {
  33. using namespace logging;
  34. auto playout = layouts::instance().get("JsonLayout", {});
  35. std::stringstream ss;
  36. playout->format(ss, {{NOW, 123456}, level::warning, {}, "UnitTest",
  37. "This is a test message"});
  38. using testing::Eq;
  39. EXPECT_THAT(ss.str(), Eq(formatted_output));
  40. }
  41. TEST(JsonLayoutTest, CompactMeansNoWhitespace) {
  42. using namespace logging;
  43. using namespace logging::property;
  44. properties const props{_obj({
  45. {"compact", _v(true)}
  46. })};
  47. auto playout = layouts::instance().get("JsonLayout", props);
  48. std::stringstream ss;
  49. playout->format(ss, {{NOW, 123456}, level::warning, {}, "UnitTest",
  50. "This is a test message"});
  51. using testing::Eq;
  52. EXPECT_THAT(ss.str(), Eq(compact_output));
  53. }