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 |