diff --git a/include/utilities.h b/include/utilities.h index b5a810e689a6aaeb40c81d5ea7100a52c6245dd3..8466a0ae26a480dc161ae979bc82ce5902f1b223 100644 --- a/include/utilities.h +++ b/include/utilities.h @@ -338,6 +338,7 @@ bool IsStringToIntSuccess(const std::string &str, int &num); bool IsDirectoryExists(const std::string& fileName); bool CreateDirectory(const std::string& path, mode_t mode); bool IsValidOutPath(const std::string& path); +void AgeHiperflogFiles(); const std::string HMKERNEL = "HongMeng"; diff --git a/src/subcommand_dump.cpp b/src/subcommand_dump.cpp index 2b770038e7cdfb0b7b43d17499d7ea504324fbb8..f86fdc876ca4a19c2aa00113031746b3446a45e5 100644 --- a/src/subcommand_dump.cpp +++ b/src/subcommand_dump.cpp @@ -207,7 +207,7 @@ HiperfError SubCommandDump::OnSubCommand(std::vector& args) if (dumpFeatures_ || dumpAll_) { DumpFeaturePortion(indent_); } - + AgeHiperflogFiles(); return HiperfError::NO_ERR; } diff --git a/src/subcommand_record.cpp b/src/subcommand_record.cpp index 8f922fde869e103d3f0b3505573c3e7c52559ce9..f4992cb82e3b70ba05f072e329cca128e5fade04 100644 --- a/src/subcommand_record.cpp +++ b/src/subcommand_record.cpp @@ -1535,6 +1535,7 @@ HiperfError SubCommandRecord::OnSubCommand(std::vector& args) OnlineReportData(); CloseClientThread(); RemoveVdsoTmpFile(); + AgeHiperflogFiles(); HIPERF_HILOGI(MODULE_DEFAULT, "SubCommandRecord finish"); return HiperfError::NO_ERR; } diff --git a/src/subcommand_report.cpp b/src/subcommand_report.cpp index ed5984e05b591eb74f0bdad7b3815caf0525e480..325c872cb5d198e0dc8e59061890839bac3c3eed 100644 --- a/src/subcommand_report.cpp +++ b/src/subcommand_report.cpp @@ -618,6 +618,7 @@ HiperfError SubCommandReport::OnSubCommand(std::vector& args) #endif printf("report done\n"); + AgeHiperflogFiles(); return HiperfError::NO_ERR; } diff --git a/src/utilities.cpp b/src/utilities.cpp index 99aad1df4e6ea5d14b47e46ab92350dec94a24c3..defbe7ec01b852f966d189a16c2c51087c091a04 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -24,6 +24,7 @@ #include #endif +#include "directory_ex.h" #include "hiperf_hilog.h" #include "ipc_utilities.h" @@ -923,14 +924,36 @@ bool CreateDirectory(const std::string& path, mode_t mode) bool IsValidOutPath(const std::string& path) { - std::vector fineName = {"/data/log/hiperflog/", "data/log/hiperflog/"}; - for (auto name : fineName) { + std::vector fileName = {"/data/log/hiperflog/", "data/log/hiperflog/"}; + for (auto name : fileName) { if (StringStartsWith(path, name)) { return false; } } return true; } + +void AgeHiperflogFiles() +{ +#if defined(is_ohos) && is_ohos + std::vector allFiles; + OHOS::GetDirFiles("/data/log/hiperflog/", allFiles); + std::set fileNames = {"/data/log/hiperflog/[shmm]", "/data/log/hiperflog/[vdso]", + "/data/log/hiperflog/.hiperf_record_control_c2s", + "/data/log/hiperflog/.hiperf_record_control_s2c"}; + for (std::string file : allFiles) { + if (fileNames.count(file)) { + HLOGD("the file is %s,not need to delete", file.c_str()); + continue; + } + if (!OHOS::RemoveFile(file)) { + HIPERF_HILOGI(MODULE_DEFAULT, "remove hiperflog file : %{public}s failed", file.c_str()); + continue; + } + HIPERF_HILOGI(MODULE_DEFAULT, "remove hiperflog file : %{public}s", file.c_str()); + } +#endif +} } // namespace HiPerf } // namespace Developtools } // namespace OHOS diff --git a/test/unittest/common/native/utilities_test.cpp b/test/unittest/common/native/utilities_test.cpp index a204fef19f282e802b1121e80793aacbeb865598..f0dc1a5d6afaf3fd6ad25704bf5d4f4df7978a77 100644 --- a/test/unittest/common/native/utilities_test.cpp +++ b/test/unittest/common/native/utilities_test.cpp @@ -872,7 +872,7 @@ HWTEST_F(UtilitiesTest, IsDirectoryExists, TestSize.Level1) HWTEST_F(UtilitiesTest, CreateDirectory, TestSize.Level1) { std::string file = "/data/local/tmp/hiperf_test"; - EXPECT_EQ(CreateDirectory(file, HIPERF_FILE_PERM_770), true); + EXPECT_TRUE(CreateDirectory(file, HIPERF_FILE_PERM_770)); rmdir(file.c_str()); } @@ -884,7 +884,7 @@ HWTEST_F(UtilitiesTest, CreateDirectory, TestSize.Level1) HWTEST_F(UtilitiesTest, IsValidOutPath, TestSize.Level1) { std::string file = "/data/local/tmp/perf.data"; - EXPECT_EQ(IsValidOutPath(file), true); + EXPECT_TRUE(IsValidOutPath(file)); } /** @@ -895,7 +895,7 @@ HWTEST_F(UtilitiesTest, IsValidOutPath, TestSize.Level1) HWTEST_F(UtilitiesTest, IsValidOutPathErr, TestSize.Level2) { std::string file = "/data/log/hiperflog/perf.data"; - EXPECT_EQ(IsValidOutPath(file), false); + EXPECT_FALSE(IsValidOutPath(file)); } } // namespace HiPerf } // namespace Developtools