148f512ceSopenharmony_ci/*
248f512ceSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
348f512ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
448f512ceSopenharmony_ci * you may not use this file except in compliance with the License.
548f512ceSopenharmony_ci * You may obtain a copy of the License at
648f512ceSopenharmony_ci *
748f512ceSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
848f512ceSopenharmony_ci *
948f512ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1048f512ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1148f512ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1248f512ceSopenharmony_ci * See the License for the specific language governing permissions and
1348f512ceSopenharmony_ci * limitations under the License.
1448f512ceSopenharmony_ci */
1548f512ceSopenharmony_ci
1648f512ceSopenharmony_ci#include "hiperf_client_test.h"
1748f512ceSopenharmony_ci
1848f512ceSopenharmony_ci#include <algorithm>
1948f512ceSopenharmony_ci#include <chrono>
2048f512ceSopenharmony_ci#include <cinttypes>
2148f512ceSopenharmony_ci#include <thread>
2248f512ceSopenharmony_ci
2348f512ceSopenharmony_ci#include "test_utilities.h"
2448f512ceSopenharmony_ci#include "utilities.h"
2548f512ceSopenharmony_ci
2648f512ceSopenharmony_ciusing namespace testing::ext;
2748f512ceSopenharmony_ciusing namespace std;
2848f512ceSopenharmony_ciusing namespace OHOS::HiviewDFX;
2948f512ceSopenharmony_cinamespace OHOS {
3048f512ceSopenharmony_cinamespace Developtools {
3148f512ceSopenharmony_cinamespace HiPerf {
3248f512ceSopenharmony_ciclass HiperfClientTest : public testing::Test {
3348f512ceSopenharmony_cipublic:
3448f512ceSopenharmony_ci    static void SetUpTestCase(void);
3548f512ceSopenharmony_ci    static void TearDownTestCase(void);
3648f512ceSopenharmony_ci    void SetUp();
3748f512ceSopenharmony_ci    void TearDown();
3848f512ceSopenharmony_ci
3948f512ceSopenharmony_ci    static void TestCaseOption(const HiperfClient::RecordOption &opt);
4048f512ceSopenharmony_ci};
4148f512ceSopenharmony_ci
4248f512ceSopenharmony_civoid HiperfClientTest::SetUpTestCase() {}
4348f512ceSopenharmony_ci
4448f512ceSopenharmony_civoid HiperfClientTest::TearDownTestCase()
4548f512ceSopenharmony_ci{
4648f512ceSopenharmony_ci    DebugLogger::GetInstance()->Reset();
4748f512ceSopenharmony_ci}
4848f512ceSopenharmony_ci
4948f512ceSopenharmony_civoid HiperfClientTest::SetUp() {}
5048f512ceSopenharmony_ci
5148f512ceSopenharmony_civoid HiperfClientTest::TearDown()
5248f512ceSopenharmony_ci{
5348f512ceSopenharmony_ci}
5448f512ceSopenharmony_ci
5548f512ceSopenharmony_ci/**
5648f512ceSopenharmony_ci * @tc.name:
5748f512ceSopenharmony_ci * @tc.desc: record
5848f512ceSopenharmony_ci * @tc.type: FUNC
5948f512ceSopenharmony_ci */
6048f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, NoPara, TestSize.Level1)
6148f512ceSopenharmony_ci{
6248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
6348f512ceSopenharmony_ci    stdoutRecord.Start();
6448f512ceSopenharmony_ci
6548f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
6648f512ceSopenharmony_ci    myHiperf.SetDebugMode();
6748f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start());
6848f512ceSopenharmony_ci
6948f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Pause());
7048f512ceSopenharmony_ci    this_thread::sleep_for(1s);
7148f512ceSopenharmony_ci
7248f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Resume());
7348f512ceSopenharmony_ci    this_thread::sleep_for(1s);
7448f512ceSopenharmony_ci
7548f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
7648f512ceSopenharmony_ci
7748f512ceSopenharmony_ci    stdoutRecord.Stop();
7848f512ceSopenharmony_ci}
7948f512ceSopenharmony_ci
8048f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, OutDir, TestSize.Level1)
8148f512ceSopenharmony_ci{
8248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
8348f512ceSopenharmony_ci    stdoutRecord.Start();
8448f512ceSopenharmony_ci
8548f512ceSopenharmony_ci    HiperfClient::Client myHiperf("/data/local/tmp/");
8648f512ceSopenharmony_ci    ASSERT_EQ(myHiperf.GetOutputDir(), "/data/local/tmp/");
8748f512ceSopenharmony_ci    myHiperf.SetDebugMode();
8848f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start());
8948f512ceSopenharmony_ci
9048f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Pause());
9148f512ceSopenharmony_ci    this_thread::sleep_for(1s);
9248f512ceSopenharmony_ci
9348f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Resume());
9448f512ceSopenharmony_ci    this_thread::sleep_for(1s);
9548f512ceSopenharmony_ci
9648f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
9748f512ceSopenharmony_ci
9848f512ceSopenharmony_ci    stdoutRecord.Stop();
9948f512ceSopenharmony_ci}
10048f512ceSopenharmony_ci
10148f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, DebugMuchMode, TestSize.Level1)
10248f512ceSopenharmony_ci{
10348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
10448f512ceSopenharmony_ci    stdoutRecord.Start();
10548f512ceSopenharmony_ci
10648f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
10748f512ceSopenharmony_ci    myHiperf.SetDebugMuchMode();
10848f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start());
10948f512ceSopenharmony_ci
11048f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Pause());
11148f512ceSopenharmony_ci    this_thread::sleep_for(1s);
11248f512ceSopenharmony_ci
11348f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Resume());
11448f512ceSopenharmony_ci    this_thread::sleep_for(1s);
11548f512ceSopenharmony_ci
11648f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
11748f512ceSopenharmony_ci
11848f512ceSopenharmony_ci    stdoutRecord.Stop();
11948f512ceSopenharmony_ci}
12048f512ceSopenharmony_ci
12148f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, EnableHilog, TestSize.Level1)
12248f512ceSopenharmony_ci{
12348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
12448f512ceSopenharmony_ci    stdoutRecord.Start();
12548f512ceSopenharmony_ci
12648f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
12748f512ceSopenharmony_ci    myHiperf.SetDebugMode();
12848f512ceSopenharmony_ci    myHiperf.EnableHilog();
12948f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start());
13048f512ceSopenharmony_ci
13148f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Pause());
13248f512ceSopenharmony_ci    this_thread::sleep_for(1s);
13348f512ceSopenharmony_ci
13448f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Resume());
13548f512ceSopenharmony_ci    this_thread::sleep_for(1s);
13648f512ceSopenharmony_ci
13748f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
13848f512ceSopenharmony_ci
13948f512ceSopenharmony_ci    stdoutRecord.Stop();
14048f512ceSopenharmony_ci}
14148f512ceSopenharmony_ci
14248f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, Prepare, TestSize.Level1)
14348f512ceSopenharmony_ci{
14448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
14548f512ceSopenharmony_ci    stdoutRecord.Start();
14648f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
14748f512ceSopenharmony_ci    opt.SetTargetSystemWide(true);
14848f512ceSopenharmony_ci
14948f512ceSopenharmony_ci    HiperfClient::Client myHiperf("/data/local/tmp/");
15048f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.PrePare(opt));
15148f512ceSopenharmony_ci    this_thread::sleep_for(1s);
15248f512ceSopenharmony_ci
15348f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.StartRun());
15448f512ceSopenharmony_ci    this_thread::sleep_for(1s);
15548f512ceSopenharmony_ci
15648f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
15748f512ceSopenharmony_ci
15848f512ceSopenharmony_ci    stdoutRecord.Stop();
15948f512ceSopenharmony_ci}
16048f512ceSopenharmony_ci
16148f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, GetCommandPath, TestSize.Level1)
16248f512ceSopenharmony_ci{
16348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
16448f512ceSopenharmony_ci    stdoutRecord.Start();
16548f512ceSopenharmony_ci
16648f512ceSopenharmony_ci    HiperfClient::Client myHiperf("/data/local/tmp/");
16748f512ceSopenharmony_ci    ASSERT_EQ(myHiperf.GetCommandPath().empty(), false);
16848f512ceSopenharmony_ci
16948f512ceSopenharmony_ci    stdoutRecord.Stop();
17048f512ceSopenharmony_ci}
17148f512ceSopenharmony_ci
17248f512ceSopenharmony_civoid HiperfClientTest::TestCaseOption(const HiperfClient::RecordOption &opt)
17348f512ceSopenharmony_ci{
17448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
17548f512ceSopenharmony_ci    stdoutRecord.Start();
17648f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
17748f512ceSopenharmony_ci    myHiperf.SetDebugMode();
17848f512ceSopenharmony_ci
17948f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.IsReady());
18048f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start(opt));
18148f512ceSopenharmony_ci
18248f512ceSopenharmony_ci    bool retPause = true;
18348f512ceSopenharmony_ci    bool retResume = true;
18448f512ceSopenharmony_ci    bool retStop = true;
18548f512ceSopenharmony_ci    if (!myHiperf.Pause()) {
18648f512ceSopenharmony_ci        retPause = false;
18748f512ceSopenharmony_ci    }
18848f512ceSopenharmony_ci    this_thread::sleep_for(1s);
18948f512ceSopenharmony_ci
19048f512ceSopenharmony_ci    if (!myHiperf.Resume()) {
19148f512ceSopenharmony_ci        retResume = false;
19248f512ceSopenharmony_ci    }
19348f512ceSopenharmony_ci    this_thread::sleep_for(1s);
19448f512ceSopenharmony_ci
19548f512ceSopenharmony_ci    if (!myHiperf.Stop()) {
19648f512ceSopenharmony_ci        retStop = false;
19748f512ceSopenharmony_ci    }
19848f512ceSopenharmony_ci
19948f512ceSopenharmony_ci    ASSERT_TRUE(retPause);
20048f512ceSopenharmony_ci    ASSERT_TRUE(retResume);
20148f512ceSopenharmony_ci    ASSERT_TRUE(retStop);
20248f512ceSopenharmony_ci
20348f512ceSopenharmony_ci    stdoutRecord.Stop();
20448f512ceSopenharmony_ci}
20548f512ceSopenharmony_ci
20648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetTargetSystemWide, TestSize.Level1)
20748f512ceSopenharmony_ci{
20848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
20948f512ceSopenharmony_ci    opt.SetTargetSystemWide(true);
21048f512ceSopenharmony_ci
21148f512ceSopenharmony_ci    TestCaseOption(opt);
21248f512ceSopenharmony_ci}
21348f512ceSopenharmony_ci
21448f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetCompressData, TestSize.Level1)
21548f512ceSopenharmony_ci{
21648f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
21748f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
21848f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
21948f512ceSopenharmony_ci    opt.SetCompressData(true);
22048f512ceSopenharmony_ci    TestCaseOption(opt);
22148f512ceSopenharmony_ci}
22248f512ceSopenharmony_ci
22348f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSelectCpus, TestSize.Level1)
22448f512ceSopenharmony_ci{
22548f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
22648f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
22748f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
22848f512ceSopenharmony_ci    vector<int> cpus = {0, 1};
22948f512ceSopenharmony_ci    opt.SetSelectCpus(cpus);
23048f512ceSopenharmony_ci
23148f512ceSopenharmony_ci    TestCaseOption(opt);
23248f512ceSopenharmony_ci}
23348f512ceSopenharmony_ci
23448f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetTimeStopSec, TestSize.Level1)
23548f512ceSopenharmony_ci{
23648f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
23748f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
23848f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
23948f512ceSopenharmony_ci    opt.SetTimeStopSec(40);
24048f512ceSopenharmony_ci
24148f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
24248f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.IsReady());
24348f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start(opt));
24448f512ceSopenharmony_ci}
24548f512ceSopenharmony_ci
24648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetFrequency, TestSize.Level1)
24748f512ceSopenharmony_ci{
24848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
24948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
25048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
25148f512ceSopenharmony_ci    opt.SetFrequency(500);
25248f512ceSopenharmony_ci
25348f512ceSopenharmony_ci    TestCaseOption(opt);
25448f512ceSopenharmony_ci}
25548f512ceSopenharmony_ci
25648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetPeriod, TestSize.Level1)
25748f512ceSopenharmony_ci{
25848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
25948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
26048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
26148f512ceSopenharmony_ci    opt.SetPeriod(3);
26248f512ceSopenharmony_ci
26348f512ceSopenharmony_ci    TestCaseOption(opt);
26448f512ceSopenharmony_ci}
26548f512ceSopenharmony_ci
26648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSelectEvents, TestSize.Level1)
26748f512ceSopenharmony_ci{
26848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
26948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
27048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
27148f512ceSopenharmony_ci    vector<string> selectEvents = {"hw-cpu-cycles:k"};
27248f512ceSopenharmony_ci    opt.SetSelectEvents(selectEvents);
27348f512ceSopenharmony_ci
27448f512ceSopenharmony_ci    TestCaseOption(opt);
27548f512ceSopenharmony_ci}
27648f512ceSopenharmony_ci
27748f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSelectGroups, TestSize.Level1)
27848f512ceSopenharmony_ci{
27948f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
28048f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
28148f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
28248f512ceSopenharmony_ci    vector<string> selectEvents = {"hw-cpu-cycles:u"};
28348f512ceSopenharmony_ci    opt.SetSelectGroups(selectEvents);
28448f512ceSopenharmony_ci    TestCaseOption(opt);
28548f512ceSopenharmony_ci}
28648f512ceSopenharmony_ci
28748f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetNoInherit, TestSize.Level1)
28848f512ceSopenharmony_ci{
28948f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
29048f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
29148f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
29248f512ceSopenharmony_ci    opt.SetNoInherit(true);
29348f512ceSopenharmony_ci
29448f512ceSopenharmony_ci    TestCaseOption(opt);
29548f512ceSopenharmony_ci}
29648f512ceSopenharmony_ci
29748f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSelectPids, TestSize.Level1)
29848f512ceSopenharmony_ci{
29948f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
30048f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
30148f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
30248f512ceSopenharmony_ci
30348f512ceSopenharmony_ci    TestCaseOption(opt);
30448f512ceSopenharmony_ci}
30548f512ceSopenharmony_ci
30648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetCallStackSamplingConfigs, TestSize.Level1)
30748f512ceSopenharmony_ci{
30848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
30948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
31048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
31148f512ceSopenharmony_ci    opt.SetCallStackSamplingConfigs(1);
31248f512ceSopenharmony_ci
31348f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
31448f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.IsReady());
31548f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start(opt));
31648f512ceSopenharmony_ci}
31748f512ceSopenharmony_ci
31848f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSelectTids, TestSize.Level1)
31948f512ceSopenharmony_ci{
32048f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
32148f512ceSopenharmony_ci    vector<pid_t> selectTids = {gettid()};
32248f512ceSopenharmony_ci    opt.SetSelectTids(selectTids);
32348f512ceSopenharmony_ci
32448f512ceSopenharmony_ci    TestCaseOption(opt);
32548f512ceSopenharmony_ci}
32648f512ceSopenharmony_ci
32748f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetExcludePerf, TestSize.Level1)
32848f512ceSopenharmony_ci{
32948f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
33048f512ceSopenharmony_ci    opt.SetTargetSystemWide(true);
33148f512ceSopenharmony_ci    opt.SetExcludePerf(true);
33248f512ceSopenharmony_ci
33348f512ceSopenharmony_ci    TestCaseOption(opt);
33448f512ceSopenharmony_ci}
33548f512ceSopenharmony_ci
33648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetCpuPercent, TestSize.Level1)
33748f512ceSopenharmony_ci{
33848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
33948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
34048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
34148f512ceSopenharmony_ci    opt.SetCpuPercent(50);
34248f512ceSopenharmony_ci
34348f512ceSopenharmony_ci    TestCaseOption(opt);
34448f512ceSopenharmony_ci}
34548f512ceSopenharmony_ci
34648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetOffCPU, TestSize.Level1)
34748f512ceSopenharmony_ci{
34848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
34948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
35048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
35148f512ceSopenharmony_ci    opt.SetOffCPU(true);
35248f512ceSopenharmony_ci
35348f512ceSopenharmony_ci    TestCaseOption(opt);
35448f512ceSopenharmony_ci}
35548f512ceSopenharmony_ci
35648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetCallStack, TestSize.Level1)
35748f512ceSopenharmony_ci{
35848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
35948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
36048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
36148f512ceSopenharmony_ci    opt.SetCallGraph("fp");
36248f512ceSopenharmony_ci
36348f512ceSopenharmony_ci    TestCaseOption(opt);
36448f512ceSopenharmony_ci}
36548f512ceSopenharmony_ci
36648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetDelayUnwind, TestSize.Level1)
36748f512ceSopenharmony_ci{
36848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
36948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
37048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
37148f512ceSopenharmony_ci    opt.SetDelayUnwind(true);
37248f512ceSopenharmony_ci
37348f512ceSopenharmony_ci    TestCaseOption(opt);
37448f512ceSopenharmony_ci}
37548f512ceSopenharmony_ci
37648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetDisableUnwind, TestSize.Level1)
37748f512ceSopenharmony_ci{
37848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
37948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
38048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
38148f512ceSopenharmony_ci    opt.SetDisableUnwind(true);
38248f512ceSopenharmony_ci
38348f512ceSopenharmony_ci    TestCaseOption(opt);
38448f512ceSopenharmony_ci}
38548f512ceSopenharmony_ci
38648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetDisableCallstackMerge, TestSize.Level1)
38748f512ceSopenharmony_ci{
38848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
38948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
39048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
39148f512ceSopenharmony_ci    opt.SetDisableCallstackMerge(true);
39248f512ceSopenharmony_ci
39348f512ceSopenharmony_ci    TestCaseOption(opt);
39448f512ceSopenharmony_ci}
39548f512ceSopenharmony_ci
39648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetOutputFilename, TestSize.Level1)
39748f512ceSopenharmony_ci{
39848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
39948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
40048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
40148f512ceSopenharmony_ci    opt.SetOutputFilename("perf.data.ut");
40248f512ceSopenharmony_ci
40348f512ceSopenharmony_ci    TestCaseOption(opt);
40448f512ceSopenharmony_ci}
40548f512ceSopenharmony_ci
40648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetSymbolDir, TestSize.Level1)
40748f512ceSopenharmony_ci{
40848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
40948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
41048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
41148f512ceSopenharmony_ci    opt.SetSymbolDir("/data/local/tmp/");
41248f512ceSopenharmony_ci
41348f512ceSopenharmony_ci    TestCaseOption(opt);
41448f512ceSopenharmony_ci}
41548f512ceSopenharmony_ci
41648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetDataLimit, TestSize.Level1)
41748f512ceSopenharmony_ci{
41848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
41948f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
42048f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
42148f512ceSopenharmony_ci    opt.SetDataLimit("100M");
42248f512ceSopenharmony_ci
42348f512ceSopenharmony_ci    TestCaseOption(opt);
42448f512ceSopenharmony_ci}
42548f512ceSopenharmony_ci
42648f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetAppPackage, TestSize.Level1)
42748f512ceSopenharmony_ci{
42848f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
42948f512ceSopenharmony_ci    std::string testProcesses = "com.ohos.sceneboard";
43048f512ceSopenharmony_ci    if (!CheckTestApp(testProcesses)) {
43148f512ceSopenharmony_ci        testProcesses = "com.ohos.launcher";
43248f512ceSopenharmony_ci    }
43348f512ceSopenharmony_ci    opt.SetAppPackage(testProcesses);
43448f512ceSopenharmony_ci
43548f512ceSopenharmony_ci    TestCaseOption(opt);
43648f512ceSopenharmony_ci}
43748f512ceSopenharmony_ci
43848f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetClockId, TestSize.Level1)
43948f512ceSopenharmony_ci{
44048f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
44148f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
44248f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
44348f512ceSopenharmony_ci    opt.SetClockId("monotonic");
44448f512ceSopenharmony_ci
44548f512ceSopenharmony_ci    TestCaseOption(opt);
44648f512ceSopenharmony_ci}
44748f512ceSopenharmony_ci
44848f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetMmapPages, TestSize.Level1)
44948f512ceSopenharmony_ci{
45048f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
45148f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
45248f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
45348f512ceSopenharmony_ci    opt.SetMmapPages(64);
45448f512ceSopenharmony_ci
45548f512ceSopenharmony_ci    TestCaseOption(opt);
45648f512ceSopenharmony_ci}
45748f512ceSopenharmony_ci
45848f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetReport, TestSize.Level1)
45948f512ceSopenharmony_ci{
46048f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
46148f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
46248f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
46348f512ceSopenharmony_ci    opt.SetReport(true);
46448f512ceSopenharmony_ci
46548f512ceSopenharmony_ci    TestCaseOption(opt);
46648f512ceSopenharmony_ci}
46748f512ceSopenharmony_ci
46848f512ceSopenharmony_ciHWTEST_F(HiperfClientTest, SetVecBranchSampleTypes, TestSize.Level1)
46948f512ceSopenharmony_ci{
47048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
47148f512ceSopenharmony_ci    stdoutRecord.Start();
47248f512ceSopenharmony_ci
47348f512ceSopenharmony_ci    HiperfClient::RecordOption opt;
47448f512ceSopenharmony_ci    vector<pid_t> selectPids = {getpid()};
47548f512ceSopenharmony_ci    opt.SetSelectPids(selectPids);
47648f512ceSopenharmony_ci    std::vector<std::string> vecBranchSampleTypes = {"any", "any_call", "any_ret", "ind_call", "u", "k"};
47748f512ceSopenharmony_ci    opt.SetVecBranchSampleTypes(vecBranchSampleTypes);
47848f512ceSopenharmony_ci    HiperfClient::Client myHiperf;
47948f512ceSopenharmony_ci    myHiperf.SetDebugMode();
48048f512ceSopenharmony_ci
48148f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.IsReady());
48248f512ceSopenharmony_ci#ifdef is_ohos
48348f512ceSopenharmony_ci    ASSERT_EQ(myHiperf.Start(opt), false);
48448f512ceSopenharmony_ci#else
48548f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Start(opt));
48648f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Pause());
48748f512ceSopenharmony_ci    this_thread::sleep_for(1s);
48848f512ceSopenharmony_ci
48948f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Resume());
49048f512ceSopenharmony_ci    this_thread::sleep_for(1s);
49148f512ceSopenharmony_ci
49248f512ceSopenharmony_ci    ASSERT_TRUE(myHiperf.Stop());
49348f512ceSopenharmony_ci#endif
49448f512ceSopenharmony_ci    stdoutRecord.Stop();
49548f512ceSopenharmony_ci}
49648f512ceSopenharmony_ci} // namespace HiPerf
49748f512ceSopenharmony_ci} // namespace Developtools
49848f512ceSopenharmony_ci} // namespace OHOS
499