LoggerSystemComponentTests.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzCore/Console/LoggerSystemComponent.h>
  9. #include <AzCore/UnitTest/TestTypes.h>
  10. namespace UnitTest
  11. {
  12. class LoggerSystemComponentTests
  13. : public LeakDetectionFixture
  14. {
  15. public:
  16. LoggerSystemComponentTests()
  17. : m_logHandler
  18. (
  19. [this](AZ::LogLevel logLevel, const char* message, const char* file, const char* function, int32_t line)
  20. {
  21. LogEventHandler(logLevel, message, file, function, line);
  22. }
  23. )
  24. {
  25. ;
  26. }
  27. void SetUp() override
  28. {
  29. LeakDetectionFixture::SetUp();
  30. m_loggerComponent = aznew AZ::LoggerSystemComponent;
  31. AZ::Interface<AZ::ILogger>::Get()->BindLogHandler(m_logHandler);
  32. AZ::Interface<AZ::ILogger>::Get()->SetLogLevel(AZ::LogLevel::Trace); // Set to trace by default
  33. }
  34. void TearDown() override
  35. {
  36. m_logHandler.Disconnect();
  37. delete m_loggerComponent;
  38. LeakDetectionFixture::TearDown();
  39. }
  40. void LogEventHandler(AZ::LogLevel logLevel, const char* message, const char*, const char*, int32_t)
  41. {
  42. m_lastLogLevel = logLevel;
  43. m_lastLogMessage = message;
  44. m_lastLogMessage = AZ::StringFunc::TrimWhiteSpace(m_lastLogMessage, true, true);
  45. }
  46. AZ::LoggerSystemComponent* m_loggerComponent = nullptr;
  47. AZ::ILogger::LogEvent::Handler m_logHandler;
  48. AZ::LogLevel m_lastLogLevel = AZ::LogLevel::Trace;
  49. AZStd::string m_lastLogMessage;
  50. };
  51. TEST_F(LoggerSystemComponentTests, LogTraceTest)
  52. {
  53. AZLOG_TRACE("test trace");
  54. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Trace);
  55. EXPECT_EQ(strcmp("test trace", m_lastLogMessage.c_str()), 0);
  56. }
  57. TEST_F(LoggerSystemComponentTests, LogDebugTest)
  58. {
  59. AZLOG_DEBUG("test debug");
  60. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  61. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  62. }
  63. TEST_F(LoggerSystemComponentTests, LogInfoTest)
  64. {
  65. AZLOG_INFO("test info");
  66. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Info);
  67. EXPECT_EQ(strcmp("test info", m_lastLogMessage.c_str()), 0);
  68. }
  69. TEST_F(LoggerSystemComponentTests, LogNoticeTest)
  70. {
  71. AZLOG_NOTICE("test notice");
  72. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Notice);
  73. EXPECT_EQ(strcmp("test notice", m_lastLogMessage.c_str()), 0);
  74. }
  75. TEST_F(LoggerSystemComponentTests, LogWarnTest)
  76. {
  77. AZLOG_WARN("test warn");
  78. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Warn);
  79. EXPECT_EQ(strcmp("test warn", m_lastLogMessage.c_str()), 0);
  80. }
  81. TEST_F(LoggerSystemComponentTests, LogErrorTest)
  82. {
  83. AZ_TEST_START_TRACE_SUPPRESSION;
  84. AZLOG_ERROR("test error");
  85. AZ_TEST_STOP_TRACE_SUPPRESSION(1);
  86. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Error);
  87. EXPECT_EQ(strcmp("test error", m_lastLogMessage.c_str()), 0);
  88. }
  89. TEST_F(LoggerSystemComponentTests, LogFatalTest)
  90. {
  91. AZLOG_FATAL("test fatal");
  92. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Fatal);
  93. EXPECT_EQ(strcmp("test fatal", m_lastLogMessage.c_str()), 0);
  94. }
  95. TEST_F(LoggerSystemComponentTests, LogLevelTest)
  96. {
  97. AZ::Interface<AZ::ILogger>::Get()->SetLogLevel(AZ::LogLevel::Trace);
  98. AZLOG_DEBUG("test debug");
  99. AZ::Interface<AZ::ILogger>::Get()->SetLogLevel(AZ::LogLevel::Debug);
  100. AZLOG_TRACE("test trace");
  101. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  102. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  103. }
  104. TEST_F(LoggerSystemComponentTests, TaggedLogEnableDisableTest)
  105. {
  106. AZ::Interface<AZ::ILogger>::Get()->SetLogLevel(AZ::LogLevel::Trace);
  107. AZLOG_DEBUG("test debug");
  108. AZLOG(TEST_TAG, "test tag"); // Tag is not enabled, callback should not get invoked
  109. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  110. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  111. AZ::ConsoleCommandContainer arguments{ "TEST_TAG" };
  112. m_loggerComponent->EnableLog(arguments); // Tag should now be enabled
  113. AZLOG(TEST_TAG, "test tag"); // Tag is enabled, callback should get invoked
  114. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Notice);
  115. EXPECT_EQ(strcmp("test tag", m_lastLogMessage.c_str()), 0);
  116. m_loggerComponent->DisableLog(arguments); // Tag should now be disabled
  117. AZLOG_DEBUG("test debug");
  118. AZLOG(TEST_TAG, "test tag"); // Tag is not enabled, callback should not get invoked
  119. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  120. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  121. }
  122. TEST_F(LoggerSystemComponentTests, TaggedLogToggleTest)
  123. {
  124. AZ::Interface<AZ::ILogger>::Get()->SetLogLevel(AZ::LogLevel::Trace);
  125. AZLOG_DEBUG("test debug");
  126. AZLOG(TEST_TAG, "test tag"); // Tag is not enabled, callback should not get invoked
  127. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  128. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  129. AZ::ConsoleCommandContainer arguments{ "TEST_TAG" };
  130. m_loggerComponent->ToggleLog(arguments); // Tag should now be enabled
  131. AZLOG(TEST_TAG, "test tag"); // Tag is enabled, callback should get invoked
  132. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Notice);
  133. EXPECT_EQ(strcmp("test tag", m_lastLogMessage.c_str()), 0);
  134. m_loggerComponent->ToggleLog(arguments); // Tag should now be disabled
  135. AZLOG_DEBUG("test debug");
  136. AZLOG(TEST_TAG, "test tag"); // Tag is not enabled, callback should not get invoked
  137. EXPECT_EQ(m_lastLogLevel, AZ::LogLevel::Debug);
  138. EXPECT_EQ(strcmp("test debug", m_lastLogMessage.c_str()), 0);
  139. }
  140. }