* -------------------------------------------------------------------------
* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio 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 <gtest/gtest.h>
#include "TextTraceDatabase.h"
class TextTraceDatabaseTest : public testing::Test {};
TEST_F(TextTraceDatabaseTest, OpenDb) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
database.OpenDb("tttt", true);
database.CloseDb();
}
* db路径有日志注入
*/
TEST_F(TextTraceDatabaseTest, TestOpenDbWithPathInject) {
std::recursive_mutex sqlMutex;
Dic::Module::Database database(sqlMutex);
bool result = database.OpenDb("tt>>>><<</\tt", true);
EXPECT_EQ(result, false);
database.CloseDb();
}
* db路径超过最大限制
*/
TEST_F(TextTraceDatabaseTest, TestOpenDbWithPathLengthExceedLimit) {
std::recursive_mutex sqlMutex;
Dic::Module::Database database(sqlMutex);
std::string dbPath;
int lengthLimit = 0;
#ifdef _WIN32
const uint32_t WIN_FILE_WRONG_LENGTH = 261;
lengthLimit = WIN_FILE_WRONG_LENGTH;
#else
const uint32_t LINUX_FILE_WRONG_LENGTH = 4097;
lengthLimit = LINUX_FILE_WRONG_LENGTH;
#endif
for (int i = 0; i < lengthLimit; ++i) {
dbPath += "a";
}
bool result = database.OpenDb(dbPath, true);
EXPECT_EQ(result, false);
database.CloseDb();
}
TEST_F(TextTraceDatabaseTest, InitStmt) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
bool success = database.InitStmt();
EXPECT_EQ(success, false);
}
TEST_F(TextTraceDatabaseTest, CreateTable) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
database.CreateTable();
database.OpenDb("tttt", true);
bool success = database.CreateTable();
database.CloseDb();
EXPECT_EQ(success, true);
}
TEST_F(TextTraceDatabaseTest, DropTable) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
bool success = database.DropTable();
EXPECT_EQ(success, false);
}
TEST_F(TextTraceDatabaseTest, CreateIndex) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
database.CreateIndex();
database.OpenDb("tttt", true);
bool success = database.CreateIndex();
database.CloseDb();
EXPECT_EQ(success, true);
}
TEST_F(TextTraceDatabaseTest, InsertSlice) {
std::recursive_mutex sqlMutex;
const int size = 1000;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
bool success = true;
for (int i = 0; i < size; i++) {
Dic::Module::Timeline::Trace::Slice event;
success = success && database.InsertSlice(event);
}
EXPECT_EQ(success, true);
}
TEST_F(TextTraceDatabaseTest, InsertFlow) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
bool success = true;
const int size = 1000;
for (int i = 0; i < size; i++) {
Dic::Module::Timeline::Trace::Flow event;
success = success && database.InsertFlow(event);
}
EXPECT_EQ(success, true);
}
TEST_F(TextTraceDatabaseTest, InsertCounter) {
std::recursive_mutex sqlMutex;
Dic::Module::Timeline::TextTraceDatabase database(sqlMutex);
bool success = true;
const int size = 1000;
for (int i = 0; i < size; i++) {
Dic::Module::Timeline::Trace::Counter event;
success = success && database.InsertCounter(event);
}
EXPECT_EQ(success, true);
}