log_manager_test.cxx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //
  2. // log_manager_test.cxx
  3. // logger_test
  4. //
  5. // Created by Sam Jaffe on 4/2/19.
  6. //
  7. #include "../../../types/resource_factory/include/resource_factory/prototype_factory.hpp"
  8. #include "logger/c_logger.h"
  9. #include "logger/log_manager.h"
  10. #include "logger/properties.h"
  11. #include "mock_logger.h"
  12. using namespace logging;
  13. class LogManagerTest : public ::testing::Test {
  14. public:
  15. void SetUp() override;
  16. void TearDown() override;
  17. protected:
  18. std::shared_ptr<MockAppender> appender;
  19. std::shared_ptr<MockLayout> layout;
  20. private:
  21. appenders::scoped_binding abinding_;
  22. layouts::scoped_binding lbinding_;
  23. };
  24. void LogManagerTest::SetUp() {
  25. auto GetMock = [this](properties const &) {
  26. return appender = std::make_shared<MockAppender>();
  27. };
  28. abinding_ = appenders::instance().bind_scoped("Mock", GetMock);
  29. auto GetMockLayout = [this](properties const &) {
  30. return layout = std::make_shared<MockLayout>();
  31. };
  32. lbinding_ = layouts::instance().bind_scoped("MockLayout", GetMockLayout);
  33. }
  34. void LogManagerTest::TearDown() {
  35. abinding_.reset();
  36. lbinding_.reset();
  37. }
  38. extern properties const MIN_PROPERTY_SCHEMA;
  39. extern properties const MULTIPLEX_PROPERTY_SCHEMA;
  40. TEST_F(LogManagerTest, CanInjectMock) {
  41. manager().configure(MIN_PROPERTY_SCHEMA);
  42. using ::testing::NotNull;
  43. EXPECT_THAT(appender, ::testing::NotNull());
  44. }
  45. TEST_F(LogManagerTest, CanFetchInjectedMock) {
  46. manager mgr;
  47. mgr.configure(MIN_PROPERTY_SCHEMA);
  48. using ::testing::_;
  49. using ::testing::AnyNumber;
  50. using ::testing::Field;
  51. EXPECT_CALL(*appender, flush()).Times(AnyNumber());
  52. EXPECT_CALL(*appender, write("TEST MESSAGE"));
  53. EXPECT_CALL(*layout, format(_)).WillRepeatedly(ReturnMessage());
  54. c_logger l = mgr.c_get();
  55. l.error("TEST MESSAGE");
  56. }
  57. TEST_F(LogManagerTest, MultiplexMockLogsToMultipleImpls) {
  58. manager mgr;
  59. mgr.configure(MULTIPLEX_PROPERTY_SCHEMA);
  60. using ::testing::_;
  61. using ::testing::AnyNumber;
  62. using ::testing::Field;
  63. EXPECT_CALL(*appender, flush()).Times(AnyNumber());
  64. EXPECT_CALL(*appender, write("TEST MESSAGE")).Times(2);
  65. EXPECT_CALL(*layout, format(_)).WillRepeatedly(ReturnMessage());
  66. c_logger l = mgr.c_get();
  67. l.error("TEST MESSAGE");
  68. }