106f6ba60Sopenharmony_ci/*
206f6ba60Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
306f6ba60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
406f6ba60Sopenharmony_ci * you may not use this file except in compliance with the License.
506f6ba60Sopenharmony_ci * You may obtain a copy of the License at
606f6ba60Sopenharmony_ci *
706f6ba60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
806f6ba60Sopenharmony_ci *
906f6ba60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1006f6ba60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1106f6ba60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1206f6ba60Sopenharmony_ci * See the License for the specific language governing permissions and
1306f6ba60Sopenharmony_ci * limitations under the License.
1406f6ba60Sopenharmony_ci */
1506f6ba60Sopenharmony_ci#include "unistd.h"
1606f6ba60Sopenharmony_ci#include <thread>
1706f6ba60Sopenharmony_ci#include <cstdio>
1806f6ba60Sopenharmony_ci#include <cstring>
1906f6ba60Sopenharmony_ci#include <map>
2006f6ba60Sopenharmony_ci#include <sstream>
2106f6ba60Sopenharmony_ci#include <iomanip>
2206f6ba60Sopenharmony_ci#include <future>
2306f6ba60Sopenharmony_ci#include "include/control_call_cmd.h"
2406f6ba60Sopenharmony_ci#include "include/startup_delay.h"
2506f6ba60Sopenharmony_ci#include "include/sp_utils.h"
2606f6ba60Sopenharmony_ci#include "include/parse_click_complete_trace.h"
2706f6ba60Sopenharmony_ci#include "include/parse_click_response_trace.h"
2806f6ba60Sopenharmony_ci#include "include/parse_radar.h"
2906f6ba60Sopenharmony_ci#include "include/parse_slide_fps_trace.h"
3006f6ba60Sopenharmony_ci#include "include/sp_log.h"
3106f6ba60Sopenharmony_ci#include "include/stalling_rate_trace.h"
3206f6ba60Sopenharmony_ci#include "common.h"
3306f6ba60Sopenharmony_ci
3406f6ba60Sopenharmony_cinamespace OHOS {
3506f6ba60Sopenharmony_cinamespace SmartPerf {
3606f6ba60Sopenharmony_cistd::string ControlCallCmd::GetResult(std::vector<std::string> v)
3706f6ba60Sopenharmony_ci{
3806f6ba60Sopenharmony_ci    IsohTest(v);
3906f6ba60Sopenharmony_ci    if (v[typeName] == "responseTime") {
4006f6ba60Sopenharmony_ci        time = SmartPerf::ControlCallCmd::ResponseTime();
4106f6ba60Sopenharmony_ci    } else if (v[typeName] == "completeTime") {
4206f6ba60Sopenharmony_ci        time = SmartPerf::ControlCallCmd::CompleteTime();
4306f6ba60Sopenharmony_ci    } else if (v[typeName] == "fpsohtest") {
4406f6ba60Sopenharmony_ci        std::string ohTestFps = CMD_COMMAND_MAP.at(CmdCommand::OHTESTFPS);
4506f6ba60Sopenharmony_ci        SPUtils::LoadCmd(ohTestFps, result);
4606f6ba60Sopenharmony_ci    } else if (v[typeName] == "frameLoss") {
4706f6ba60Sopenharmony_ci        result = SmartPerf::ControlCallCmd::GetFrame();
4806f6ba60Sopenharmony_ci    } else if (v[typeName] == "appStartTime") {
4906f6ba60Sopenharmony_ci        result = ControlCallCmd::GetAppStartTime();
5006f6ba60Sopenharmony_ci    } else if (v[typeName] == "slideList") {
5106f6ba60Sopenharmony_ci        result = ControlCallCmd::SlideList();
5206f6ba60Sopenharmony_ci    } else if (v[typeName] == "timeDelay") {
5306f6ba60Sopenharmony_ci        result = ControlCallCmd::TimeDelay();
5406f6ba60Sopenharmony_ci    }
5506f6ba60Sopenharmony_ci    if (time == noNameType) {
5606f6ba60Sopenharmony_ci        std::cout << "Startup error, unknown application or application not responding" << std::endl;
5706f6ba60Sopenharmony_ci    } else {
5806f6ba60Sopenharmony_ci        if (time != 0) {
5906f6ba60Sopenharmony_ci            stream << time;
6006f6ba60Sopenharmony_ci            result = "time:" + stream.str() + "ms";
6106f6ba60Sopenharmony_ci        }
6206f6ba60Sopenharmony_ci        std::cout << result << std::endl;
6306f6ba60Sopenharmony_ci    }
6406f6ba60Sopenharmony_ci    return result;
6506f6ba60Sopenharmony_ci}
6606f6ba60Sopenharmony_cistd::string ControlCallCmd::TimeDelay()
6706f6ba60Sopenharmony_ci{
6806f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseClickResponseTrace pcrt;
6906f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
7006f6ba60Sopenharmony_ci    std::string cmdResult;
7106f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
7206f6ba60Sopenharmony_ci    OHOS::SmartPerf::StallingRateTrace srt;
7306f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + std::string("sp_trace_") + "delay" + ".ftrace";
7406f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
7506f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "delay" + ".ftrace";
7606f6ba60Sopenharmony_ci    std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
7706f6ba60Sopenharmony_ci    std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysIdAndKill(); });
7806f6ba60Sopenharmony_ci    std::promise<std::string> promResponse;
7906f6ba60Sopenharmony_ci    std::promise<std::string> promComplete;
8006f6ba60Sopenharmony_ci    std::promise<std::string> promRadarFrame;
8106f6ba60Sopenharmony_ci    std::promise<std::string> promResponseMoved = std::move(promResponse);
8206f6ba60Sopenharmony_ci    std::promise<std::string> promCompleteMoved = std::move(promComplete);
8306f6ba60Sopenharmony_ci    std::promise<std::string> promRadarFrameMoved = std::move(promRadarFrame);
8406f6ba60Sopenharmony_ci    std::future<std::string> futureResponse = promResponseMoved.get_future();
8506f6ba60Sopenharmony_ci    std::thread([promiseResponse = std::move(promResponseMoved)]() mutable {
8606f6ba60Sopenharmony_ci        promiseResponse.set_value(SPUtils::GetRadarResponse());
8706f6ba60Sopenharmony_ci    }).detach();
8806f6ba60Sopenharmony_ci    std::future<std::string> futureComplete = promCompleteMoved.get_future();
8906f6ba60Sopenharmony_ci    std::thread([promiseComplete = std::move(promCompleteMoved)]() mutable {
9006f6ba60Sopenharmony_ci        promiseComplete.set_value(SPUtils::GetRadarComplete());
9106f6ba60Sopenharmony_ci    }).detach();
9206f6ba60Sopenharmony_ci    std::future<std::string> futureRadarFrame = promRadarFrameMoved.get_future();
9306f6ba60Sopenharmony_ci    std::thread([promiseRadarFrame = std::move(promRadarFrameMoved)]() mutable {
9406f6ba60Sopenharmony_ci        promiseRadarFrame.set_value(SPUtils::GetRadarFrame());
9506f6ba60Sopenharmony_ci    }).detach();
9606f6ba60Sopenharmony_ci    std::string responseStr = futureResponse.get();
9706f6ba60Sopenharmony_ci    std::string completeStr = futureComplete.get();
9806f6ba60Sopenharmony_ci    std::string radarFrameStr = futureRadarFrame.get();
9906f6ba60Sopenharmony_ci    thGetTrace.join();
10006f6ba60Sopenharmony_ci    thGetHisysId.join();
10106f6ba60Sopenharmony_ci    double strResponseTime = radar.ParseRadarResponse(responseStr);
10206f6ba60Sopenharmony_ci    stream << strResponseTime;
10306f6ba60Sopenharmony_ci    double strCompleteTime = radar.ParseRadarComplete(completeStr);
10406f6ba60Sopenharmony_ci    std::ostringstream streamComplete;
10506f6ba60Sopenharmony_ci    streamComplete << strCompleteTime;
10606f6ba60Sopenharmony_ci    std::string maxFrame = radar.ParseRadarMaxFrame(radarFrameStr);
10706f6ba60Sopenharmony_ci    std::string resultTime = "ResponseTime:" + stream.str() + "ms\n" + "CompleteTime:" + streamComplete.str() + "ms\n";
10806f6ba60Sopenharmony_ci    double rateResult = srt.StallingRateResult(traceName);
10906f6ba60Sopenharmony_ci    std::ostringstream ss;
11006f6ba60Sopenharmony_ci    ss << std::fixed << std::setprecision(two) << rateResult;
11106f6ba60Sopenharmony_ci    std::string ssResult = ss.str();
11206f6ba60Sopenharmony_ci    std::string hitchTimeRate = "HitchTimeRate:" + ssResult + "ms/s \n";
11306f6ba60Sopenharmony_ci    resultTime = resultTime + hitchTimeRate + maxFrame;
11406f6ba60Sopenharmony_ci    return resultTime;
11506f6ba60Sopenharmony_ci}
11606f6ba60Sopenharmony_cistd::string ControlCallCmd::SlideList()
11706f6ba60Sopenharmony_ci{
11806f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseClickResponseTrace pcrt;
11906f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
12006f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseSlideFpsTrace slideFpsTrace;
12106f6ba60Sopenharmony_ci    std::string cmdResult;
12206f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
12306f6ba60Sopenharmony_ci    OHOS::SmartPerf::StallingRateTrace srt;
12406f6ba60Sopenharmony_ci    std::string resultStream = "";
12506f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + std::string("sp_trace_") + "fps" + ".ftrace";
12606f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
12706f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "fps" + ".ftrace";
12806f6ba60Sopenharmony_ci    if (isOhTest) {
12906f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
13006f6ba60Sopenharmony_ci        thGetTrace.join();
13106f6ba60Sopenharmony_ci        time = pcrt.ParseResponseTrace(traceName);
13206f6ba60Sopenharmony_ci    } else {
13306f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
13406f6ba60Sopenharmony_ci        std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysIdAndKill(); });
13506f6ba60Sopenharmony_ci        std::promise<std::string> promResponse;
13606f6ba60Sopenharmony_ci        std::promise<std::string> promRadarFrame;
13706f6ba60Sopenharmony_ci        std::promise<std::string> promResponseMoved = std::move(promResponse);
13806f6ba60Sopenharmony_ci        std::promise<std::string> promRadarFrameMoved = std::move(promRadarFrame);
13906f6ba60Sopenharmony_ci        std::future<std::string> futureResponse = promResponseMoved.get_future();
14006f6ba60Sopenharmony_ci        std::thread([promiseResponse = std::move(promResponseMoved)]() mutable {
14106f6ba60Sopenharmony_ci            promiseResponse.set_value(SPUtils::GetRadarResponse());
14206f6ba60Sopenharmony_ci        }).detach();
14306f6ba60Sopenharmony_ci        std::future<std::string> futureRadarFrame = promRadarFrameMoved.get_future();
14406f6ba60Sopenharmony_ci        std::thread([promiseRadarFrame = std::move(promRadarFrameMoved)]() mutable {
14506f6ba60Sopenharmony_ci            promiseRadarFrame.set_value(SPUtils::GetRadarFrame());
14606f6ba60Sopenharmony_ci        }).detach();
14706f6ba60Sopenharmony_ci        std::string responseStr = futureResponse.get();
14806f6ba60Sopenharmony_ci        std::string radarFrameStr = futureRadarFrame.get();
14906f6ba60Sopenharmony_ci        thGetTrace.join();
15006f6ba60Sopenharmony_ci        thGetHisysId.join();
15106f6ba60Sopenharmony_ci        double responseTime = radar.ParseRadarResponse(responseStr);
15206f6ba60Sopenharmony_ci        stream << responseTime;
15306f6ba60Sopenharmony_ci        std::string maxFrame = radar.ParseRadarMaxFrame(radarFrameStr);
15406f6ba60Sopenharmony_ci        std::string responseSlide = "ResponseTime:" + stream.str() + "ms\n";
15506f6ba60Sopenharmony_ci        double sFps = slideFpsTrace.ParseSlideFpsTraceNoh(traceName);
15606f6ba60Sopenharmony_ci        std::ostringstream streamFps;
15706f6ba60Sopenharmony_ci        streamFps << sFps;
15806f6ba60Sopenharmony_ci        double stallingRateResult = srt.StallingRateResult(traceName);
15906f6ba60Sopenharmony_ci        std::ostringstream ss;
16006f6ba60Sopenharmony_ci        ss << std::fixed << std::setprecision(two) << stallingRateResult;
16106f6ba60Sopenharmony_ci        std::string ssResult = ss.str();
16206f6ba60Sopenharmony_ci        std::string hitchTimeRate = "HitchTimeRate:" + ssResult + "ms/s \n";
16306f6ba60Sopenharmony_ci        resultStream = "FPS:" + streamFps.str() + "fps\n" + responseSlide + hitchTimeRate + maxFrame;
16406f6ba60Sopenharmony_ci    }
16506f6ba60Sopenharmony_ci    return resultStream;
16606f6ba60Sopenharmony_ci}
16706f6ba60Sopenharmony_cistd::string ControlCallCmd::GetFrame()
16806f6ba60Sopenharmony_ci{
16906f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
17006f6ba60Sopenharmony_ci    std::string cmdResult;
17106f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
17206f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + std::string("sp_trace_") + "frame" + ".ftrace";
17306f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
17406f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "frame" + ".ftrace";
17506f6ba60Sopenharmony_ci    std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
17606f6ba60Sopenharmony_ci    std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysIdAndKill(); });
17706f6ba60Sopenharmony_ci    std::string str = SPUtils::GetRadarFrame();
17806f6ba60Sopenharmony_ci    thGetTrace.join();
17906f6ba60Sopenharmony_ci    thGetHisysId.join();
18006f6ba60Sopenharmony_ci    std::string reslut = radar.ParseRadarFrame(str);
18106f6ba60Sopenharmony_ci    return result;
18206f6ba60Sopenharmony_ci}
18306f6ba60Sopenharmony_cidouble ControlCallCmd::ResponseTime()
18406f6ba60Sopenharmony_ci{
18506f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseClickResponseTrace pcrt;
18606f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
18706f6ba60Sopenharmony_ci    std::string cmdResult;
18806f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
18906f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + "*" + ".ftrace";
19006f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
19106f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "response" + ".ftrace";
19206f6ba60Sopenharmony_ci    if (isOhTest) {
19306f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
19406f6ba60Sopenharmony_ci        thGetTrace.join();
19506f6ba60Sopenharmony_ci        time = pcrt.ParseResponseTrace(traceName);
19606f6ba60Sopenharmony_ci    } else {
19706f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
19806f6ba60Sopenharmony_ci        std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysId(); });
19906f6ba60Sopenharmony_ci        std::string str = SPUtils::GetRadarResponse();
20006f6ba60Sopenharmony_ci        thGetTrace.join();
20106f6ba60Sopenharmony_ci        thGetHisysId.join();
20206f6ba60Sopenharmony_ci        time = radar.ParseRadarResponse(str);
20306f6ba60Sopenharmony_ci    }
20406f6ba60Sopenharmony_ci    return time;
20506f6ba60Sopenharmony_ci}
20606f6ba60Sopenharmony_cidouble ControlCallCmd::CompleteTime()
20706f6ba60Sopenharmony_ci{
20806f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
20906f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseClickCompleteTrace pcct;
21006f6ba60Sopenharmony_ci    std::string cmdResult;
21106f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
21206f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + "*" + ".ftrace";
21306f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
21406f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "complete" + ".ftrace";
21506f6ba60Sopenharmony_ci    if (isOhTest) {
21606f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
21706f6ba60Sopenharmony_ci        thGetTrace.join();
21806f6ba60Sopenharmony_ci        time = pcct.ParseCompleteTrace(traceName);
21906f6ba60Sopenharmony_ci    } else {
22006f6ba60Sopenharmony_ci        std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
22106f6ba60Sopenharmony_ci        std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysId(); });
22206f6ba60Sopenharmony_ci        std::string str = SPUtils::GetRadarComplete();
22306f6ba60Sopenharmony_ci        thGetTrace.join();
22406f6ba60Sopenharmony_ci        thGetHisysId.join();
22506f6ba60Sopenharmony_ci        time = radar.ParseRadarComplete(str);
22606f6ba60Sopenharmony_ci    }
22706f6ba60Sopenharmony_ci    return time;
22806f6ba60Sopenharmony_ci}
22906f6ba60Sopenharmony_cistd::string ControlCallCmd::GetAppStartTime() const
23006f6ba60Sopenharmony_ci{
23106f6ba60Sopenharmony_ci    OHOS::SmartPerf::StartUpDelay sd;
23206f6ba60Sopenharmony_ci    std::string cmdResult;
23306f6ba60Sopenharmony_ci    OHOS::SmartPerf::ParseRadar radar;
23406f6ba60Sopenharmony_ci    OHOS::SmartPerf::StallingRateTrace srt;
23506f6ba60Sopenharmony_ci    std::string rmTrace = CMD_COMMAND_MAP.at(CmdCommand::RM_FILE) + std::string("sp_trace_") + "start" + ".ftrace";
23606f6ba60Sopenharmony_ci    SPUtils::LoadCmd(rmTrace, cmdResult);
23706f6ba60Sopenharmony_ci    std::string traceName = std::string("/data/local/tmp/") + std::string("sp_trace_") + "start" + ".ftrace";
23806f6ba60Sopenharmony_ci    std::thread thGetTrace = std::thread([&sd, traceName]() { sd.GetTrace(traceName); });
23906f6ba60Sopenharmony_ci    std::thread thGetHisysId = std::thread([&sd]() { sd.GetHisysIdAndKill(); });
24006f6ba60Sopenharmony_ci
24106f6ba60Sopenharmony_ci    std::promise<std::string> promRadar;
24206f6ba60Sopenharmony_ci    std::promise<std::string> promRadarFrame;
24306f6ba60Sopenharmony_ci    std::promise<std::string> promRadarMoved = std::move(promRadar);
24406f6ba60Sopenharmony_ci    std::promise<std::string> promRadarFrameMoved = std::move(promRadarFrame);
24506f6ba60Sopenharmony_ci    std::future<std::string> futureRadar = promRadarMoved.get_future();
24606f6ba60Sopenharmony_ci    std::thread([promiseRadar = std::move(promRadarMoved)]() mutable {
24706f6ba60Sopenharmony_ci        promiseRadar.set_value(SPUtils::GetRadar());
24806f6ba60Sopenharmony_ci    }).detach();
24906f6ba60Sopenharmony_ci    std::future<std::string> futureRadarFrame = promRadarFrameMoved.get_future();
25006f6ba60Sopenharmony_ci    std::thread([promiseRadarFrame = std::move(promRadarFrameMoved)]() mutable {
25106f6ba60Sopenharmony_ci        promiseRadarFrame.set_value(SPUtils::GetRadarFrame());
25206f6ba60Sopenharmony_ci    }).detach();
25306f6ba60Sopenharmony_ci    std::string radarStr = futureRadar.get();
25406f6ba60Sopenharmony_ci    std::string radarFrameStr = futureRadarFrame.get();
25506f6ba60Sopenharmony_ci    thGetTrace.join();
25606f6ba60Sopenharmony_ci    thGetHisysId.join();
25706f6ba60Sopenharmony_ci    std::string resultStream = radar.ParseRadarAppStrart(radarStr);
25806f6ba60Sopenharmony_ci    std::string resultStream2 = radar.ParseRadarMaxFrame(radarFrameStr);
25906f6ba60Sopenharmony_ci    double stallingRateResult2 = srt.StallingRateResult(traceName);
26006f6ba60Sopenharmony_ci    std::ostringstream ss;
26106f6ba60Sopenharmony_ci    int two = 2;
26206f6ba60Sopenharmony_ci    ss << std::fixed << std::setprecision(two) << stallingRateResult2;
26306f6ba60Sopenharmony_ci    std::string ssResult = ss.str();
26406f6ba60Sopenharmony_ci    std::string hitchTimeRate = "HitchTimeRate:" + ssResult + "ms/s \n";
26506f6ba60Sopenharmony_ci    resultStream = resultStream + hitchTimeRate + resultStream2;
26606f6ba60Sopenharmony_ci    return resultStream;
26706f6ba60Sopenharmony_ci}
26806f6ba60Sopenharmony_civoid ControlCallCmd::IsohTest(std::vector<std::string> v)
26906f6ba60Sopenharmony_ci{
27006f6ba60Sopenharmony_ci    if (v[ohType] == "ohtest") {
27106f6ba60Sopenharmony_ci        isOhTest = true;
27206f6ba60Sopenharmony_ci    }
27306f6ba60Sopenharmony_ci}
27406f6ba60Sopenharmony_ci}
27506f6ba60Sopenharmony_ci}
276