* -------------------------------------------------------------------------
* 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 "PerformanceTest.h"
#include "DataBaseManager.h"
#include "KernelParse.h"
#include "ParserStatusManager.h"
using namespace Performance;
using namespace Dic;
using namespace Dic::Module;
using namespace Dic::Module::Summary;
const std::string OPERATOR_MODULE = "Operator";
const int TIME_REFERENCE_200MS = 200;
const int TIME_REFERENCE_500MS = 500;
class KernelParseTest : PerformanceTest {};
TEST_F(PerformanceTest, testKernelParser1P2GBTime) {
auto start = std::chrono::high_resolution_clock::now();
KernelParse::Instance().Parse({std::string(test1P2GBRootPath), "", ""});
while (true) {
Timeline::ParserStatus status = Timeline::ParserStatusManager::Instance().GetParserStatus(KERNEL_PREFIX + "0");
if (status == Timeline::ParserStatus::FINISH) {
break;
}
std::chrono::milliseconds duration(10);
std::this_thread::sleep_for(duration);
}
auto end = std::chrono::high_resolution_clock::now();
auto cost = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
status.module = OPERATOR_MODULE;
status.caseName = ::testing::UnitTest::GetInstance()->current_test_info()->name();
status.result = cost <= TIME_REFERENCE_200MS ? "pass" : "failed";
status.refTime = std::to_string(TIME_REFERENCE_200MS);
status.realTime = std::to_string(cost);
KernelParse::Instance().Reset();
}
TEST_F(PerformanceTest, testKernelParser1P5GBTime) {
auto start = std::chrono::high_resolution_clock::now();
KernelParse::Instance().Parse({std::string(test1P5GBRootPath), "", ""});
while (true) {
Timeline::ParserStatus status = Timeline::ParserStatusManager::Instance().GetParserStatus(KERNEL_PREFIX + "0");
if (status == Timeline::ParserStatus::FINISH) {
break;
}
std::chrono::milliseconds duration(10);
std::this_thread::sleep_for(duration);
}
auto end = std::chrono::high_resolution_clock::now();
auto cost = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
status.module = OPERATOR_MODULE;
status.caseName = ::testing::UnitTest::GetInstance()->current_test_info()->name();
status.result = cost <= TIME_REFERENCE_500MS ? "pass" : "failed";
status.refTime = std::to_string(TIME_REFERENCE_500MS);
status.realTime = std::to_string(cost);
KernelParse::Instance().Reset();
}