Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/LoggingTests.cpp @ 4270:251a8b07fa37
logging categories
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 02 Nov 2020 18:45:50 +0100 |
parents | 318c16cfccab |
children | d7a50b7b8466 |
comparison
equal
deleted
inserted
replaced
4269:c7bd2f21ccc3 | 4270:251a8b07fa37 |
---|---|
26 #endif | 26 #endif |
27 | 27 |
28 #include <gtest/gtest.h> | 28 #include <gtest/gtest.h> |
29 | 29 |
30 #include "../Sources/Logging.h" | 30 #include "../Sources/Logging.h" |
31 #include "../Sources/OrthancException.h" | |
31 | 32 |
32 #include <boost/regex.hpp> | 33 #include <boost/regex.hpp> |
33 #include <sstream> | 34 #include <sstream> |
34 | 35 |
35 using namespace Orthanc::Logging; | |
36 | 36 |
37 static std::stringstream testErrorStream; | 37 static std::stringstream testErrorStream; |
38 void TestError(const char* message) | 38 void TestError(const char* message) |
39 { | 39 { |
40 testErrorStream << message; | 40 testErrorStream << message; |
131 | 131 |
132 TEST(FuncStreamBuf, BasicTest) | 132 TEST(FuncStreamBuf, BasicTest) |
133 { | 133 { |
134 LoggingMementoScope loggingConfiguration; | 134 LoggingMementoScope loggingConfiguration; |
135 | 135 |
136 EnableTraceLevel(true); | 136 Orthanc::Logging::EnableTraceLevel(true); |
137 | 137 |
138 typedef void(*LoggingFunctionFunc)(const char*); | 138 typedef void(*LoggingFunctionFunc)(const char*); |
139 | 139 |
140 FuncStreamBuf<LoggingFunctionFunc> errorStreamBuf(TestError); | 140 FuncStreamBuf<LoggingFunctionFunc> errorStreamBuf(TestError); |
141 std::ostream errorStream(&errorStreamBuf); | 141 std::ostream errorStream(&errorStreamBuf); |
144 std::ostream warningStream(&warningStreamBuf); | 144 std::ostream warningStream(&warningStreamBuf); |
145 | 145 |
146 FuncStreamBuf<LoggingFunctionFunc> infoStreamBuf(TestInfo); | 146 FuncStreamBuf<LoggingFunctionFunc> infoStreamBuf(TestInfo); |
147 std::ostream infoStream(&infoStreamBuf); | 147 std::ostream infoStream(&infoStreamBuf); |
148 | 148 |
149 SetErrorWarnInfoLoggingStreams(errorStream, warningStream, infoStream); | 149 Orthanc::Logging::SetErrorWarnInfoLoggingStreams(errorStream, warningStream, infoStream); |
150 | 150 |
151 { | 151 { |
152 const char* text = "E is the set of all sets that do not contain themselves. Does E contain itself?"; | 152 const char* text = "E is the set of all sets that do not contain themselves. Does E contain itself?"; |
153 LOG(ERROR) << text; | 153 LOG(ERROR) << text; |
154 std::string logLine = testErrorStream.str(); | 154 std::string logLine = testErrorStream.str(); |
194 std::string payload; | 194 std::string payload; |
195 bool ok = GetLogLinePayload(payload, logLine); | 195 bool ok = GetLogLinePayload(payload, logLine); |
196 ASSERT_TRUE(ok); | 196 ASSERT_TRUE(ok); |
197 ASSERT_STREQ(payload.c_str(), text); | 197 ASSERT_STREQ(payload.c_str(), text); |
198 } | 198 } |
199 } | 199 |
200 Orthanc::Logging::EnableTraceLevel(false); // Back to normal | |
201 } | |
202 | |
203 | |
204 | |
205 TEST(Logging, Categories) | |
206 { | |
207 using namespace Orthanc::Logging; | |
208 | |
209 // Unit tests are running in "--verbose" mode (not "--trace") | |
210 ASSERT_FALSE(IsTraceLevelEnabled()); | |
211 ASSERT_TRUE(IsInfoLevelEnabled()); | |
212 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); | |
213 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); | |
214 | |
215 // Cannot modify categories for ERROR and WARNING | |
216 ASSERT_THROW(SetCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC, true), | |
217 Orthanc::OrthancException); | |
218 ASSERT_THROW(SetCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC, false), | |
219 Orthanc::OrthancException); | |
220 | |
221 | |
222 EnableInfoLevel(false); | |
223 EnableTraceLevel(false); | |
224 ASSERT_FALSE(IsTraceLevelEnabled()); | |
225 ASSERT_FALSE(IsInfoLevelEnabled()); | |
226 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); | |
227 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); | |
228 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); | |
229 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); | |
230 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); | |
231 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); | |
232 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
233 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
234 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); | |
235 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
236 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
237 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); | |
238 | |
239 | |
240 // Test the "category" setters at INFO level | |
241 SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, true); | |
242 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
243 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
244 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
245 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
246 ASSERT_FALSE(IsTraceLevelEnabled()); | |
247 ASSERT_TRUE(IsInfoLevelEnabled()); // At least one category is verbose | |
248 | |
249 SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, true); | |
250 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
251 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
252 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
253 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
254 ASSERT_FALSE(IsTraceLevelEnabled()); | |
255 ASSERT_TRUE(IsInfoLevelEnabled()); | |
256 | |
257 SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, false); | |
258 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
259 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
260 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
261 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
262 ASSERT_FALSE(IsTraceLevelEnabled()); | |
263 ASSERT_TRUE(IsInfoLevelEnabled()); // "GENERIC" is still verbose | |
264 | |
265 SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, false); | |
266 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
267 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
268 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
269 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
270 ASSERT_FALSE(IsTraceLevelEnabled()); | |
271 ASSERT_FALSE(IsInfoLevelEnabled()); | |
272 | |
273 | |
274 // Test the "category" setters at TRACE level | |
275 SetCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM, true); | |
276 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
277 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
278 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
279 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
280 ASSERT_TRUE(IsTraceLevelEnabled()); | |
281 ASSERT_TRUE(IsInfoLevelEnabled()); | |
282 | |
283 SetCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC, true); | |
284 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
285 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
286 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
287 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
288 ASSERT_TRUE(IsTraceLevelEnabled()); | |
289 ASSERT_TRUE(IsInfoLevelEnabled()); | |
290 | |
291 SetCategoryEnabled(LogLevel_INFO, LogCategory_DICOM, false); | |
292 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
293 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
294 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
295 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
296 ASSERT_TRUE(IsTraceLevelEnabled()); // "GENERIC" is still at trace level | |
297 ASSERT_TRUE(IsInfoLevelEnabled()); | |
298 | |
299 SetCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC, false); | |
300 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
301 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
302 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
303 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
304 ASSERT_FALSE(IsTraceLevelEnabled()); | |
305 ASSERT_TRUE(IsInfoLevelEnabled()); | |
306 | |
307 SetCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC, false); | |
308 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
309 ASSERT_FALSE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
310 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
311 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
312 ASSERT_FALSE(IsTraceLevelEnabled()); | |
313 ASSERT_FALSE(IsInfoLevelEnabled()); | |
314 | |
315 | |
316 | |
317 // Test the "macro" setters | |
318 EnableInfoLevel(true); | |
319 EnableTraceLevel(false); | |
320 ASSERT_FALSE(IsTraceLevelEnabled()); | |
321 ASSERT_TRUE(IsInfoLevelEnabled()); | |
322 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); | |
323 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); | |
324 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); | |
325 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); | |
326 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); | |
327 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); | |
328 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
329 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
330 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); | |
331 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
332 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
333 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); | |
334 | |
335 EnableInfoLevel(false); | |
336 EnableTraceLevel(true); // "--trace" implies "--verbose" | |
337 ASSERT_TRUE(IsTraceLevelEnabled()); | |
338 ASSERT_TRUE(IsInfoLevelEnabled()); | |
339 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_GENERIC)); | |
340 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_DICOM)); | |
341 ASSERT_TRUE(IsCategoryEnabled(LogLevel_ERROR, LogCategory_SQLITE)); | |
342 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_GENERIC)); | |
343 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_DICOM)); | |
344 ASSERT_TRUE(IsCategoryEnabled(LogLevel_WARNING, LogCategory_SQLITE)); | |
345 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_GENERIC)); | |
346 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_DICOM)); | |
347 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); | |
348 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_GENERIC)); | |
349 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_DICOM)); | |
350 ASSERT_TRUE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); | |
351 | |
352 | |
353 | |
354 // Back to normal | |
355 EnableInfoLevel(true); | |
356 EnableTraceLevel(false); | |
357 ASSERT_FALSE(IsTraceLevelEnabled()); | |
358 ASSERT_TRUE(IsInfoLevelEnabled()); | |
359 ASSERT_TRUE(IsCategoryEnabled(LogLevel_INFO, LogCategory_SQLITE)); | |
360 ASSERT_FALSE(IsCategoryEnabled(LogLevel_TRACE, LogCategory_SQLITE)); | |
361 } |