| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/public/c/environment/logger.h" | 5 #include "mojo/public/c/environment/logger.h" |
| 6 #include "mojo/public/cpp/environment/environment.h" | 6 #include "mojo/public/cpp/environment/environment.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 namespace mojo { | 9 namespace mojo { |
| 10 namespace { | 10 namespace { |
| 11 | 11 |
| 12 std::vector<std::string> g_log_msgs; | 12 std::vector<std::string> g_log_msgs; |
| 13 const MojoLogger kTestLogger = { | 13 const MojoLogger kTestLogger = { |
| 14 [](MojoLogLevel log_level, | 14 [](MojoLogLevel log_level, |
| 15 const char* source_file, | 15 const char* source_file, |
| 16 uint32_t source_line, | 16 uint32_t source_line, |
| 17 const char* message) { g_log_msgs.push_back(message); }, | 17 const char* message) { g_log_msgs.push_back(message); }, |
| 18 []() { return MOJO_LOG_LEVEL_INFO; }, [](MojoLogLevel lvl) {}}; | 18 []() { return MOJO_LOG_LEVEL_INFO; }, [](MojoLogLevel lvl) {}}; |
| 19 | 19 |
| 20 TEST(LoggerTest, Basic) { | 20 TEST(LoggerTest, Basic) { |
| 21 const char kPath[] = "/fake/path/to/file.cc"; | 21 const char kPath[] = "/fake/path/to/file.cc"; |
| 22 | 22 |
| 23 Environment environment; | |
| 24 const MojoLogger* const logger = Environment::GetDefaultLogger(); | 23 const MojoLogger* const logger = Environment::GetDefaultLogger(); |
| 25 | 24 |
| 26 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, kPath, 123, | 25 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, kPath, 123, |
| 27 "Logged at VERBOSE-1 level"); | 26 "Logged at VERBOSE-1 level"); |
| 28 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, kPath, 123, | 27 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, kPath, 123, |
| 29 "Logged at VERBOSE level"); | 28 "Logged at VERBOSE level"); |
| 30 logger->LogMessage(MOJO_LOG_LEVEL_INFO, kPath, 123, "Logged at INFO level"); | 29 logger->LogMessage(MOJO_LOG_LEVEL_INFO, kPath, 123, "Logged at INFO level"); |
| 31 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, kPath, 123, | 30 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, kPath, 123, |
| 32 "Logged at WARNING level"); | 31 "Logged at WARNING level"); |
| 33 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, kPath, 123, "Logged at ERROR level"); | 32 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, kPath, 123, "Logged at ERROR level"); |
| 34 | 33 |
| 35 // This should kill us: | 34 // This should kill us: |
| 36 EXPECT_DEATH_IF_SUPPORTED({ | 35 EXPECT_DEATH_IF_SUPPORTED({ |
| 37 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, | 36 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, |
| 38 "Logged at FATAL level"); | 37 "Logged at FATAL level"); |
| 39 }, ""); | 38 }, ""); |
| 40 } | 39 } |
| 41 | 40 |
| 42 TEST(LoggerTest, LogLevels) { | 41 TEST(LoggerTest, LogLevels) { |
| 43 const char kPath[] = "/fake/path/to/file.cc"; | 42 const char kPath[] = "/fake/path/to/file.cc"; |
| 44 | 43 |
| 45 Environment environment; | |
| 46 const MojoLogger* const logger = Environment::GetDefaultLogger(); | 44 const MojoLogger* const logger = Environment::GetDefaultLogger(); |
| 47 | 45 |
| 48 for (MojoLogLevel log_level = MOJO_LOG_LEVEL_VERBOSE - 1; | 46 for (MojoLogLevel log_level = MOJO_LOG_LEVEL_VERBOSE - 1; |
| 49 log_level <= MOJO_LOG_LEVEL_FATAL + 1; | 47 log_level <= MOJO_LOG_LEVEL_FATAL + 1; |
| 50 log_level++) { | 48 log_level++) { |
| 51 logger->SetMinimumLogLevel(log_level); | 49 logger->SetMinimumLogLevel(log_level); |
| 52 | 50 |
| 53 if (log_level <= MOJO_LOG_LEVEL_FATAL) | 51 if (log_level <= MOJO_LOG_LEVEL_FATAL) |
| 54 EXPECT_EQ(log_level, logger->GetMinimumLogLevel()); | 52 EXPECT_EQ(log_level, logger->GetMinimumLogLevel()); |
| 55 else | 53 else |
| (...skipping 11 matching lines...) Expand all Loading... |
| 67 | 65 |
| 68 // This should kill us: | 66 // This should kill us: |
| 69 EXPECT_DEATH_IF_SUPPORTED({ | 67 EXPECT_DEATH_IF_SUPPORTED({ |
| 70 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, | 68 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, |
| 71 "Logged at FATAL level"); | 69 "Logged at FATAL level"); |
| 72 }, ""); | 70 }, ""); |
| 73 } | 71 } |
| 74 } | 72 } |
| 75 | 73 |
| 76 TEST(LoggerTest, NoFile) { | 74 TEST(LoggerTest, NoFile) { |
| 77 Environment environment; | |
| 78 const MojoLogger* const logger = Environment::GetDefaultLogger(); | 75 const MojoLogger* const logger = Environment::GetDefaultLogger(); |
| 79 | 76 |
| 80 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, nullptr, 0, | 77 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, nullptr, 0, |
| 81 "Logged at VERBOSE-1 level"); | 78 "Logged at VERBOSE-1 level"); |
| 82 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, nullptr, 0, | 79 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, nullptr, 0, |
| 83 "Logged at VERBOSE level"); | 80 "Logged at VERBOSE level"); |
| 84 logger->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, "Logged at INFO level"); | 81 logger->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, "Logged at INFO level"); |
| 85 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, nullptr, 0, | 82 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, nullptr, 0, |
| 86 "Logged at WARNING level"); | 83 "Logged at WARNING level"); |
| 87 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, nullptr, 0, "Logged at ERROR level"); | 84 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, nullptr, 0, "Logged at ERROR level"); |
| 88 | 85 |
| 89 // This should kill us: | 86 // This should kill us: |
| 90 EXPECT_DEATH_IF_SUPPORTED({ | 87 EXPECT_DEATH_IF_SUPPORTED({ |
| 91 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, nullptr, 0, | 88 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, nullptr, 0, |
| 92 "Logged at FATAL level"); | 89 "Logged at FATAL level"); |
| 93 }, ""); | 90 }, ""); |
| 94 } | 91 } |
| 95 | 92 |
| 96 TEST(LoggerTest, SetDefaultLogger) { | 93 TEST(LoggerTest, SetDefaultLogger) { |
| 97 Environment environment; | |
| 98 Environment::SetDefaultLogger(&kTestLogger); | 94 Environment::SetDefaultLogger(&kTestLogger); |
| 99 | 95 |
| 100 std::vector<std::string> expected_msgs; | 96 std::vector<std::string> expected_msgs; |
| 101 expected_msgs.push_back("First message!"); | 97 expected_msgs.push_back("First message!"); |
| 102 expected_msgs.push_back("Second message!"); | 98 expected_msgs.push_back("Second message!"); |
| 103 expected_msgs.push_back("Third message!"); | 99 expected_msgs.push_back("Third message!"); |
| 104 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | 100 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, |
| 105 expected_msgs[0].c_str()); | 101 expected_msgs[0].c_str()); |
| 106 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | 102 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, |
| 107 expected_msgs[1].c_str()); | 103 expected_msgs[1].c_str()); |
| 108 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | 104 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, |
| 109 expected_msgs[2].c_str()); | 105 expected_msgs[2].c_str()); |
| 110 | 106 |
| 111 EXPECT_EQ(expected_msgs, g_log_msgs); | 107 EXPECT_EQ(expected_msgs, g_log_msgs); |
| 112 | 108 |
| 113 // This should restore the default logger. | 109 // This should restore the default logger. |
| 114 Environment::SetDefaultLogger(nullptr); | 110 Environment::SetDefaultLogger(nullptr); |
| 115 | 111 |
| 116 EXPECT_NE(&kTestLogger, Environment::GetDefaultLogger()); | 112 EXPECT_NE(&kTestLogger, Environment::GetDefaultLogger()); |
| 117 EXPECT_NE(nullptr, Environment::GetDefaultLogger()); | 113 EXPECT_NE(nullptr, Environment::GetDefaultLogger()); |
| 118 } | 114 } |
| 119 | 115 |
| 120 } // namespace | 116 } // namespace |
| 121 } // namespace mojo | 117 } // namespace mojo |
| OLD | NEW |