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