/*! * * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file tst_logging.cpp * \author (last) Behrouz NematiPour * \date (last) 13-Oct-2022 * \author (original) Behrouz NematiPour * \date (original) 08-Jan-2020 * */ #include "tst_logging.h" // Qt #include #include // Project #include "FileHandler.h" #include "Logger.h" #include "MessageInterpreter.h" using namespace Storage; /*! * \brief tst_logging::tst_logging * \details Constructor * \param parent - QObject parent owner object. * Qt handles the children destruction by their parent objects life-cycle. */ tst_logging::tst_logging(QObject *parent) : QObject(parent) { } void tst_logging::initTestCase() { Threads::registerTypes(); QCOMPARE( _Logger.init(Threads::_Logger_Thread), !_Logger.init(Threads::_Logger_Thread)); _Logger._timeFormat = ""; } void tst_logging::cleanup() { // TODO need to QThread::currentThread()->msleep(1000); } void tst_logging::init() { // TODO need to fix and add a "start" step that gets called before each test function } void tst_logging::logEvent() { LOG_APPED("1 - Event log has been created"); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, ",1 - Event log has been created\n"); } void tst_logging::logDatum() { LOG_APPED("3 - Datum log has been created"); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, ",3 - Datum log has been created\n"); } void tst_logging::logError() { LOG_DEBUG("2 - Error log has been created"); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, ",2 - Error log has been created\n"); } void tst_logging::logUnknown() { emit Storage::Logger::I().didLog("4 - Datum log has been created", Storage::Logger::LogType::eLogType_Count, false); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, ",Incorrect type of logging 3\n" ",4 - Datum log has been created\n"); } void tst_logging::logError_gDisableUnhandledReport_False() { gDisableUnhandledReport = false; Can::MessageInterpreter iMsg; Can::Message msg; msg.actionId = Gui::GuiActionType::ID_AlarmTriggered; msg.data = {}; iMsg.printUnhandled(msg); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QStringList lines = mContent.split("\n"); QVERIFY(lines.count()); QCOMPARE(lines.first(), ",Unhandled Message ID (HD)"); } void tst_logging::logError_gDisableUnhandledReport_True() { gDisableUnhandledReport = true; Can::MessageInterpreter iMsg; Can::Message msg; msg.actionId = Gui::GuiActionType::ID_AlarmTriggered; msg.data = {}; iMsg.printUnhandled(msg); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, ""); } void tst_logging::logError_Unhandled_TreatmentStates() { gDisableUnhandledReport = false; Can::MessageInterpreter iMsg; Can::Message msg; msg.actionId = Gui::GuiActionType::ID_TreatmentStates; msg.data = {}; QVariantList vData {}; QVERIFY(! iMsg.interpretMessage_HD(msg, vData)); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QStringList lines = mContent.split("\n"); QVERIFY(lines.count()); QCOMPARE(lines.first(), ",Incorrect data length for received Message with ID '0x0F00'"); } void tst_logging::setLogPath_F() { _Logger._dir.setPath("/"); bool b = _Logger.setLogPath(); QCOMPARE(b , false); } void tst_logging::setLogPath_T() { _Logger._dir.setPath("/tmp"); bool b = _Logger.setLogPath(); QCOMPARE(b , true); } void tst_logging::readUnknown() { QString mContent; QVERIFY(! FileHandler::read("TheFileWhichDoesntExist.UnknownExtension", mContent)); } void tst_logging::setLogPath_TreatmentType() { // setLogPath for type eLogTrmt returns true by default, check QVERIFY(_Logger.setLogPath(Storage::Logger::LogType::eLogTrtmt)); } void tst_logging::tst_log_function_extraCases() { // Test the log function for the "Squish-unreachable" cases // case 1 : default log type of make log file name section _Logger.log("Mock Log Message String", Storage::Logger::LogType::eLogTrtmt, false); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, "Incorrect type of logging"); // case 2 : logPathName is empty _Logger._logPathNames.clear(); _Logger.log("Mock Log Message String", Storage::Logger::LogType::eLogTrtmt, false); //Check the logFileName constructed, it should be a debug path and file ext QString currentDate = QDate::currentDate().toString(_Logger._dateFormat); QString expectedFileName = currentDate + _Logger._dateSeparator + _Logger._logFileNamePrefix + _Logger._logPathNames[Storage::Logger::eLogDebug]; QCOMPARE(_Logger._logFileName, _Logger._logPathNames[Storage::Logger::eLogDebug] + expectedFileName); } void tst_logging::tst_enableConsoleOut() { _Logger._enableConsoleOut = false; // need to skip the check in enableConsoleOut function _Logger.enableConsoleOut(true); QString mContent; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, "Console out Logging enabled"); QVERIFY(_Logger._enableConsoleOut); // Check value stored _Logger._enableConsoleOut = true;// need to skip the check in enableConsoleOut function _Logger.enableConsoleOut(false); mContent = ""; FileHandler::read(_Logger._logFileName, mContent); QCOMPARE(mContent, "Console out Logging disabled"); QVERIFY(!_Logger._enableConsoleOut); // Check expected value stored // Coverage _Logger._enableConsoleOut = false;// need to skip the check in enableConsoleOut function _Logger.enableConsoleOut(false); QVERIFY(!_Logger._enableConsoleOut); // Check expected value stored }