* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* MindIE is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include <string>
#include "gtest/gtest.h"
#include "log_config.h"
#include "log.h"
namespace mindie_llm {
class TestLogConfig : public ::testing::Test {
protected:
std::string logFilePath = "";
LogConfig logConfig;
};
TEST_F(TestLogConfig, TestInitLogToFileWithMINDIELOGTOFILESuccess)
{
logConfig.logToFile_ = 0;
setenv("MINDIE_LOG_TO_FILE", "1", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_FILE");
ASSERT_TRUE(logConfig.logToFile_);
}
TEST_F(TestLogConfig, TestInitLogToFileWithMINDIELOGTOFILEFalse)
{
logConfig.logToFile_ = 1;
setenv("MINDIE_LOG_TO_FILE", "0", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_FILE");
ASSERT_FALSE(logConfig.logToFile_);
}
TEST_F(TestLogConfig, TestInitLogToFileWithMINDIELLMLOGTOFILESuccess)
{
logConfig.logToFile_ = 0;
setenv("MINDIE_LOG_TO_FILE", "1", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_FILE");
ASSERT_TRUE(logConfig.logToFile_);
}
TEST_F(TestLogConfig, TestInitLogToFileWithMINDIELLMLOGTOFILEFail)
{
logConfig.logToFile_ = 1;
setenv("MINDIE_LOG_TO_FILE", "0", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_FILE");
ASSERT_FALSE(logConfig.logToFile_);
}
TEST_F(TestLogConfig, TestInitLogToFileWithDefaultSuccess)
{
logConfig.Init(LoggerType::MINDIE_LLM);
ASSERT_TRUE(logConfig.logToFile_);
}
TEST_F(TestLogConfig, TestInitLogToStdoutWithMINDIELOGTOSTDOUTSuccess)
{
logConfig.logToStdOut_ = 0;
setenv("MINDIE_LOG_TO_STDOUT", "1", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_STDOUT");
ASSERT_TRUE(logConfig.logToStdOut_);
}
TEST_F(TestLogConfig, TestInitLogToStdoutWithMINDIELOGTOSTDOUTFail)
{
logConfig.logToStdOut_ = 1;
setenv("MINDIE_LOG_TO_STDOUT", "0", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_STDOUT");
ASSERT_FALSE(logConfig.logToStdOut_);
}
TEST_F(TestLogConfig, TestInitLogToStdoutWithMINDIELLMLOGTOSTDOUTSuccess)
{
logConfig.logToStdOut_ = 0;
setenv("MINDIE_LOG_TO_STDOUT", "1", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_STDOUT");
ASSERT_TRUE(logConfig.logToStdOut_);
}
TEST_F(TestLogConfig, TestInitLogToStdoutWithMINDIELOGLLMTOSTDOUTFail)
{
logConfig.logToStdOut_ = 1;
setenv("MINDIE_LOG_TO_STDOUT", "0", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_TO_STDOUT");
ASSERT_FALSE(logConfig.logToStdOut_);
}
TEST_F(TestLogConfig, TestInitLogToStdoutWithDefaultFail)
{
logConfig.Init(LoggerType::MINDIE_LLM);
ASSERT_FALSE(logConfig.logToStdOut_);
}
TEST_F(TestLogConfig, TestInitLogLevelWithMINDIELOGLEVELSuccess)
{
logConfig.logLevel_ = LogLevel::info;
setenv("MINDIE_LOG_LEVEL", "debug", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_LEVEL");
ASSERT_EQ(LogLevel::debug, logConfig.logLevel_);
}
TEST_F(TestLogConfig, TestInitLogLevelWithMINDIELLMLOGLEVELSuccess)
{
logConfig.logLevel_ = LogLevel::info;
setenv("MINDIE_LOG_LEVEL", "debug", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_LEVEL");
ASSERT_EQ(LogLevel::debug, logConfig.logLevel_);
}
TEST_F(TestLogConfig, TestInitLogLevelWithDefaultSuccess)
{
logConfig.Init(LoggerType::MINDIE_LLM);
ASSERT_EQ(LogLevel::info, logConfig.logLevel_);
}
TEST_F(TestLogConfig, TestInitLogVerboseWithMINDIELOGVERBOSESuccess)
{
logConfig.logVerbose_ = 0;
setenv("MINDIE_LOG_VERBOSE", "1", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_VERBOSE");
ASSERT_TRUE(logConfig.logVerbose_);
}
TEST_F(TestLogConfig, TestInitLogVerboseWithMINDIELOGVERBOSEFail)
{
logConfig.logVerbose_ = 1;
setenv("MINDIE_LOG_VERBOSE", "0", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_VERBOSE");
ASSERT_FALSE(logConfig.logVerbose_);
}
TEST_F(TestLogConfig, TestInitLogVerboseWithDefaultSuccess)
{
logConfig.Init(LoggerType::MINDIE_LLM);
ASSERT_TRUE(logConfig.logVerbose_);
}
TEST_F(TestLogConfig, TestInitLogRotationParamWithMINDIELOGROTATESuccess)
{
setenv("MINDIE_LOG_ROTATE", "-fs 1 -r 10", 1);
logConfig.Init(LoggerType::MINDIE_LLM);
unsetenv("MINDIE_LOG_ROTATE");
constexpr uint32_t oneMb = 1 * 1024 * 1024;
ASSERT_EQ(logConfig.logFileSize_, oneMb);
constexpr uint32_t fileNum = 10;
ASSERT_EQ(fileNum, logConfig.logFileCount_);
}
TEST_F(TestLogConfig, TestInitLogRotationParamWithDefaultSuccess)
{
logConfig.Init(LoggerType::MINDIE_LLM);
constexpr uint32_t fileSize = 20 * 1024 * 1024;
ASSERT_EQ(fileSize, logConfig.logFileSize_);
constexpr uint32_t fileNum = 10;
ASSERT_EQ(fileNum, logConfig.logFileCount_);
}
}