diff options
Diffstat (limited to 'src/components/utils/test/auto_trace_test.cc')
-rw-r--r-- | src/components/utils/test/auto_trace_test.cc | 121 |
1 files changed, 82 insertions, 39 deletions
diff --git a/src/components/utils/test/auto_trace_test.cc b/src/components/utils/test/auto_trace_test.cc index a53f4aa1e0..1290ce7e96 100644 --- a/src/components/utils/test/auto_trace_test.cc +++ b/src/components/utils/test/auto_trace_test.cc @@ -30,73 +30,116 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include <fstream> +#include <ctime> + #include "gtest/gtest.h" #include "utils/auto_trace.h" -#include "logger.h" -#include <fstream> +#include "utils/logger.h" +#include "utils/log_message_loop_thread.h" +#include "utils/threads/message_loop_thread.h" +#include "utils/file_system.h" +#include "utils/threads/thread.h" +#include "utils/date_time.h" +#include "utils/logger_status.h" +#include "utils/helpers.h" namespace test { namespace components { -namespace utils { +namespace utils_test { using namespace ::logger; -CREATE_LOGGERPTR_GLOBAL(logger_, "AutoTraceTestLog"); +CREATE_LOGGERPTR_GLOBAL(logger_, "AutoTraceTestLog") + +namespace { +const std::string kFileName = + file_system::CurrentWorkingDirectory() + "/AutoTraceTestLogFile.log"; +} // namespace void Preconditions() { - //delete file with previous logs - const char* file_name = "AutoTraceTestLogFile.log"; - std::remove(file_name); + // Delete file with previous logs + if (file_system::FileExists(kFileName)) { + // If logger is active now deleting log file cause undefined befaviour. + DEINIT_LOGGER(); + ASSERT_TRUE(file_system::DeleteFile(kFileName)) + << "Can't delete AutoTraceTestLogFile.log"; + } } void InitLogger() { - INIT_LOGGER("log4cxx.properties"); + // Set enabled logs + INIT_LOGGER("log4cxx.properties", true); + // DEINIT_LOGGER will be called in test_main.cc } -void CreateDeleteAutoTrace(const std::string & testlog) { +void CreateDeleteAutoTrace(const std::string& testlog) { LOG4CXX_AUTO_TRACE(logger_); LOG4CXX_DEBUG(logger_, testlog); } -bool CheckTraceInFile(const std::string & testlog) { - - bool isLogFound = false; - std::string line; - - std::ifstream file_log("AutoTraceTestLogFile.log"); +/** + * @brief IsLogLineContains cheks if log line contains debug message with + * specified debug message + * @param log_line line to search in + * @param debug_level expected debug level + * @param debug_log_message expected debug message + * @return true if debug_message exist in log_line with debug_level + */ +bool IsLogLineContains(const std::string& log_line, + const std::string& debug_level, + const std::string& debug_message) { + return log_line.find(debug_level) != std::string::npos && + log_line.find(debug_message) != std::string::npos; +} - if (file_log.is_open()) { - while (getline(file_log, line)) { - std::size_t found = line.find(testlog); - std::size_t founddebug = line.find("DEBUG"); - if ((found != std::string::npos) && (founddebug != std::string::npos)) { - isLogFound = true; - break; - } - } - file_log.close(); - } else { - std::cout << "file cannot be opened \n"; +/** + * @brief CheckAutoTraceDebugInFile chacks if logfile contains autotrace and + * debug for test AutoTrace_WriteToFile_ReadCorrectString + * @param debug_message message that should be logged with DEBUG level + * @return true if trace enter, trace exit, debug message exist in log file + */ +bool CheckAutoTraceDebugInFile(const std::string& debug_message) { + using namespace helpers; + const std::string debug_log_level = "DEBUG"; + const std::string trace_log_level = "TRACE"; + const std::string enter_message = ": Enter"; + const std::string exit_message = ": Exit"; + std::ifstream file_log(kFileName); + if (!file_log.is_open()) { + return false; } - return isLogFound; -} -void DeinitLogger() { - DEINIT_LOGGER(); + bool debug_found = false; + bool trace_enter = false; + bool trace_exit = false; + for (std::string line; + Compare<bool, EQ, ONE>(false, debug_found, trace_enter, trace_exit) && + getline(file_log, line);) { + debug_found = debug_found + ? debug_found + : IsLogLineContains(line, debug_log_level, debug_message); + trace_enter = trace_enter + ? trace_enter + : IsLogLineContains(line, trace_log_level, enter_message); + trace_exit = trace_exit + ? trace_exit + : IsLogLineContains(line, trace_log_level, exit_message); + } + file_log.close(); + return Compare<bool, EQ, ALL>(true, debug_found, trace_enter, trace_exit); } - -//TODO(VVeremjova) APPLINK-12832 Logger does not write debug information in file -TEST(AutoTraceTest, DISABLED_Basic) { - const std::string testlog = - "Test trace is working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; +// TODO(DTrunov) : Enable after APPLINK-25006 will be resolved +TEST(AutoTraceTest, DISABLED_AutoTrace_WriteToFile_ReadCorrectString) { + const std::string testlog = "Test trace is working!"; Preconditions(); InitLogger(); CreateDeleteAutoTrace(testlog); - DeinitLogger(); - ASSERT_TRUE(CheckTraceInFile(testlog)); + FLUSH_LOGGER(); + ASSERT_TRUE(CheckAutoTraceDebugInFile(testlog)); } -} // namespace utils +} // namespace utils_test } // namespace components } // namespace test |