79 { 2, LogLevel::Info }, { 2, LogLevel::Debug }, 80 { 3, LogLevel::Info }, { 3, LogLevel::Warning }, 81 { 4, LogLevel::Debug }, { 4, LogLevel::Warning }, 82 { 5, LogLevel::Trace }, { 5, LogLevel::Debug }, 83 { 6, LogLevel::Warning }, { 6, LogLevel::Error }, 84 { 7, LogLevel::Trace }, { 7, LogLevel::Info }, { 7, LogLevel::Debug }, 85 { 8, LogLevel::Trace }, { 8, LogLevel::Debug }, { 8, LogLevel::Info }, 86 { 8, LogLevel::Warning }, { 8, LogLevel::Error}, 87 { 9, LogLevel::Trace } 88 }; 89 90 // Fill in messages with the above lines 91 for (size_t i = 0; i < ARRAY_SIZE(lines); i++) { 92 switch (lines[i].level) { 93 #define LOG_LEVEL(name, printname) \ 94 case LogLevel::name: \ 95 msg[lines[i].message_number].printname("msg[%d]: " #printname, lines[i].message_number); \ 96 break; 97 LOG_LEVEL_LIST 98 #undef LOG_LEVEL 99 } 100 } 101 102 for (size_t i = 0; i < message_count; i++) { 103 _log.write(msg[i]); 104 } 105 106 // Verify that lines are written to the expected log files 107 for (size_t i = 0; i < ARRAY_SIZE(lines); i++) { 108 char expected[256]; 109 jio_snprintf(expected, sizeof(expected), "msg[%d]: %s", 110 lines[i].message_number, LogLevel::name(lines[i].level)); 111 for (int level = lines[i].level; level > 0; level--) { 112 EXPECT_TRUE(file_contains_substring(_level_filename[level], expected)) 113 << "line #" << i << " missing from log file " << _level_filename[level]; 114 } 115 for (int level = lines[i].level + 1; level < LogLevel::Count; level++) { 116 EXPECT_FALSE(file_contains_substring(_level_filename[level], expected)) 117 << "line #" << i << " erroneously included in log file " << _level_filename[level]; 118 } | 79 { 2, LogLevel::Info }, { 2, LogLevel::Debug }, 80 { 3, LogLevel::Info }, { 3, LogLevel::Warning }, 81 { 4, LogLevel::Debug }, { 4, LogLevel::Warning }, 82 { 5, LogLevel::Trace }, { 5, LogLevel::Debug }, 83 { 6, LogLevel::Warning }, { 6, LogLevel::Error }, 84 { 7, LogLevel::Trace }, { 7, LogLevel::Info }, { 7, LogLevel::Debug }, 85 { 8, LogLevel::Trace }, { 8, LogLevel::Debug }, { 8, LogLevel::Info }, 86 { 8, LogLevel::Warning }, { 8, LogLevel::Error}, 87 { 9, LogLevel::Trace } 88 }; 89 90 // Fill in messages with the above lines 91 for (size_t i = 0; i < ARRAY_SIZE(lines); i++) { 92 switch (lines[i].level) { 93 #define LOG_LEVEL(name, printname) \ 94 case LogLevel::name: \ 95 msg[lines[i].message_number].printname("msg[%d]: " #printname, lines[i].message_number); \ 96 break; 97 LOG_LEVEL_LIST 98 #undef LOG_LEVEL 99 default: 100 break; 101 } 102 } 103 104 for (size_t i = 0; i < message_count; i++) { 105 _log.write(msg[i]); 106 } 107 108 // Verify that lines are written to the expected log files 109 for (size_t i = 0; i < ARRAY_SIZE(lines); i++) { 110 char expected[256]; 111 jio_snprintf(expected, sizeof(expected), "msg[%d]: %s", 112 lines[i].message_number, LogLevel::name(lines[i].level)); 113 for (int level = lines[i].level; level > 0; level--) { 114 EXPECT_TRUE(file_contains_substring(_level_filename[level], expected)) 115 << "line #" << i << " missing from log file " << _level_filename[level]; 116 } 117 for (int level = lines[i].level + 1; level < LogLevel::Count; level++) { 118 EXPECT_FALSE(file_contains_substring(_level_filename[level], expected)) 119 << "line #" << i << " erroneously included in log file " << _level_filename[level]; 120 } |