diff --git a/bundle.json b/bundle.json index a6d9c33f1c3bdc4d04017163d1cb0533944af2c4..662849e8b6d8c38854dc3ea3b2a2a8d704253bef 100644 --- a/bundle.json +++ b/bundle.json @@ -35,6 +35,7 @@ "hitrace", "hilog", "hisysevent", + "hiview", "ipc", "init", "json", diff --git a/services/backup.cfg b/services/backup.cfg index 4c96571a37d175924f65a23ba4f728e6a0bd85e4..f35b49877594688bdaa302220b6f01307421ca8d 100644 --- a/services/backup.cfg +++ b/services/backup.cfg @@ -13,7 +13,8 @@ "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED", "ohos.permission.ACCESS_EXT_SYSTEM_ABILITY", "ohos.permission.CONNECT_BACKUP_EXTENSION", - "ohos.permission.READ_MEDIA" + "ohos.permission.READ_MEDIA", + "ohos.permission.READ_HIVIEW_SYSTEM" ], "permission_acls" : ["ohos.permission.ACCESS_EXT_SYSTEM_ABILITY"] } diff --git a/services/backup_sa/BUILD.gn b/services/backup_sa/BUILD.gn index 4f0cab5c413c9bc394c0ebd2e2d7a733ecf8199c..21ef49e04ef9a49e2546499054e49bf083fca55d 100644 --- a/services/backup_sa/BUILD.gn +++ b/services/backup_sa/BUILD.gn @@ -211,7 +211,9 @@ ohos_shared_library("backup_sa") { "common_event_service:cesfwk_innerkits", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index 8bb77e1ad7bc90d84418f36f7841c4515fb328e1..0a57cb573981f5a11ee9e4bb9dd23ca6eb7c4b7a 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -33,6 +33,7 @@ #include "svc_session_manager.h" #include "system_ability.h" #include "thread_pool.h" +#include "trace_collector_client.h" namespace OHOS::FileManagement::Backup { struct ExtensionMutexInfo { @@ -720,6 +721,7 @@ private: const vector &bundleNames, std::string &oldBackupVersion); void AppStatReportErr(const string &bundleName, const string &func, RadarError err); void SaStatReport(const string &bundleName, const string &func, RadarError err); + void DumpHitrace(); void TotalStart() { if (totalStatistic_ != nullptr) { @@ -789,6 +791,8 @@ private: std::shared_mutex statMapMutex_; std::map> saStatisticMap_; std::map> backupExtOnReleaseMap_; + std::shared_mutex traceMutex_; + std::shared_ptr traceCollector_ = nullptr; public: std::map> backupExtMutexMap_; std::map failedBundles_; diff --git a/services/backup_sa/src/module_ipc/sub_service.cpp b/services/backup_sa/src/module_ipc/sub_service.cpp index 7c83fd08f98e657d274e451d35012217fcf85103..1aade6aac346bc4e29b3addc5c6fa6e284a88b73 100644 --- a/services/backup_sa/src/module_ipc/sub_service.cpp +++ b/services/backup_sa/src/module_ipc/sub_service.cpp @@ -73,6 +73,7 @@ namespace { const int32_t MAX_FILE_READY_REPORT_TIME = 2; const int32_t WAIT_SCANNING_INFO_SEND_TIME = 5; const int ERR_SIZE = -1; +constexpr uint32_t TRACE_PATH_LEN = 50; } // namespace void Service::AppendBundles(const std::vector &bundleNames) @@ -650,11 +651,40 @@ void Service::SaStatReport(const string &bundleName, const string &func, RadarEr saStatistic->ReportSA(func, err); } +void Service::DumpHitrace() +{ + std::unique_lock traceLock(traceMutex_); + if (traceCollector_ == nullptr) { + traceCollector_ = OHOS::HiviewDFX::UCollectClient::TraceCollector::Create(); + } + if (traceCollector_ == nullptr) { + HILOGE("create trace collector fail"); + return; + } + + HILOGI("start DumpSnapshot!"); + auto dumpRet = traceCollector_->DumpSnapshot(); + if (dumpRet.retCode != OHOS::HiviewDFX::UCollect::UcError::SUCCESS) { + HILOGE("DumpSnapshot fail, errorCode = %{public}d", dumpRet.retCode); + return; + } + std::string dumpRetString = ""; + for (std::string item : dumpRet.data) { + if (item.size() > TRACE_PATH_LEN) { + dumpRetString += item.substr(TRACE_PATH_LEN) + "; "; + } else { + dumpRetString += item + "; "; + } + } + HILOGI("DumpSnapshot succ, output: %{public}s", dumpRetString.c_str()); +} + void Service::ExtConnectDied(const string &callName) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); try { HILOGI("Begin, bundleName: %{public}s", callName.c_str()); + DumpHitrace(); std::shared_ptr mutexPtr = GetExtensionMutex(callName); if (mutexPtr == nullptr) { HILOGE("extension mutex ptr is nullptr"); diff --git a/test/fuzztest/backupsa_fuzzer/BUILD.gn b/test/fuzztest/backupsa_fuzzer/BUILD.gn index bce672d8128bf8d522d6adce535c6e68b86106fc..2d937f227e993d8e93927b475257821757c16cd0 100644 --- a/test/fuzztest/backupsa_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsa_fuzzer/BUILD.gn @@ -49,6 +49,8 @@ ohos_fuzztest("BackupSaFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsaappendbundlesbackupsession_fuzzer/BUILD.gn b/test/fuzztest/backupsaappendbundlesbackupsession_fuzzer/BUILD.gn index 652bfdfa6ab7a128dd007e504687593f43cbd0ca..fdd0e1686e871524720fa6815ed78f267f2fd263 100644 --- a/test/fuzztest/backupsaappendbundlesbackupsession_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsaappendbundlesbackupsession_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaAppendBundlesBackupSessionFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsaappendbundlesincrementalbackupsession_fuzzer/BUILD.gn b/test/fuzztest/backupsaappendbundlesincrementalbackupsession_fuzzer/BUILD.gn index cf1c5dbb53128934b51b6fae7946d3e7cd5b3992..f5a0a346b908c531ba4fea8649eff86e8c71cebd 100644 --- a/test/fuzztest/backupsaappendbundlesincrementalbackupsession_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsaappendbundlesincrementalbackupsession_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaAppendBundlesIncrementalBackupSessionFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsaappincrementaldone_fuzzer/BUILD.gn b/test/fuzztest/backupsaappincrementaldone_fuzzer/BUILD.gn index e95393c7ecd0dc1476a84bb8d316c718093ad368..8e69dcf1140a95f49a6ae888961e626cee899b09 100644 --- a/test/fuzztest/backupsaappincrementaldone_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsaappincrementaldone_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaAppIncrementalDoneFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsaappincrementalfileready_fuzzer/BUILD.gn b/test/fuzztest/backupsaappincrementalfileready_fuzzer/BUILD.gn index 265292219f7d3c0af4df26a0ed712ebf0a93ca48..5cb77ed7c36018511ddd67b2ab9fb4084832396c 100644 --- a/test/fuzztest/backupsaappincrementalfileready_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsaappincrementalfileready_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaAppIncrementalFileReadyFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsagetfilehandle_fuzzer/BUILD.gn b/test/fuzztest/backupsagetfilehandle_fuzzer/BUILD.gn index 20f53983703dabe9601d0f6f88bb1a85b4f2ce35..f45ade42324dc9bf0b0fd155f714edb11909f9e8 100644 --- a/test/fuzztest/backupsagetfilehandle_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsagetfilehandle_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaGetFileHandleFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsagetincrementalfilehandle_fuzzer/BUILD.gn b/test/fuzztest/backupsagetincrementalfilehandle_fuzzer/BUILD.gn index 1e0ebaa3b5aeb7585febac558b8edc8632a0cefa..e085b973bdcfabdd3dc24038aa9506d54b93b738 100644 --- a/test/fuzztest/backupsagetincrementalfilehandle_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsagetincrementalfilehandle_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaGetIncrementalFileHandleFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsagetincrementallocalcapabilities_fuzzer/BUILD.gn b/test/fuzztest/backupsagetincrementallocalcapabilities_fuzzer/BUILD.gn index 87fd0b5f0960c8e08d944d3ca138a40c066293cf..654303084bd3c8e1432aeae27fc6043841d319b8 100644 --- a/test/fuzztest/backupsagetincrementallocalcapabilities_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsagetincrementallocalcapabilities_fuzzer/BUILD.gn @@ -54,6 +54,8 @@ ohos_fuzztest("BackupSaGetIncrementalLocalCapabilitiesFuzzTest") { "data_share:datashare_consumer", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", "storage_service:storage_manager_sa_proxy", diff --git a/test/fuzztest/backupsainitincrementalbackupsession_fuzzer/BUILD.gn b/test/fuzztest/backupsainitincrementalbackupsession_fuzzer/BUILD.gn index cc95ecc276223648136ec83a7e5cf4282a9e65e7..84d4938432615d2900057838d122dbd534328a2b 100644 --- a/test/fuzztest/backupsainitincrementalbackupsession_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsainitincrementalbackupsession_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaInitIncrementalBackupSessionFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsapublishincrementalfile_fuzzer/BUILD.gn b/test/fuzztest/backupsapublishincrementalfile_fuzzer/BUILD.gn index c3a3e0469b8232e7954d8dda6726db9cb94673de..58a86ab29d8cf002389ca6d2649e203a95ab12d1 100644 --- a/test/fuzztest/backupsapublishincrementalfile_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsapublishincrementalfile_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaPublishIncrementalFileFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupsarelease_fuzzer/BUILD.gn b/test/fuzztest/backupsarelease_fuzzer/BUILD.gn index e2b375306e5a1372f531ca9ea6114a2847e15927..385e2b26c321966ef320566555e4962bc1305f2b 100644 --- a/test/fuzztest/backupsarelease_fuzzer/BUILD.gn +++ b/test/fuzztest/backupsarelease_fuzzer/BUILD.gn @@ -52,6 +52,8 @@ ohos_fuzztest("BackupSaReleaseFuzzTest") { "c_utils:utils", "file_api:filemgmt_libn", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/test/fuzztest/backupservicestub_fuzzer/BUILD.gn b/test/fuzztest/backupservicestub_fuzzer/BUILD.gn index c4d813425e931dac0be9584059ad4d61eacd529f..5fd5493da157179a206e847853c222e3576f6a26 100644 --- a/test/fuzztest/backupservicestub_fuzzer/BUILD.gn +++ b/test/fuzztest/backupservicestub_fuzzer/BUILD.gn @@ -51,6 +51,8 @@ ohos_fuzztest("BackupServiceStubFuzzTest") { "ability_runtime:abilitykit_native", "c_utils:utils", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", ] diff --git a/tests/mock/module_external/bms_adapter_mock.cpp b/tests/mock/module_external/bms_adapter_mock.cpp index 9694e08bc5ed34dfe9de0bdc76e1296a2fed9345..1b6f41d445d403f1ddd8795ac0b4381610cc33ae 100644 --- a/tests/mock/module_external/bms_adapter_mock.cpp +++ b/tests/mock/module_external/bms_adapter_mock.cpp @@ -21,7 +21,6 @@ #include "b_json/b_json_entity_extension_config.h" #include "bundle_mgr_client.h" -#include "module_ipc/service.h" #include "module_ipc/svc_session_manager.h" #include "module_sched/sched_scheduler.h" diff --git a/tests/mock/module_ipc/include/trace_collector_mock.h b/tests/mock/module_ipc/include/trace_collector_mock.h new file mode 100644 index 0000000000000000000000000000000000000000..19c92e873f6e642e1ee2318d9c07d4e61f5a5ad8 --- /dev/null +++ b/tests/mock/module_ipc/include/trace_collector_mock.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") = 0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OHOS_FILEMGMT_BACKUP_TRACE_COLLECTOR_MOCK_H +#define OHOS_FILEMGMT_BACKUP_TRACE_COLLECTOR_MOCK_H + +#include + +#include "trace_collector_client.h" + +namespace OHOS::FileManagement::Backup { +using namespace OHOS::HiviewDFX; + +class TraceCollectorMock : public UCollectClient::TraceCollector { +public: + MOCK_METHOD(CollectResult, OpenSnapshot, (const std::vector& tagGroups)); + MOCK_METHOD(CollectResult>, DumpSnapshot, (UCollect::TraceClient client)); + MOCK_METHOD(CollectResult, OpenRecording, (const std::string& tags)); + MOCK_METHOD(CollectResult, RecordingOn, ()); + MOCK_METHOD(CollectResult>, RecordingOff, ()); + MOCK_METHOD(CollectResult, Close, ()); + // use for hap main looper + MOCK_METHOD(CollectResult, CaptureDurationTrace, (UCollectClient::AppCaller &appCaller)); +}; +} // namespace OHOS::FileManagement::Backup +#endif // OHOS_FILEMGMT_BACKUP_TRACE_COLLECTOR_MOCK_H \ No newline at end of file diff --git a/tests/mock/module_ipc/svc_session_manager_mock.cpp b/tests/mock/module_ipc/svc_session_manager_mock.cpp index c1862dc6c49cb9511edebfae61ac7250a6dd2d18..13b0c6d68aaee759ea639aa9e6982aec288348b1 100644 --- a/tests/mock/module_ipc/svc_session_manager_mock.cpp +++ b/tests/mock/module_ipc/svc_session_manager_mock.cpp @@ -261,7 +261,7 @@ void SvcSessionManager::AppendBundles(const vector &bundleNames, vec BackupExtInfo info {}; info.backupExtName = BUNDLE_NAME; impl_.backupExtNameMap.insert(make_pair(BUNDLE_NAME, info)); - for (auto bundleName : bundleNames) { + for (const std::string& bundleName : bundleNames) { if (bundleName == BUNDLE_NAME_FALSE) { failedBundles.push_back(BUNDLE_NAME_FALSE); } diff --git a/tests/unittests/backup_sa/module_ipc/BUILD.gn b/tests/unittests/backup_sa/module_ipc/BUILD.gn index 3c8a43658c1d1cd7a7df72676949584e1cc23588..dfe9ccde54ff077960b579e2dbc8410b3a535414 100644 --- a/tests/unittests/backup_sa/module_ipc/BUILD.gn +++ b/tests/unittests/backup_sa/module_ipc/BUILD.gn @@ -53,7 +53,9 @@ ohos_unittest("module_ipc_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "ipc:ipc_core", "safwk:system_ability_fwk", "samgr:samgr_proxy", @@ -129,7 +131,9 @@ ohos_unittest("backup_service_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", @@ -213,7 +217,9 @@ ohos_unittest("backup_service_throw_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", @@ -283,7 +289,9 @@ ohos_unittest("backup_service_session_test") { "googletest:gmock_main", "googletest:gtest_main", "hilog:libhilog", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", @@ -340,6 +348,8 @@ ohos_unittest("backup_service_scheduler_test") { "googletest:gmock_main", "googletest:gtest_main", "hilog:libhilog", + "hitrace:hitrace_dump", + "hiview:libucollection_client", "ipc:ipc_core", "jsoncpp:jsoncpp", "safwk:system_ability_fwk", @@ -410,7 +420,9 @@ ohos_unittest("backup_restore_deps_manager_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", @@ -483,7 +495,9 @@ ohos_unittest("backup_service_incremental_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", @@ -565,7 +579,9 @@ ohos_unittest("backup_service_other_test") { "googletest:gtest_main", "hilog:libhilog", "hisysevent:libhisysevent", + "hitrace:hitrace_dump", "hitrace:hitrace_meter", + "hiview:libucollection_client", "init:libbegetutil", "ipc:ipc_core", "jsoncpp:jsoncpp", diff --git a/tests/unittests/backup_sa/module_ipc/service_test.cpp b/tests/unittests/backup_sa/module_ipc/service_test.cpp index d47502656b17d255318dd7e9011fa2de2a9ebb81..c46c5749b0ea4462ce2ccea68a9e8ad28b8fae4d 100644 --- a/tests/unittests/backup_sa/module_ipc/service_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_test.cpp @@ -26,6 +26,7 @@ #include "service_reverse_mock.h" #include "test_common.h" #include "test_manager.h" +#include "trace_collector_mock.h" #include "service.cpp" #include "sub_service.cpp" @@ -1865,13 +1866,13 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0100, testin GTEST_LOG_(INFO) << "1. AppendBundlesDetailsBackupSession fail nullptr"; servicePtr_->session_ = nullptr; int ret = servicePtr_->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); - EXPECT_EQ(ret, 13900020); + EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode()); GTEST_LOG_(INFO) << "2. AppendBundlesDetailsBackupSession fail false"; servicePtr_->session_ = session_; servicePtr_->isOccupyingSession_.store(true); ret = servicePtr_->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); - EXPECT_EQ(ret, 13900020); + EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode()); GTEST_LOG_(INFO) << "3. AppendBundlesDetailsBackupSession succ"; servicePtr_->isOccupyingSession_.store(false); @@ -2598,4 +2599,39 @@ HWTEST_F(ServiceTest, Service_Total_Stat_Report, testing::ext::TestSize.Level1) GTEST_LOG_(INFO) << "ServiceTest-end Service_Total_Stat_Report"; } +/** + * @tc.number: SUB_Service_DumpHiTrace_0000 + * @tc.name: SUB_Service_DumpHiTrace_0000 + * @tc.desc: 测试 DumpHiTrace 的正常/异常分支 + * @tc.size: TINY + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: NA + */ +HWTEST_F(ServiceTest, SUB_Service_DumpHiTrace_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_DumpHiTrace_0000"; + GTEST_LOG_(INFO) << "1. test if 1, collector is null"; + servicePtr_->traceCollector_ = nullptr; + servicePtr_->DumpHitrace(); + EXPECT_NE(servicePtr_->traceCollector_, nullptr); + + std::shared_ptr collectorMock = std::make_shared(); + CollectResult> result1; + CollectResult> result2(UCollect::UcError::SUCCESS); + result2.data.push_back("123456789012345678901234567890123456789012345678901234567890"); + CollectResult> result3(UCollect::UcError::SUCCESS); + result3.data.push_back("1234567890"); + EXPECT_CALL(*collectorMock, DumpSnapshot(_)).WillOnce(Return(result1)).WillOnce(Return(result2)) + .WillOnce(Return(result3)); + servicePtr_->traceCollector_ = collectorMock; + GTEST_LOG_(INFO) << "2. test if 3, dump return fail"; + servicePtr_->DumpHitrace(); + GTEST_LOG_(INFO) << "3. test if 4, dump return long data"; + servicePtr_->DumpHitrace(); + GTEST_LOG_(INFO) << "4. test else, dump return short data"; + servicePtr_->DumpHitrace(); + EXPECT_NE(servicePtr_->traceCollector_, nullptr); + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_DumpHiTrace_0000"; +} } // namespace OHOS::FileManagement::Backup \ No newline at end of file