From 7d99db9a49b86da41ea6a8b87a711ff12af048cf Mon Sep 17 00:00:00 2001 From: leiguangyu Date: Sat, 5 Jul 2025 16:18:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Idfc3fd4f5edb277c6bd985e4b396931f08fead8f Signed-off-by: leiguangyu --- include/utilities.h | 1 + src/subcommand_list.cpp | 6 +- src/subcommand_record.cpp | 8 +-- src/utilities.cpp | 12 ++++ test/BUILD.gn | 9 +-- .../common/native/hiperf_local_test.cpp | 71 +++++++++---------- .../common/native/subcommand_record_test.cpp | 17 +---- 7 files changed, 58 insertions(+), 66 deletions(-) diff --git a/include/utilities.h b/include/utilities.h index d4b14a3..8dca5e7 100644 --- a/include/utilities.h +++ b/include/utilities.h @@ -334,6 +334,7 @@ float Percentage(const T &a, const T &b) bool IsRoot(); bool IsBeta(); +bool IsHM(); bool IsAllowProfilingUid(); bool IsHiviewCall(); bool PowerOfTwo(uint64_t n); diff --git a/src/subcommand_list.cpp b/src/subcommand_list.cpp index afb5c44..20bc012 100644 --- a/src/subcommand_list.cpp +++ b/src/subcommand_list.cpp @@ -69,11 +69,7 @@ void SubCommandList::RegisterSubCommandList() void SubCommandList::SetHM() { - utsname unameBuf; - if ((uname(&unameBuf)) == 0) { - std::string osrelease = unameBuf.release; - isHM_ = osrelease.find(HMKERNEL) != std::string::npos; - } + isHM_ = IsHM(); perfEvents_.SetHM(isHM_); HLOGD("Set isHM_: %d", isHM_); } diff --git a/src/subcommand_record.cpp b/src/subcommand_record.cpp index f9aab82..623d63d 100644 --- a/src/subcommand_record.cpp +++ b/src/subcommand_record.cpp @@ -1608,7 +1608,7 @@ HiperfError SubCommandRecord::OnSubCommand(std::vector& args) HIPERF_HILOGI(MODULE_DEFAULT, "[OnSubCommand] App restart success"); } } - + if (!CheckTargetPids()) { HIPERF_HILOGE(MODULE_DEFAULT, "[OnSubCommand] CheckTargetPids failed"); if (controlCmd_ == CONTROL_CMD_PREPARE) { @@ -2341,11 +2341,7 @@ bool SubCommandRecord::RegisterSubCommandRecord(void) void SubCommandRecord::SetHM() { - utsname unameBuf; - if ((uname(&unameBuf)) == 0) { - std::string osrelease = unameBuf.release; - isHM_ = osrelease.find(HMKERNEL) != std::string::npos; - } + isHM_ = IsHM(); virtualRuntime_.SetHM(isHM_); perfEvents_.SetHM(isHM_); HLOGD("Set isHM_: %d", isHM_); diff --git a/src/utilities.cpp b/src/utilities.cpp index bf6c971..696b783 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -15,6 +15,7 @@ #include "utilities.h" +#include #include #include #if defined(CONFIG_HAS_SYSPARA) && defined(is_ohos) && is_ohos @@ -833,6 +834,17 @@ bool IsBeta() return false; } +bool IsHM() +{ + utsname unameBuf; + bool isHM = false; + if ((uname(&unameBuf)) == 0) { + std::string osrelease = unameBuf.release; + isHM = osrelease.find(HMKERNEL) != std::string::npos; + } + return isHM; +} + bool IsAllowProfilingUid() { #if (defined(is_linux) && is_linux) || (defined(is_ohos) && is_ohos) diff --git a/test/BUILD.gn b/test/BUILD.gn index 203ae37..aabe9d0 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -99,7 +99,10 @@ ohos_unittest("hiperf_unittest") { configs = [ ":hiperf_test_config" ] module_out_path = module_output_path resource_config_file = "unittest/resource/ohos_test.xml" - deps = [ "${hiperf_path}/interfaces/innerkits/native/hiperf_client:hiperf_client_static" ] + deps = [ + "${hiperf_path}/interfaces/innerkits/native/hiperf_client:hiperf_client_static", + "${hiperf_path}/interfaces/innerkits/native/hiperf_local:hiperf_local", + ] use_exceptions = true public_configs = [ "${hiperf_path}/:hiperf_inner_config" ] @@ -120,12 +123,10 @@ ohos_unittest("hiperf_unittest") { "cJSON:cjson", "c_utils:utils", "config_policy:configpolicy_util", - "faultloggerd:libstack_printer", - "faultloggerd:libunwinder", + "faultloggerd:libdfx_dumpcatcher", "faultloggerd:libunwinder", "googletest:gmock", "hilog:libhilog", - "hiperf:hiperf_local", "hisysevent:libhisysevent", "hisysevent:libhisyseventmanager", "ipc:ipc_single", diff --git a/test/unittest/common/native/hiperf_local_test.cpp b/test/unittest/common/native/hiperf_local_test.cpp index 8d65646..d6eca5a 100644 --- a/test/unittest/common/native/hiperf_local_test.cpp +++ b/test/unittest/common/native/hiperf_local_test.cpp @@ -15,7 +15,6 @@ #include "hiperf_local_test.h" -#include #include "test_utilities.h" #include "utilities.h" @@ -46,57 +45,57 @@ void HiperfLocalTest::TearDown() HWTEST_F(HiperfLocalTest, RecordWithInvalidTid, TestSize.Level2) { - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({}, 100, 5000, false), -1); - std::string sampleStack; - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); - ASSERT_TRUE(sampleStack.size() == 0); - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + if (IsHM()) { + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({}, 100, 5000, false), -1); + std::string sampleStack; + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); + ASSERT_TRUE(sampleStack.size() == 0); + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + } } HWTEST_F(HiperfLocalTest, RecordWithInvalidFreq1, TestSize.Level2) { - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 2000, 5000, false), -1); - std::string sampleStack; - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); - ASSERT_TRUE(sampleStack.size() == 0); - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + if (IsHM()) { + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 2000, 5000, false), -1); + std::string sampleStack; + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); + ASSERT_TRUE(sampleStack.size() == 0); + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + } } HWTEST_F(HiperfLocalTest, RecordWithInvalidFreq2, TestSize.Level2) { - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, -1, 5000, false), -1); - std::string sampleStack; - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); - ASSERT_TRUE(sampleStack.size() == 0); - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + if (IsHM()) { + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, -1, 5000, false), -1); + std::string sampleStack; + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); + ASSERT_TRUE(sampleStack.size() == 0); + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + } } HWTEST_F(HiperfLocalTest, RecordWithInvalidTime1, TestSize.Level2) { - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, 20000, false), -1); - std::string sampleStack; - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); - ASSERT_TRUE(sampleStack.size() == 0); - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + if (IsHM()) { + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, 20000, false), -1); + std::string sampleStack; + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); + ASSERT_TRUE(sampleStack.size() == 0); + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + } } HWTEST_F(HiperfLocalTest, RecordWithInvalidTime2, TestSize.Level2) { - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, -1, false), -1); - std::string sampleStack; - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); - ASSERT_TRUE(sampleStack.size() == 0); - - EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + if (IsHM()) { + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, -1, false), -1); + std::string sampleStack; + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1); + ASSERT_TRUE(sampleStack.size() == 0); + EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0); + } } } // namespace HiPerf } // namespace Developtools diff --git a/test/unittest/common/native/subcommand_record_test.cpp b/test/unittest/common/native/subcommand_record_test.cpp index 8fc27f0..8d54a8b 100644 --- a/test/unittest/common/native/subcommand_record_test.cpp +++ b/test/unittest/common/native/subcommand_record_test.cpp @@ -519,13 +519,7 @@ HWTEST_F(SubCommandRecordTest, PeriodAndFrequncyConflict, TestSize.Level2) void SubCommandRecordTest::TestEvents(std::string &opt, std::string &uk, bool isFork) { PerfEvents perfEvents; - utsname unameBuf; - bool isHM = false; - if ((uname(&unameBuf)) == 0) { - std::string osrelease = unameBuf.release; - isHM = osrelease.find(HMKERNEL) != std::string::npos; - } - perfEvents.SetHM(isHM); + perfEvents.SetHM(IsHM()); for (auto type : TYPE_CONFIGS) { auto configs = perfEvents.GetSupportEvents(type.first); if (configs.empty()) { @@ -2112,14 +2106,7 @@ HWTEST_F(SubCommandRecordTest, CheckThreadName, TestSize.Level1) HWTEST_F(SubCommandRecordTest, CheckDevhostMapOffset, TestSize.Level1) { - utsname unameBuf; - bool isHM = true; - if ((uname(&unameBuf)) == 0) { - std::string osrelease = unameBuf.release; - std::string sysname = unameBuf.sysname; - isHM = osrelease.find(HMKERNEL) != std::string::npos; - } - if (isHM) { + if (IsHM()) { bool checkRet = false; SubCommandRecord cmd; cmd.SetHM(); -- Gitee