From e2a78eff90ca47390f6b7e1fa24d58f4a730b5ed Mon Sep 17 00:00:00 2001 From: chensihan Date: Fri, 30 Aug 2024 09:04:05 +0000 Subject: [PATCH 01/37] update test/unittest/BUILD.gn. Signed-off-by: chensihan --- test/unittest/BUILD.gn | 1156 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 1129 insertions(+), 27 deletions(-) diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 938c48bff..3308b5d03 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -1,28 +1,1130 @@ -# Copyright (c) 2022 Huawei Device Co., Ltd. -# Licensed under the Apache License, Version 2.0 (the "License"); -# 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. +From 8e375896fd2b83dc4df690bb321012594cb25a7f Mon Sep 17 00:00:00 2001 +From: openharmony_ci <120357966@qq.com> +Date: Tue, 27 Aug 2024 15:16:06 +0000 +Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=81=A2=E5=A4=8D=E6=A1=86?= + =?UTF-8?q?=E6=9E=B6DFX=E9=9B=B7=E8=BE=BE=E6=89=93=E7=82=B9?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +TicketNo: DTS0000000000000 +Description: 备份恢复框架DFX雷达打点 +Team:gitee +Feature or Bugfix: +Binary Source: sync from gitee +PrivateCode(Yes/No):No +------ DO NOT MODIFY, AUTO-GENERATED! ------ +Gitee-Issue: #IAMQ3D +Time: "2024-08-27T15:24:40.006Z" +PR-Num: 1147 +Gitee-PR: https://openharmony.gitee.com/openharmony/filemanagement_app_file_service/pulls/1147 +cherry picked from commit 1dc187d01e845cbb3a1ae46e11db7560b6fb5d72 +cherry picked from commit 563ebd45f68f5ce397289d9977af8830916c9de6 + +Change-Id: I1724772278255741fd873e6d674fbd82efe46220 +Reviewed-by: c30054556 +Approved-by: z00800685 +Merged-on: https://open.codehub.huawei.com/OpenSourceCenter_CR/openharmony/filemanagement_app_file_service/-/change_requests/1424 +Merged-by: public hisicitools +--- + .../native/backup_ext/include/ext_extension.h | 4 + + .../native/backup_ext/src/ext_extension.cpp | 45 ++++++++++ + .../backup_ext/src/sub_ext_extension.cpp | 88 +++++++++++++++++++ + .../src/b_incremental_backup_session.cpp | 28 +++++- + .../src/b_incremental_restore_session.cpp | 5 ++ + .../b_incremental_session_restore_async.cpp | 5 ++ + .../backup_kit_inner/src/b_session_backup.cpp | 28 +++++- + .../src/b_session_restore.cpp | 5 ++ + .../src/b_session_restore_async.cpp | 5 ++ + .../backup_kit_inner/src/service_proxy.cpp | 34 ++++++- + .../native/backup_kit_inner/BUILD.gn | 1 + + .../app_gallery_dispose_proxy.cpp | 41 +++++++-- + services/backup_sa/src/module_ipc/service.cpp | 62 +++++++++++++ + .../src/module_ipc/svc_session_manager.cpp | 14 +++ + utils/include/b_radar/b_radar.h | 50 +++++------ + utils/src/b_radar/b_radar.cpp | 20 +++-- + 16 files changed, 389 insertions(+), 46 deletions(-) + +diff --git a/frameworks/native/backup_ext/include/ext_extension.h b/frameworks/native/backup_ext/include/ext_extension.h +index 8a8936a7..65d7a1e9 100644 +--- a/frameworks/native/backup_ext/include/ext_extension.h ++++ b/frameworks/native/backup_ext/include/ext_extension.h +@@ -259,6 +259,8 @@ private: + void SyncCallJsOnProcessTask(wptr obj, BackupRestoreScenario scenario); + void StartOnProcessTimeOutTimer(wptr obj); + void CloseOnProcessTimeOutTimer(); ++ void UpdateOnStartTime(); ++ int32_t GetOnStartTimeCost(); + + private: + std::shared_mutex lock_; +@@ -286,6 +288,8 @@ private: + std::condition_variable execOnProcessCon_; + std::mutex onProcessLock_; + std::atomic onProcessTimeout_ {false}; ++ std::chrono::time_point g_onStart; ++ std::mutex onStartTimeLock_; + }; + } // namespace OHOS::FileManagement::Backup + +diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp +index 86409b56..c74e63e6 100644 +--- a/frameworks/native/backup_ext/src/ext_extension.cpp ++++ b/frameworks/native/backup_ext/src/ext_extension.cpp +@@ -47,6 +47,7 @@ + #include "b_json/b_json_cached_entity.h" + #include "b_jsonutil/b_jsonutil.h" + #include "b_ohos/startup/backup_para.h" ++#include "b_radar/b_radar.h" + #include "b_tarball/b_tarball_factory.h" + #include "filemgmt_libhilog.h" + #include "hitrace_meter.h" +@@ -128,10 +129,18 @@ void BackupExtExtension::VerifyCaller() + uint32_t tokenCaller = IPCSkeleton::GetCallingTokenID(); + int tokenType = Security::AccessToken::AccessTokenKit::GetTokenType(tokenCaller); + if (tokenType != Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE) { ++ AppRadar::Info info(bundleName_, "", "{\"reason\":\"Calling tokenType error\"}"); ++ AppRadar::GetInstance().RecordDefaultFuncRes( ++ info, "BackupExtExtension::VerifyCaller", AppRadar::GetInstance().GetUserId(), ++ BizStageBackup::BIZ_STAGE_PERMISSION_CHECK_FAIL, BError(BError::Codes::OK).GetCode()); + throw BError(BError::Codes::EXT_BROKEN_IPC, + string("Calling tokenType is error, token type is ").append(to_string(tokenType))); + } + if (IPCSkeleton::GetCallingUid() != BConstants::BACKUP_UID) { ++ AppRadar::Info info(bundleName_, "", "{\"reason\":\"Calling uid invalid\"}"); ++ AppRadar::GetInstance().RecordDefaultFuncRes( ++ info, "BackupExtExtension::VerifyCaller", AppRadar::GetInstance().GetUserId(), ++ BizStageBackup::BIZ_STAGE_PERMISSION_CHECK_FAIL, BError(BError::Codes::OK).GetCode()); + throw BError(BError::Codes::EXT_BROKEN_IPC, + string("Calling uid is invalid, calling uid is ").append(to_string(IPCSkeleton::GetCallingUid()))); + } +@@ -830,7 +839,13 @@ void BackupExtExtension::AsyncTaskBackup(const string config) + HILOGI("Do backup, start fwk timer end."); + BJsonCachedEntity cachedEntity(config); + auto cache = cachedEntity.Structuralize(); ++ auto start = std::chrono::system_clock::now(); + auto ret = ptr->DoBackup(cache); ++ auto end = std::chrono::system_clock::now(); ++ auto cost = to_string(std::chrono::duration_cast(end - start).count()); ++ AppRadar::Info info(ptr->bundleName_, "", string("{\"spend_time\":").append(cost).append(string("ms\"}"))); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BackupExtExtension::AsyncTaskBackup", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_DO_BACKUP, static_cast(ret)); + // REM: 处理返回结果 ret + ptr->AppDone(ret); + HILOGI("backup app done %{public}d", ret); +@@ -1158,6 +1173,16 @@ void BackupExtExtension::HandleSpecialVersionRestore() + } + } + ++void RecordDoRestoreRes(const std::string &bundleName, const std::string &func, int32_t ms) ++{ ++ std::stringstream ss; ++ ss << "\"spend_time\": \"" << ms << "ms\""; ++ int32_t err = static_cast(BError::Codes::OK); ++ AppRadar::Info info (bundleName, "", ss.str()); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, func, AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_DO_RESTORE, err); ++} ++ + void BackupExtExtension::AsyncTaskRestore(std::set fileSet, + const std::vector extManageInfo) + { +@@ -1172,6 +1197,7 @@ void BackupExtExtension::AsyncTaskRestore(std::set fileSet, + return; + } + // 解压 ++ auto startTime = std::chrono::system_clock::now(); + for (auto item : fileSet) { // 处理要解压的tar文件 + off_t tarFileSize = 0; + if (ExtractFileExt(item) == "tar" && !IsUserTar(item, extManageInfo, tarFileSize)) { +@@ -1184,6 +1210,10 @@ void BackupExtExtension::AsyncTaskRestore(std::set fileSet, + ptr->extension_->UseFullBackupOnly() && !ptr->extension_->SpecialVersionForCloneAndCloud(); + ptr->RestoreBigFiles(appendTargetPath); + ptr->DeleteBackupTars(); ++ auto endTime = std::chrono::system_clock::now(); ++ auto spendTime = std::chrono::duration_cast(endTime-startTime).count(); ++ RecordDoRestoreRes(ptr->bundleName_, "BackupExtExtension::AsyncTaskRestore", ++ static_cast(spendTime)); + if (ret == ERR_OK) { + ptr->AsyncTaskRestoreForUpgrade(); + } else { +@@ -1222,6 +1252,7 @@ void BackupExtExtension::AsyncTaskIncrementalRestore() + if (ptr != nullptr && ptr->isDebug_) { + ptr->CheckTmpDirFileInfos(); + } ++ auto startTime = std::chrono::system_clock::now(); + // 解压 + int ret = ptr->DoIncrementalRestore(); + // 恢复用户tar包以及大文件 +@@ -1235,6 +1266,10 @@ void BackupExtExtension::AsyncTaskIncrementalRestore() + if (ptr != nullptr && ptr->isDebug_) { + ptr->CheckRestoreFileInfos(); + } ++ auto endTime = std::chrono::system_clock::now(); ++ auto spendTime = std::chrono::duration_cast(endTime-startTime).count(); ++ RecordDoRestoreRes(ptr->bundleName_, "BackupExtExtension::AsyncTaskIncrementalRestore", ++ static_cast(spendTime)); + if (ret == ERR_OK) { + HILOGI("after extra, do incremental restore."); + ptr->AsyncTaskIncrementalRestoreForUpgrade(); +@@ -1326,6 +1361,7 @@ void BackupExtExtension::AsyncTaskRestoreForUpgrade() + ptr->StartOnProcessTaskThread(obj, BackupRestoreScenario::FULL_RESTORE); + auto callBackup = ptr->OnRestoreCallback(obj); + auto callBackupEx = ptr->OnRestoreExCallback(obj); ++ ptr->UpdateOnStartTime(); + ErrCode err = ptr->extension_->OnRestore(callBackup, callBackupEx); + if (err != ERR_OK) { + ptr->AppDone(BError::GetCodeByErrno(err)); +@@ -1377,6 +1413,7 @@ void BackupExtExtension::AsyncTaskIncrementalRestoreForUpgrade() + ptr->StartOnProcessTaskThread(obj, BackupRestoreScenario::INCREMENTAL_RESTORE); + auto callBackup = ptr->IncreOnRestoreCallback(obj); + auto callBackupEx = ptr->IncreOnRestoreExCallback(obj); ++ ptr->UpdateOnStartTime(); + ErrCode err = ptr->extension_->OnRestore(callBackup, callBackupEx); + if (err != ERR_OK) { + HILOGE("OnRestore done, err = %{pubilc}d", err); +@@ -1506,6 +1543,12 @@ void BackupExtExtension::StartFwkTimer(bool &isFwkStart) + } + } + ++void BackupExtExtension::UpdateOnStartTime() ++{ ++ std::lock_guard lock(onStartTimeLock_); ++ g_onStart = std::chrono::system_clock::now(); ++} ++ + void BackupExtExtension::AsyncTaskOnBackup() + { + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); +@@ -1517,6 +1560,7 @@ void BackupExtExtension::AsyncTaskOnBackup() + ptr->StartOnProcessTaskThread(obj, BackupRestoreScenario::FULL_BACKUP); + auto callBackup = ptr->OnBackupCallback(obj); + auto callBackupEx = ptr->OnBackupExCallback(obj); ++ ptr->UpdateOnStartTime(); + ErrCode err = ptr->extension_->OnBackup(callBackup, callBackupEx); + if (err != ERR_OK) { + HILOGE("OnBackup done, err = %{pubilc}d", err); +@@ -1897,6 +1941,7 @@ void BackupExtExtension::AsyncTaskOnIncrementalBackup() + ptr->StartOnProcessTaskThread(obj, BackupRestoreScenario::INCREMENTAL_BACKUP); + auto callBackup = ptr->IncOnBackupCallback(obj); + auto callBackupEx = ptr->IncOnBackupExCallback(obj); ++ ptr->UpdateOnStartTime(); + ErrCode err = ptr->extension_->OnBackup(callBackup, callBackupEx); + if (err != ERR_OK) { + HILOGE("OnBackup done, err = %{pubilc}d", err); +diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp +index a788e5cd..2979023d 100644 +--- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp ++++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp +@@ -47,6 +47,7 @@ + #include "b_json/b_json_cached_entity.h" + #include "b_jsonutil/b_jsonutil.h" + #include "b_ohos/startup/backup_para.h" ++#include "b_radar/b_radar.h" + #include "b_tarball/b_tarball_factory.h" + #include "filemgmt_libhilog.h" + #include "hitrace_meter.h" +@@ -139,6 +140,13 @@ void BackupExtExtension::CheckTmpDirFileInfos(bool isSpecialVersion) + errFiles.size()); + if (!errFiles.empty()) { + HILOGE("(Debug) The received file and idx is not same"); ++ std::stringstream ss; ++ ss << "\"total_file\": \"" << idxFileInfos.size() << "\", \"restore_file\": \"" ++ << idxFileInfos.size() - errFiles.size() << "\"" << "\"info\": \"different received file and idx\""; ++ AppRadar::Info info (bundleName_, "", ss.str()); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::CheckTmpDirFileInfos", ++ AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_CHECK_DATA_FAIL, ++ static_cast(BError::BackupErrorCode::E_UKERR)); + } else { + HILOGI("(Debug) The received file and idx is same"); + } +@@ -167,6 +175,13 @@ tuple> BackupExtExtension::CheckRestoreFileInfos() + HILOGE("(Debug) End file check result Total file: %{public}zu, err file: %{public}zu", endFileInfos_.size(), + errFileInfos_.size()); + if (errFiles.size()) { ++ std::stringstream ss; ++ ss << "\"total_file\": \"" << endFileInfos_.size() << "\", \"restore_file\": \"" ++ << endFileInfos_.size() - errFileInfos_.size() << "\""; ++ AppRadar::Info info (bundleName_, "", ss.str()); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::CheckRestoreFileInfos", ++ AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_CHECK_DATA_FAIL, ++ static_cast(BError::BackupErrorCode::E_UKERR)); + return { false, errFiles }; + } + return { true, errFiles }; +@@ -182,6 +197,14 @@ std::function BackupExtExtension::OnRestoreCallback( + return; + } + HILOGI("Current bundle will execute app done"); ++ if (errCode == ERR_OK) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ std::stringstream ss; ++ ss << "\"spend_time\": \"" << spendTime << "ms\""; ++ AppRadar::Info info (extensionPtr->bundleName_, ss.str(), ""); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::OnRestoreCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); ++ } + extensionPtr->FinishOnProcessTask(); + if (errMsg.empty()) { + extensionPtr->AppDone(errCode); +@@ -207,6 +230,14 @@ std::function BackupExtExtension::OnRestoreExCallbac + HILOGE("Extension handle have been released"); + return; + } ++ if (errCode == ERR_OK && !restoreRetInfo.empty()) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ std::stringstream ss; ++ ss << "\"spend_time\": \"" << spendTime << "ms\""; ++ AppRadar::Info info (extensionPtr->bundleName_, ss.str(), ""); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::OnRestoreExCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); ++ } + extensionPtr->FinishOnProcessTask(); + extensionPtr->extension_->InvokeAppExtMethod(errCode, restoreRetInfo); + if (errCode == ERR_OK) { +@@ -257,6 +288,15 @@ std::function BackupExtExtension::IncreOnRestoreExCa + HILOGE("Extension handle have been released"); + return; + } ++ if (errCode == ERR_OK && !restoreRetInfo.empty()) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ std::stringstream ss; ++ ss << "\"spend_time\": \"" << spendTime << "ms\""; ++ AppRadar::Info info (extensionPtr->bundleName_, "", ss.str()); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::IncreOnRestoreExCallback", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); ++ } + extensionPtr->FinishOnProcessTask(); + extensionPtr->extension_->InvokeAppExtMethod(errCode, restoreRetInfo); + if (errCode == ERR_OK) { +@@ -286,6 +326,14 @@ std::function BackupExtExtension::IncreOnRestoreCall + return; + } + HILOGI("Current bundle will execute app done"); ++ if (errCode == ERR_OK) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ std::stringstream ss; ++ ss << "\"spend_time\": \"" << spendTime << "ms\""; ++ AppRadar::Info info (extensionPtr->bundleName_, ss.str(), ""); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::IncreOnRestoreCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); ++ } + extensionPtr->FinishOnProcessTask(); + if (errMsg.empty()) { + extensionPtr->AppIncrementalDone(errCode); +@@ -298,6 +346,14 @@ std::function BackupExtExtension::IncreOnRestoreCall + }; + } + ++int32_t BackupExtExtension::GetOnStartTimeCost() ++{ ++ auto onBackupRestoreEnd = std::chrono::system_clock::now(); ++ std::lock_guard lock(onStartTimeLock_); ++ auto spendTime = std::chrono::duration_cast(onBackupRestoreEnd - g_onStart).count(); ++ return spendTime; ++} ++ + std::function BackupExtExtension::OnBackupCallback(wptr obj) + { + HILOGI("Begin get HandleFullBackupCallbackEx"); +@@ -312,6 +368,14 @@ std::function BackupExtExtension::OnBackupCall + HILOGE("Extension handle have been released"); + return; + } ++ if (errCode == ERR_OK) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ AppRadar::Info info(extensionPtr->bundleName_, "", string("{\"spend_time\":\" "). ++ append(to_string(spendTime)).append(string("ms\"}"))); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BackupExtExtension::OnBackupCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_ON_BACKUP, ++ static_cast(ERR_OK)); ++ } + extensionPtr->FinishOnProcessTask(); + extensionPtr->AsyncTaskBackup(extensionPtr->extension_->GetUsrConfig()); + }; +@@ -331,6 +395,14 @@ std::function BackupExtExtension::OnBackupExCa + HILOGE("Extension handle have been released"); + return; + } ++ if (errCode == ERR_OK && !backupExRetInfo.empty()) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ AppRadar::Info info(extensionPtr->bundleName_, "", string("{\"spend_time\":\" "). ++ append(to_string(spendTime)).append(string("ms\"}"))); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BackupExtExtension::OnBackupExCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_ON_BACKUP, ++ static_cast(ERR_OK)); ++ } + extensionPtr->extension_->InvokeAppExtMethod(errCode, backupExRetInfo); + if (backupExRetInfo.size()) { + HILOGI("Will notify backup result report"); +@@ -356,6 +428,14 @@ std::function BackupExtExtension::IncOnBackupC + return; + } + HILOGI("Start GetAppLocalListAndDoIncrementalBackup"); ++ if (errCode == ERR_OK) { ++ auto spendTime = extPtr->GetOnStartTimeCost(); ++ AppRadar::Info info(extPtr->bundleName_, "", string("{\"spend_time\":\" "). ++ append(to_string(spendTime)).append(string("ms\"}"))); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BackupExtExtension::IncOnBackupCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_ON_BACKUP, ++ static_cast(ERR_OK)); ++ } + extPtr->FinishOnProcessTask(); + proxy->GetAppLocalListAndDoIncrementalBackup(); + }; +@@ -378,6 +458,14 @@ std::function BackupExtExtension::IncOnBackupE + HILOGE("Extension handle have been released"); + return; + } ++ if (errCode == ERR_OK && !backupExRetInfo.empty()) { ++ auto spendTime = extensionPtr->GetOnStartTimeCost(); ++ AppRadar::Info info(extensionPtr->bundleName_, "", string("{\"spend_time\":\" "). ++ append(to_string(spendTime)).append(string("ms\"}"))); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BackupExtExtension::IncOnBackupExCallback", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_ON_BACKUP, ++ static_cast(ERR_OK)); ++ } + extensionPtr->extension_->InvokeAppExtMethod(errCode, backupExRetInfo); + if (backupExRetInfo.size()) { + HILOGI("Start GetAppLocalListAndDoIncrementalBackup"); +diff --git a/frameworks/native/backup_kit_inner/src/b_incremental_backup_session.cpp b/frameworks/native/backup_kit_inner/src/b_incremental_backup_session.cpp +index bc4a6e68..cfaaf5ef 100644 +--- a/frameworks/native/backup_kit_inner/src/b_incremental_backup_session.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_incremental_backup_session.cpp +@@ -16,6 +16,7 @@ + #include "b_incremental_backup_session.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "filemgmt_libhilog.h" + #include "service_proxy.h" + #include "service_reverse.h" +@@ -55,6 +56,9 @@ unique_ptr BIncrementalBackupSession::Init(Callbacks + int32_t res = proxy->InitIncrementalBackupSession(sptr(new ServiceReverse(callbacks))); + if (res != 0) { + HILOGE("Failed to Backup because of %{public}d", res); ++ AppRadar::Info info("", "", ""); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BIncrementalBackupSession::Init", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_CREATE_BACKUP_SESSION_FAIL, res); + return nullptr; + } + +@@ -93,7 +97,17 @@ ErrCode BIncrementalBackupSession::AppendBundles(vector bundle + return BError(BError::Codes::SDK_BROKEN_IPC, "Failed to get backup service").GetCode(); + } + +- return proxy->AppendBundlesIncrementalBackupSession(bundlesToBackup); ++ int32_t res = proxy->AppendBundlesIncrementalBackupSession(bundlesToBackup); ++ if (res != 0) { ++ std::string ss; ++ for (const auto &bundle : bundlesToBackup) { ++ ss += bundle.bundleName + ", "; ++ } ++ AppRadar::Info info(ss.c_str(), "", ""); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BIncrementalBackupSession::AppendBundles", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_APPEND_BUNDLES_FAIL, res); ++ } ++ return res; + } + + ErrCode BIncrementalBackupSession::AppendBundles(vector bundlesToBackup, +@@ -104,7 +118,17 @@ ErrCode BIncrementalBackupSession::AppendBundles(vector bundle + return BError(BError::Codes::SDK_BROKEN_IPC, "Failed to get backup service").GetCode(); + } + +- return proxy->AppendBundlesIncrementalBackupSession(bundlesToBackup, infos); ++ int32_t res = proxy->AppendBundlesIncrementalBackupSession(bundlesToBackup, infos); ++ if (res != 0) { ++ std::string ss; ++ for (const auto &bundle : bundlesToBackup) { ++ ss += bundle.bundleName + ", "; ++ } ++ AppRadar::Info info(ss.c_str(), "", "AppendBundles with infos"); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BIncrementalBackupSession::AppendBundles", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_APPEND_BUNDLES_FAIL, res); ++ } ++ return res; + } + + ErrCode BIncrementalBackupSession::Release() +diff --git a/frameworks/native/backup_kit_inner/src/b_incremental_restore_session.cpp b/frameworks/native/backup_kit_inner/src/b_incremental_restore_session.cpp +index 1b5b24c6..ed51e8cb 100644 +--- a/frameworks/native/backup_kit_inner/src/b_incremental_restore_session.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_incremental_restore_session.cpp +@@ -16,6 +16,7 @@ + #include "b_incremental_restore_session.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "filemgmt_libhilog.h" + #include "service_proxy.h" + #include "service_reverse.h" +@@ -54,6 +55,10 @@ unique_ptr BIncrementalRestoreSession::Init(Callback + int32_t res = proxy->InitRestoreSession(sptr(new ServiceReverse(callbacks))); + if (res != 0) { + HILOGE("Failed to Restore because of %{public}d", res); ++ AppRadar::Info info ("", "", "create restore session failed"); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BIncrementalRestoreSession::Init", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, res); + return nullptr; + } + +diff --git a/frameworks/native/backup_kit_inner/src/b_incremental_session_restore_async.cpp b/frameworks/native/backup_kit_inner/src/b_incremental_session_restore_async.cpp +index 67ed9f49..75c7e3cb 100644 +--- a/frameworks/native/backup_kit_inner/src/b_incremental_session_restore_async.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_incremental_session_restore_async.cpp +@@ -16,6 +16,7 @@ + #include "b_incremental_session_restore_async.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "b_resources/b_constants.h" + #include "filemgmt_libhilog.h" + #include "service_proxy.h" +@@ -62,6 +63,10 @@ shared_ptr BIncrementalSessionRestoreAsync::Ini + int32_t res = proxy->InitRestoreSession(sptr(new ServiceReverse(callbacksTmp))); + if (res != 0) { + HILOGE("Failed to Restore because of %{public}d", res); ++ AppRadar::Info info ("", "", "create restore session failed"); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BIncrementalSessionRestoreAsync::Init", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, res); + return nullptr; + } + +diff --git a/frameworks/native/backup_kit_inner/src/b_session_backup.cpp b/frameworks/native/backup_kit_inner/src/b_session_backup.cpp +index 495e9d54..f2028551 100644 +--- a/frameworks/native/backup_kit_inner/src/b_session_backup.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_session_backup.cpp +@@ -16,6 +16,7 @@ + #include "b_session_backup.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "filemgmt_libhilog.h" + #include "service_proxy.h" + #include "service_reverse.h" +@@ -55,6 +56,9 @@ unique_ptr BSessionBackup::Init(Callbacks callbacks) + int32_t res = proxy->InitBackupSession(sptr(new ServiceReverse(callbacks))); + if (res != 0) { + HILOGE("Failed to Backup because of %{public}d", res); ++ AppRadar::Info info("", "", ""); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BSessionBackup::Init", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_CREATE_BACKUP_SESSION_FAIL, res); + return nullptr; + } + +@@ -103,7 +107,17 @@ ErrCode BSessionBackup::AppendBundles(vector bundlesToBackup) + return BError(BError::Codes::SDK_BROKEN_IPC, "Failed to get backup service").GetCode(); + } + +- return proxy->AppendBundlesBackupSession(bundlesToBackup); ++ int32_t res = proxy->AppendBundlesBackupSession(bundlesToBackup); ++ if (res != 0) { ++ std::string ss; ++ for (const auto &bundleName:bundlesToBackup) { ++ ss += bundleName + ", "; ++ } ++ AppRadar::Info info(ss.c_str(), "", ""); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BSessionBackup::AppendBundles", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_APPEND_BUNDLES_FAIL, res); ++ } ++ return res; + } + + ErrCode BSessionBackup::AppendBundles(vector bundlesToBackup, vector detailInfos) +@@ -113,7 +127,17 @@ ErrCode BSessionBackup::AppendBundles(vector bundlesToBackup, vector + return BError(BError::Codes::SDK_BROKEN_IPC, "Failed to get backup service").GetCode(); + } + +- return proxy->AppendBundlesDetailsBackupSession(bundlesToBackup, detailInfos); ++ int32_t res = proxy->AppendBundlesDetailsBackupSession(bundlesToBackup, detailInfos); ++ if (res != 0) { ++ std::string ss; ++ for (const auto &bundleName:bundlesToBackup) { ++ ss += bundleName + ", "; ++ } ++ AppRadar::Info info(ss.c_str(), "", ""); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "BSessionBackup::AppendBundles", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_APPEND_BUNDLES_FAIL, res); ++ } ++ return res; + } + + ErrCode BSessionBackup::Finish() +diff --git a/frameworks/native/backup_kit_inner/src/b_session_restore.cpp b/frameworks/native/backup_kit_inner/src/b_session_restore.cpp +index c284aa26..0c37d260 100644 +--- a/frameworks/native/backup_kit_inner/src/b_session_restore.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_session_restore.cpp +@@ -16,6 +16,7 @@ + #include "b_session_restore.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "filemgmt_libhilog.h" + #include "service_proxy.h" + #include "service_reverse.h" +@@ -54,6 +55,10 @@ unique_ptr BSessionRestore::Init(Callbacks callbacks) + int32_t res = proxy->InitRestoreSession(new ServiceReverse(callbacks)); + if (res != 0) { + HILOGE("Failed to Restore because of %{public}d", res); ++ AppRadar::Info info ("", "", "create restore session failed"); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BSessionRestore::Init", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, res); + return nullptr; + } + +diff --git a/frameworks/native/backup_kit_inner/src/b_session_restore_async.cpp b/frameworks/native/backup_kit_inner/src/b_session_restore_async.cpp +index 99ffa77e..b3cea05e 100644 +--- a/frameworks/native/backup_kit_inner/src/b_session_restore_async.cpp ++++ b/frameworks/native/backup_kit_inner/src/b_session_restore_async.cpp +@@ -16,6 +16,7 @@ + #include "b_session_restore_async.h" + + #include "b_error/b_error.h" ++#include "b_radar/b_radar.h" + #include "b_resources/b_constants.h" + #include "b_session_restore.h" + #include "filemgmt_libhilog.h" +@@ -63,6 +64,10 @@ shared_ptr BSessionRestoreAsync::Init(Callbacks callbacks) + int32_t res = proxy->InitRestoreSession(sptr(new ServiceReverse(callbacksTmp))); + if (res != 0) { + HILOGE("Failed to Restore because of %{public}d", res); ++ AppRadar::Info info ("", "", "create restore session failed"); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "BSessionRestoreAsync::Init", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, res); + return nullptr; + } + +diff --git a/frameworks/native/backup_kit_inner/src/service_proxy.cpp b/frameworks/native/backup_kit_inner/src/service_proxy.cpp +index c69565aa..82350dfe 100644 +--- a/frameworks/native/backup_kit_inner/src/service_proxy.cpp ++++ b/frameworks/native/backup_kit_inner/src/service_proxy.cpp +@@ -13,15 +13,16 @@ + * limitations under the License. + */ + +-#include "service_proxy.h" +- +-#include "iservice_registry.h" +-#include "system_ability_definition.h" ++#include + + #include "b_error/b_error.h" + #include "b_error/b_excep_utils.h" ++#include "b_radar/b_radar.h" + #include "b_resources/b_constants.h" + #include "filemgmt_libhilog.h" ++#include "iservice_registry.h" ++#include "service_proxy.h" ++#include "system_ability_definition.h" + #include "svc_death_recipient.h" + #include "hitrace_meter.h" + +@@ -119,6 +120,9 @@ UniqueFd ServiceProxy::GetLocalCapabilities() + static_cast(IServiceInterfaceCode::SERVICE_CMD_GET_LOCAL_CAPABILITIES), data, reply, option); + if (ret != NO_ERROR) { + HILOGE("Received error %{public}d when doing IPC", ret); ++ AppRadar::Info resInfo("", "", ""); ++ AppRadar::GetInstance().RecordDefaultFuncRes(resInfo, "ServiceProxy::GetLocalCapabilities", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_GET_LOCAL_CAPABILITIES_FAIL, ret); + return UniqueFd(-ret); + } + UniqueFd fd(reply.ReadFileDescriptor()); +@@ -297,6 +301,13 @@ ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, const vector(IServiceInterfaceCode::SERVICE_CMD_APPEND_BUNDLES_RESTORE_SESSION), data, reply, option); + if (ret != NO_ERROR) { + string str = "Failed to send out the request because of " + to_string(ret); ++ std::string ss; ++ for (const auto &bundleName : bundleNames) { ++ ss += bundleName + ", "; ++ } ++ AppRadar::Info info(ss.c_str(), "", str); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "ServiceProxy::AppendBundlesRestoreSession", userId, ++ BizStageRestore::BIZ_STAGE_APPEND_BUNDLES_FAIL, ret); + return BError(BError::Codes::SDK_INVAL_ARG, str.data()).GetCode(); + } + return reply.ReadInt32(); +@@ -452,6 +470,10 @@ sptr ServiceProxy::GetInstance() + [loadCallback]() { return loadCallback->isLoadSuccess_.load(); }); + if (!waitStatus) { + HILOGE("Load backup sa timeout"); ++ AppRadar::Info info("", "", "{\"reason\":\"Load backup sa timeout\"}"); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "ServiceProxy::GetInstance", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_BOOT_BACKUP_SA_FAIL, ++ static_cast(BError::Codes::SA_INVAL_ARG)); + return nullptr; + } + return serviceProxy_; +@@ -508,6 +530,10 @@ void ServiceProxy::ServiceProxyLoadCallback::OnLoadSystemAbilityFail(int32_t sys + unique_lock lock(proxyMutex_); + serviceProxy_ = nullptr; + isLoadSuccess_.store(false); ++ AppRadar::Info info("", "", "{\"reason\":\"Load backup sa fail\"}"); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "ServiceProxyLoadCallback::OnLoadSystemAbilityFail", ++ AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_BOOT_BACKUP_SA_FAIL, ++ static_cast(BError::Codes::SA_INVAL_ARG)); + proxyConVar_.notify_one(); + } + +diff --git a/interfaces/inner_api/native/backup_kit_inner/BUILD.gn b/interfaces/inner_api/native/backup_kit_inner/BUILD.gn +index c84d227f..2ee1a876 100644 +--- a/interfaces/inner_api/native/backup_kit_inner/BUILD.gn ++++ b/interfaces/inner_api/native/backup_kit_inner/BUILD.gn +@@ -27,6 +27,7 @@ config("private_config") { + "${path_backup}/frameworks/native/backup_kit_inner/include", + "${path_backup}/interfaces/inner_api/native/backup_kit_inner", + "${path_backup}/interfaces/inner_api/native/backup_kit_inner/impl", ++ "${path_backup}/utils/include", + ] + } + +diff --git a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp +index 25de0559..aac1c3e9 100644 +--- a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp ++++ b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp +@@ -13,16 +13,16 @@ + * limitations under the License. + */ + +-#include "module_app_gallery/app_gallery_dispose_proxy.h" +- + #include + +-#include "message_parcel.h" +-#include "want.h" +- +-#include "module_app_gallery/app_gallery_service_connection.h" +-#include "filemgmt_libhilog.h" ++#include "b_radar/b_radar.h" + #include "b_sa/b_sa_utils.h" ++#include "filemgmt_libhilog.h" ++#include "message_parcel.h" ++ ++#include "module_app_gallery/app_gallery_dispose_proxy.h" ++#include "module_app_gallery/app_gallery_service_connection.h" ++#include "want.h" + + namespace OHOS::FileManagement::Backup { + using namespace std; +@@ -94,6 +94,32 @@ DisposeErr AppGalleryDisposeProxy::EndRestore(const std::string &bundleName) + return DoDispose(bundleName, DisposeOperation::END_RESTORE); + } + ++void RecordDoDisposeRes(const std::string &bundleName, ++ AppGalleryDisposeProxy::DisposeOperation disposeOperation, int32_t err) ++{ ++ AppRadar::Info info (bundleName, "", ""); ++ switch (disposeOperation) { ++ case AppGalleryDisposeProxy::DisposeOperation::START_BACKUP: ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "StartBackup", AppRadar::GetInstance().GetUserId(), ++ BizStageBackup::BIZ_STAGE_START_DISPOSE_FAIL, err); ++ break; ++ case AppGalleryDisposeProxy::DisposeOperation::END_BACKUP: ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "EndBackup", AppRadar::GetInstance().GetUserId(), ++ BizStageBackup::BIZ_STAGE_END_DISPOSE_FAIL, err); ++ break; ++ case AppGalleryDisposeProxy::DisposeOperation::START_RESTORE: ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "StartRestore", AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_START_DISPOSE_FAIL, err); ++ break; ++ case AppGalleryDisposeProxy::DisposeOperation::END_RESTORE: ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "EndRestore", AppRadar::GetInstance().GetUserId(), ++ BizStageRestore::BIZ_STAGE_END_DISPOSE_FAIL, err); ++ break; ++ default: ++ break; ++ } ++} ++ + DisposeErr AppGalleryDisposeProxy::DoDispose(const std::string &bundleName, DisposeOperation disposeOperation) + { + HILOGI("DoDispose, app %{public}s, operation %{public}d", bundleName.c_str(), disposeOperation); +@@ -123,6 +149,7 @@ DisposeErr AppGalleryDisposeProxy::DoDispose(const std::string &bundleName, Disp + int32_t ret = appRemoteObj_->SendRequest(static_cast(disposeOperation), data, reply, option); + if (ret != ERR_NONE) { + HILOGI("SendRequest error, code=%{public}d, bundleName=%{public}s", ret, bundleName.c_str()); ++ RecordDoDisposeRes(bundleName, disposeOperation, ret); + return DisposeErr::REQUEST_FAIL; + } + +diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp +index a4259ae4..1ca394e2 100644 +--- a/services/backup_sa/src/module_ipc/service.cpp ++++ b/services/backup_sa/src/module_ipc/service.cpp +@@ -47,6 +47,7 @@ + #include "b_jsonutil/b_jsonutil.h" + #include "b_ohos/startup/backup_para.h" + #include "b_process/b_multiuser.h" ++#include "b_radar/b_radar.h" + #include "b_resources/b_constants.h" + #include "b_sa/b_sa_utils.h" + #include "bundle_mgr_client.h" +@@ -206,6 +207,15 @@ void Service::StopAll(const wptr &obj, bool force) + session_->Deactive(obj, force); + } + ++static inline void PermissionCheckFailRadar(const std::string &info, const std::string &func) ++{ ++ std::string funcPos = "Service::"; ++ AppRadar::Info resInfo("", "", info); ++ AppRadar::GetInstance().RecordDefaultFuncRes(resInfo, funcPos.append(func), ++ GetUserIdDefault(), BizStageBackup::BIZ_STAGE_PERMISSION_CHECK_FAIL, ++ BError(BError::Codes::SA_REFUSED_ACT).GetCode()); ++} ++ + string Service::VerifyCallerAndGetCallerName() + { + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); +@@ -214,6 +224,7 @@ string Service::VerifyCallerAndGetCallerName() + if (tokenType == Security::AccessToken::ATokenTypeEnum::TOKEN_HAP) { + Security::AccessToken::HapTokenInfo hapTokenInfo; + if (Security::AccessToken::AccessTokenKit::GetHapTokenInfo(tokenCaller, hapTokenInfo) != 0) { ++ PermissionCheckFailRadar("Get hap token info failed", "VerifyCallerAndGetCallerName"); + throw BError(BError::Codes::SA_INVAL_ARG, "Get hap token info failed"); + } + std::string bundleNameIndexInfo = BJsonUtil::BuildBundleNameIndexInfo(hapTokenInfo.bundleName, +@@ -223,6 +234,8 @@ string Service::VerifyCallerAndGetCallerName() + } else { + string str = to_string(tokenCaller); + HILOGE("tokenID = %{private}s", GetAnonyString(str).c_str()); ++ std::string info = string("Invalid token type").append(to_string(tokenType)).append(string("\"}")); ++ PermissionCheckFailRadar(info, "VerifyCallerAndGetCallerName"); + throw BError(BError::Codes::SA_INVAL_ARG, string("Invalid token type ").append(to_string(tokenType))); + } + } +@@ -236,6 +249,8 @@ void Service::VerifyCaller() + case Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE: { /* Update Service */ + if (Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenCaller, BACKUP_PERMISSION) != + Security::AccessToken::PermissionState::PERMISSION_GRANTED) { ++ std::string info = "Permission denied, token type is " + to_string(tokenType); ++ PermissionCheckFailRadar(info, "VerifyCaller"); + throw BError(BError::Codes::SA_REFUSED_ACT, + string("Permission denied, token type is ").append(to_string(tokenType))); + } +@@ -244,11 +259,15 @@ void Service::VerifyCaller() + case Security::AccessToken::ATokenTypeEnum::TOKEN_HAP: { + if (Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenCaller, BACKUP_PERMISSION) != + Security::AccessToken::PermissionState::PERMISSION_GRANTED) { ++ std::string info = "Permission denied, token type is " + to_string(tokenType); ++ PermissionCheckFailRadar(info, "VerifyCaller"); + throw BError(BError::Codes::SA_REFUSED_ACT, + string("Permission denied, token type is ").append(to_string(tokenType))); + } + uint64_t fullTokenId = OHOS::IPCSkeleton::GetCallingFullTokenID(); + if (!Security::AccessToken::TokenIdKit::IsSystemAppByFullTokenID(fullTokenId)) { ++ std::string info = "Permission denied, token type is " + to_string(tokenType); ++ PermissionCheckFailRadar(info, "VerifyCaller"); + throw BError(BError::Codes::SA_REFUSED_ACT, + string("Permission denied, token type is ").append(to_string(tokenType))); + } +@@ -256,10 +275,14 @@ void Service::VerifyCaller() + } + case Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL: + if (IPCSkeleton::GetCallingUid() != BConstants::SYSTEM_UID) { ++ std::string info = "invalid calling uid"; ++ PermissionCheckFailRadar(info, "VerifyCaller"); + throw BError(BError::Codes::SA_REFUSED_ACT, "Calling uid is invalid"); + } + break; + default: ++ std::string info = "Permission denied, token type is " + to_string(tokenType); ++ PermissionCheckFailRadar(info, "VerifyCaller"); + throw BError(BError::Codes::SA_REFUSED_ACT, string("Invalid token type ").append(to_string(tokenType))); + break; + } +@@ -1011,11 +1034,19 @@ ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) + auto backUpConnection = session_->GetExtConnection(bundleName); + if (backUpConnection == nullptr) { + HILOGE("GetFileHandle error, backUpConnection is empty"); ++ AppRadar::Info info (bundleName, "", "backUpConnection is empty"); ++ int32_t err = BError(BError::Codes::SA_INVAL_ARG).GetCode(); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::GetFileHandle", GetUserIdDefault(), ++ BizStageRestore::BIZ_STAGE_GET_FILE_HANDLE_FAIL, err); + return BError(BError::Codes::SA_INVAL_ARG); + } + auto proxy = backUpConnection->GetBackupExtProxy(); + if (!proxy) { + HILOGE("GetFileHandle error, Extension backup Proxy is empty"); ++ AppRadar::Info info (bundleName, "", "Extension backup Proxy is empty"); ++ int32_t err = BError(BError::Codes::SA_INVAL_ARG).GetCode(); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::GetFileHandle", GetUserIdDefault(), ++ BizStageRestore::BIZ_STAGE_GET_FILE_HANDLE_FAIL, err); + return BError(BError::Codes::SA_INVAL_ARG); + } + int32_t errCode = 0; +@@ -1039,6 +1070,15 @@ ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) + void Service::OnBackupExtensionDied(const string &&bundleName) + { + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); ++ int32_t errCode = BError(BError::Codes::EXT_ABILITY_DIED).GetCode(); ++ AppRadar::Info info (bundleName, "", ""); ++ if (session_->GetScenario() == IServiceReverse::Scenario::BACKUP) { ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "Service::OnBackupExtensionDied", GetUserIdDefault(), ++ BizStageBackup::BIZ_STAGE_EXTENSION_ABNORMAL_EXIT, errCode); ++ } else if (session_->GetScenario() == IServiceReverse::Scenario::RESTORE) { ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::OnBackupExtensionDied", GetUserIdDefault(), ++ BizStageRestore::BIZ_STAGE_EXTENSION_ABNORMAL_EXIT, errCode); ++ } + try { + string callName = move(bundleName); + HILOGE("Backup <%{public}s> Extension Process Died", callName.c_str()); +@@ -1150,6 +1190,14 @@ void Service::ExtConnectFailed(const string &bundleName, ErrCode ret) + try { + HILOGE("begin %{public}s", bundleName.data()); + IServiceReverse::Scenario scenario = session_->GetScenario(); ++ AppRadar::Info info (bundleName, "", ""); ++ if (scenario == IServiceReverse::Scenario::BACKUP) { ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "Service::ExtConnectFailed", GetUserIdDefault(), ++ BizStageBackup::BIZ_STAGE_CONNECT_EXTENSION_FAIL, ret); ++ } else if (scenario == IServiceReverse::Scenario::RESTORE) { ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::ExtConnectFailed", GetUserIdDefault(), ++ BizStageRestore::BIZ_STAGE_CONNECT_EXTENSION_FAIL, ret); ++ } + if (scenario == IServiceReverse::Scenario::BACKUP && session_->GetIsIncrementalBackup()) { + session_->GetServiceReverseProxy()->IncrementalBackupOnBundleStarted(ret, bundleName); + } else if (scenario == IServiceReverse::Scenario::RESTORE && +@@ -1581,6 +1629,9 @@ ErrCode Service::GetBackupInfoCmdHandle(BundleName &bundleName, std::string &res + backupConnection->DisconnectBackupExtAbility(); + if (ret != ERR_OK) { + HILOGE("Call Ext GetBackupInfo faild."); ++ AppRadar::Info info(bundleName, "", "Call Ext GetBackupInfo faild"); ++ Backup::AppRadar::GetInstance().RecordBackupFuncRes(info, "Service::GetBackupInfoCmdHandle", GetUserIdDefault(), ++ BizStageBackup::BIZ_STAGE_GET_BACKUP_INFO_FAIL, ret); + return BError(BError::Codes::SA_INVAL_ARG); + } + +@@ -1924,6 +1975,17 @@ std::function Service::TimeOutCallback(wptr ptr, std::string bu + HILOGE("SessionPtr is nullptr."); + return; + } ++ IServiceReverse::Scenario scenario = sessionPtr->GetScenario(); ++ int32_t errCode = BError(BError::Codes::EXT_ABILITY_TIMEOUT).GetCode(); ++ if (scenario == IServiceReverse::Scenario::BACKUP) { ++ AppRadar::Info info (bundleName, "", "on backup timeout"); ++ AppRadar::GetInstance().RecordBackupFuncRes(info, "Service::TimeOutCallback", GetUserIdDefault(), ++ BizStageBackup::BIZ_STAGE_ON_BACKUP, errCode); ++ } else if (scenario == IServiceReverse::Scenario::RESTORE) { ++ AppRadar::Info info (bundleName, "", "on restore timeout"); ++ AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::TimeOutCallback", GetUserIdDefault(), ++ BizStageRestore::BIZ_STAGE_ON_RESTORE, errCode); ++ } + try { + if (SAUtils::IsSABundleName(bundleName)) { + auto sessionConnection = sessionPtr->GetSAExtConnection(bundleName); +diff --git a/services/backup_sa/src/module_ipc/svc_session_manager.cpp b/services/backup_sa/src/module_ipc/svc_session_manager.cpp +index d9b350d5..67a7b9e4 100644 +--- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp ++++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp +@@ -26,6 +26,7 @@ + #include "b_file_info.h" + #include "b_json/b_json_entity_caps.h" + #include "b_json/b_json_entity_ext_manage.h" ++#include "b_radar/b_radar.h" + #include "b_resources/b_constants.h" + #include "b_sa/b_sa_utils.h" + #include "b_utils/b_time.h" +@@ -42,9 +43,17 @@ void SvcSessionManager::VerifyCallerAndScenario(uint32_t clientToken, IServiceRe + shared_lock lock(lock_); + if (impl_.scenario != scenario) { + HILOGE("Inconsistent scenario, impl scenario:%{public}d", impl_.scenario); ++ AppRadar::Info info("", "", "Inconsistent scenario"); ++ AppRadar::GetInstance().RecordDefaultFuncRes(info, "SvcSessionManager::VerifyCallerAndScenario", impl_.userId, ++ BizStageBackup::BIZ_STAGE_PERMISSION_CHECK_FAIL, ++ BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode()); + throw BError(BError::Codes::SDK_MIXED_SCENARIO); + } + if (impl_.clientToken != clientToken) { ++ AppRadar::Info info2("", "", "Caller mismatched"); ++ AppRadar::GetInstance().RecordDefaultFuncRes(info2, "SvcSessionManager::VerifyCallerAndScenario", impl_.userId, ++ BizStageBackup::BIZ_STAGE_PERMISSION_CHECK_FAIL, ++ BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode()); + throw BError(BError::Codes::SA_REFUSED_ACT, "Caller mismatched"); + } + HILOGD("Succeed to verify the caller"); +@@ -358,6 +367,11 @@ void SvcSessionManager::InitClient(Impl &newImpl) + HILOGW("It's curious that the backup sa dies before the backup client"); + return; + } ++ AppRadar::Info info ("", "", "client died"); ++ AppRadar::GetInstance().RecordDefaultFuncRes(info, "SvcSessionManager::InitClient", ++ AppRadar::GetInstance().GetUserId(), ++ BizStageBackup::BIZ_STAGE_CLIENT_ABNORMAL_EXIT, ++ BError(BError::Codes::SA_BROKEN_IPC).GetCode()); + (void)revPtrStrong->SessionDeactive(); + }; + deathRecipient_ = sptr(new SvcDeathRecipient(callback)); +diff --git a/utils/include/b_radar/b_radar.h b/utils/include/b_radar/b_radar.h +index fc87dca3..b386a57c 100644 +--- a/utils/include/b_radar/b_radar.h ++++ b/utils/include/b_radar/b_radar.h +@@ -21,38 +21,38 @@ + namespace OHOS::FileManagement::Backup { + enum class BizStageBackup : int32_t { + BIZ_STAGE_DEFAULT = 0, +- BIZ_STAGE_BACKUP_SA, +- BIZ_STAGE_GET_LOCAL_CAPABILITIES, +- BIZ_STAGE_CREATE_SESSION_BACKUP, +- BIZ_STAGE_APPEND_BUNDLES, +- BIZ_STAGE_BACKUP_EXTENSION, +- BIZ_STAGE_APPLICATION, +- BIZ_STAGE_EXTENSION_STATUS, +- BIZ_STAGE_GET_BACKUP_INFO, ++ BIZ_STAGE_BOOT_BACKUP_SA_FAIL, ++ BIZ_STAGE_GET_LOCAL_CAPABILITIES_FAIL, ++ BIZ_STAGE_CREATE_BACKUP_SESSION_FAIL, ++ BIZ_STAGE_APPEND_BUNDLES_FAIL, ++ BIZ_STAGE_CONNECT_EXTENSION_FAIL, ++ BIZ_STAGE_START_DISPOSE_FAIL, ++ BIZ_STAGE_EXTENSION_ABNORMAL_EXIT, ++ BIZ_STAGE_GET_BACKUP_INFO_FAIL, + BIZ_STAGE_ON_BACKUP, + BIZ_STAGE_DO_BACKUP, +- BIZ_STAGE_DATA_CONSISTENCY, +- BIZ_STAGE_STATUS_CLEAR, +- BIZ_STAGE_CLIENT_STATUS, +- BIZ_STAGE_PERMISSION_CHECK ++ BIZ_STAGE_CHECK_DATA_FAIL, ++ BIZ_STAGE_END_DISPOSE_FAIL, ++ BIZ_STAGE_CLIENT_ABNORMAL_EXIT, ++ BIZ_STAGE_PERMISSION_CHECK_FAIL + }; + + enum class BizStageRestore : int32_t { + BIZ_STAGE_DEFAULT = 0, +- BIZ_STAGE_BACKUP_SA, +- BIZ_STAGE_GET_LOCAL_CAPABILITIES, +- BIZ_STAGE_CREATE_SESSION_RESTORE, +- BIZ_STAGE_APPEND_BUNDLES, +- BIZ_STAGE_CONNECT_BACKUP_EXTENSION, +- BIZ_STAGE_APPLICATION, +- BIZ_STAGE_EXTENSION_STATUS, +- BIZ_STAGE_GET_FILE_HANDLE, ++ BIZ_STAGE_BOOT_BACKUP_SA_FAIL, ++ BIZ_STAGE_GET_LOCAL_CAPABILITIES_FAIL, ++ BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, ++ BIZ_STAGE_APPEND_BUNDLES_FAIL, ++ BIZ_STAGE_CONNECT_EXTENSION_FAIL, ++ BIZ_STAGE_START_DISPOSE_FAIL, ++ BIZ_STAGE_EXTENSION_ABNORMAL_EXIT, ++ BIZ_STAGE_GET_FILE_HANDLE_FAIL, + BIZ_STAGE_DO_RESTORE, +- BIZ_STAGE_DATA_CONSISTENCY, +- BIZ_STAGE_EXEC_ON_RESTORE, +- BIZ_STAGE_STATUS_CLEAR, +- BIZ_STAGE_CLIENT_STATUS, +- BIZ_STAGE_PERMISSION_CHECK ++ BIZ_STAGE_CHECK_DATA_FAIL, ++ BIZ_STAGE_ON_RESTORE, ++ BIZ_STAGE_END_DISPOSE_FAIL, ++ BIZ_STAGE_CLIENT_ABNORMAL_EXIT, ++ BIZ_STAGE_PERMISSION_CHECK_FAIL + }; + + class AppRadar { +diff --git a/utils/src/b_radar/b_radar.cpp b/utils/src/b_radar/b_radar.cpp +index 71bb632f..0b91ae57 100644 +--- a/utils/src/b_radar/b_radar.cpp ++++ b/utils/src/b_radar/b_radar.cpp +@@ -15,6 +15,7 @@ + + #include + #include ++#include + #include + + #include "b_process/b_multiuser.h" +@@ -22,6 +23,7 @@ + #include "b_resources/b_constants.h" + #include "b_utils/b_time.h" + #include "hisysevent.h" ++#include "i_service_reverse.h" + + namespace OHOS::FileManagement::Backup { + int32_t AppRadar::GetUserId() +@@ -36,6 +38,8 @@ int32_t AppRadar::GetUserId() + void AppRadar::RecordDefaultFuncRes(Info &info, const std::string &func, int32_t userId, + enum BizStageBackup bizStage, int32_t resultCode) + { ++ std::stringstream ss; ++ ss << "\"result_info\": {" << info.resInfo << "}"; + HiSysEventWrite( + OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT, + BConstants::FILE_BACKUP_RESTORE_EVENTS, +@@ -45,16 +49,18 @@ void AppRadar::RecordDefaultFuncRes(Info &info, const std::string &func, int32_t + "PID", getpid(), + "FUNC", func, + "TIME", TimeUtils::GetCurrentTime(), +- "BIZ_SCENE", static_cast(BConstants::ExtensionAction::INVALID), ++ "BIZ_SCENE", static_cast(IServiceReverse::Scenario::UNDEFINED), + "BIZ_STAGE", static_cast(bizStage), + "EXEC_STATUS", info.status, + "RESULT_CODE", resultCode, +- "RESULT_INFO", info.resInfo); ++ "RESULT_INFO", ss.str()); + } + + void AppRadar::RecordBackupFuncRes(Info &info, const std::string &func, int32_t userId, + enum BizStageBackup bizStage, int32_t resultCode) + { ++ std::stringstream ss; ++ ss << "\"result_info\": {" << info.resInfo << "}"; + HiSysEventWrite( + OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT, + BConstants::FILE_BACKUP_RESTORE_EVENTS, +@@ -64,16 +70,18 @@ void AppRadar::RecordBackupFuncRes(Info &info, const std::string &func, int32_t + "PID", getpid(), + "FUNC", func, + "TIME", TimeUtils::GetCurrentTime(), +- "BIZ_SCENE", static_cast(BConstants::ExtensionAction::BACKUP), ++ "BIZ_SCENE", static_cast(IServiceReverse::Scenario::BACKUP), + "BIZ_STAGE", static_cast(bizStage), + "EXEC_STATUS", info.status, + "RESULT_CODE", resultCode, +- "RESULT_INFO", info.resInfo); ++ "RESULT_INFO", ss.str()); + } + + void AppRadar::RecordRestoreFuncRes(Info &info, const std::string &func, int32_t userId, + enum BizStageRestore bizStage, int32_t resultCode) + { ++ std::stringstream ss; ++ ss << "\"result_info\": {" << info.resInfo << "}"; + HiSysEventWrite( + OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT, + BConstants::FILE_BACKUP_RESTORE_EVENTS, +@@ -83,10 +91,10 @@ void AppRadar::RecordRestoreFuncRes(Info &info, const std::string &func, int32_t + "PID", getpid(), + "FUNC", func, + "TIME", TimeUtils::GetCurrentTime(), +- "BIZ_SCENE", static_cast(BConstants::ExtensionAction::RESTORE), ++ "BIZ_SCENE", static_cast(IServiceReverse::Scenario::RESTORE), + "BIZ_STAGE", static_cast(bizStage), + "EXEC_STATUS", info.status, + "RESULT_CODE", resultCode, +- "RESULT_INFO", info.resInfo); ++ "RESULT_INFO", ss.str()); + } + } // namespace OHOS::FileManagement::Backup +\ No newline at end of file +-- +2.45.2.huawei.5 -group("unittest") { - testonly = true - deps = [ - "file_permission_native:file_permission_test", - "file_share_native:file_share_test", - "file_share_ndk_test:unittest", - "file_uri_native:file_uri_test", - "file_uri_ndk_test:file_uri_ndk_test", - "js_file_permission_test:unittest", - "js_file_uri_test:FileUriTest", - "remote_file_share:remote_file_share_test", - "resource/bundle_dependencies/fileShareA:filesharea", - "resource/bundle_dependencies/fileShareB:fileshareb", - ] -} -- Gitee From 391923ac43a98ac2ea5daa155ab4a780be6ee610 Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 06:51:41 +0000 Subject: [PATCH 02/37] update tests/unittests/backup_api/backup_impl/service_proxy_test.cpp. Signed-off-by: chensihan --- .../backup_impl/service_proxy_test.cpp | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp index 9e005df20..68ac5819f 100644 --- a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp +++ b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp @@ -49,6 +49,60 @@ public: sptr remote_ = nullptr; }; +/** + * @tc.number: SUB_Untar_File_IsValidTarBlock_0200 + * @tc.name: SUB_Untar_File_IsValidTarBlock_0200 + * @tc.desc: 测试 IsValidTarBlock 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(UntarFileSupTest, SUB_Untar_File_IsValidTarBlock_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "UntarFileSupTest-begin SUB_Untar_File_IsValidTarBlock_0200"; + TarHeader header { .magic = "ustar" }; + try { + EXPECT_EQ(UntarFile::GetInstance().IsValidTarBlock(header), false); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "UntarFileSupTest-an exception occurred by IsValidTarBlock."; + } + GTEST_LOG_(INFO) << "UntarFileSupTest-end SUB_Untar_File_IsValidTarBlock_0200"; +} + +/** + * @tc.number: SUB_Untar_File_CheckIfTarBlockValid_0100 + * @tc.name: SUB_Untar_File_CheckIfTarBlockValid_0100 + * @tc.desc: 测试 CheckIfTarBlockValid 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(UntarFileSupTest, SUB_Untar_File_CheckIfTarBlockValid_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "UntarFileSupTest-begin SUB_Untar_File_CheckIfTarBlockValid_0100"; + char buff[BLOCK_SIZE] = {0}; + size_t buffLen = 0; + TarHeader *header {}; + int ret = 0; + try { + EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); + for (int i = 0; i < BLOCK_SIZE; i++) { + buff[i] = 'a' + i % 26; + } + EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); + buffLen = BLOCK_SIZE; + EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "UntarFileSupTest-an exception occurred by CheckIfTarBlockValid."; + } + GTEST_LOG_(INFO) << "UntarFileSupTest-end SUB_Untar_File_CheckIfTarBlockValid_0100"; +} void ServiceProxyTest::SetUp() { mock_ = sptr(new IServiceMock()); -- Gitee From f48567a41c079011faeaca91c83b2d617a3bba53 Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 06:55:13 +0000 Subject: [PATCH 03/37] update tests/unittests/backup_api/backup_impl/service_proxy_test.cpp. Signed-off-by: chensihan --- .../backup_impl/service_proxy_test.cpp | 88 +++++++++++++------ 1 file changed, 60 insertions(+), 28 deletions(-) diff --git a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp index 68ac5819f..f68bcbb27 100644 --- a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp +++ b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp @@ -48,60 +48,92 @@ public: sptr mock_ = nullptr; sptr remote_ = nullptr; }; +/** + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 + * @tc.desc: 测试 BackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0100"; + try { + Init(IServiceReverse::Scenario::BACKUP); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); + service_->RestoreOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0100"; +} /** - * @tc.number: SUB_Untar_File_IsValidTarBlock_0200 - * @tc.name: SUB_Untar_File_IsValidTarBlock_0200 - * @tc.desc: 测试 IsValidTarBlock 接口 + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 + * @tc.desc: 测试 BackupOnProcessInfo 接口 * @tc.size: MEDIUM * @tc.type: FUNC * @tc.level Level 1 * @tc.require: I6F3GV */ -HWTEST_F(UntarFileSupTest, SUB_Untar_File_IsValidTarBlock_0200, testing::ext::TestSize.Level1) +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0101, testing::ext::TestSize.Level1) { - GTEST_LOG_(INFO) << "UntarFileSupTest-begin SUB_Untar_File_IsValidTarBlock_0200"; - TarHeader header { .magic = "ustar" }; + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0101"; try { - EXPECT_EQ(UntarFile::GetInstance().IsValidTarBlock(header), false); - EXPECT_TRUE(true); + Init(IServiceReverse::Scenario::RESTORE); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); } catch (...) { EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "UntarFileSupTest-an exception occurred by IsValidTarBlock."; + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; } - GTEST_LOG_(INFO) << "UntarFileSupTest-end SUB_Untar_File_IsValidTarBlock_0200"; + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0101"; } /** - * @tc.number: SUB_Untar_File_CheckIfTarBlockValid_0100 - * @tc.name: SUB_Untar_File_CheckIfTarBlockValid_0100 - * @tc.desc: 测试 CheckIfTarBlockValid 接口 + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 + * @tc.desc: 测试 BackupOnProcessInfo 接口 * @tc.size: MEDIUM * @tc.type: FUNC * @tc.level Level 1 * @tc.require: I6F3GV */ -HWTEST_F(UntarFileSupTest, SUB_Untar_File_CheckIfTarBlockValid_0100, testing::ext::TestSize.Level1) +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0102, testing::ext::TestSize.Level1) { - GTEST_LOG_(INFO) << "UntarFileSupTest-begin SUB_Untar_File_CheckIfTarBlockValid_0100"; - char buff[BLOCK_SIZE] = {0}; - size_t buffLen = 0; - TarHeader *header {}; - int ret = 0; + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0102"; try { - EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); - for (int i = 0; i < BLOCK_SIZE; i++) { - buff[i] = 'a' + i % 26; + Init(IServiceReverse::Scenario::BACKUP, 1); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 service_ == nullptr"; + return; } - EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); - buffLen = BLOCK_SIZE; - EXPECT_EQ(UntarFile::GetInstance().CheckIfTarBlockValid(buff, buffLen, header, ret), false); - EXPECT_TRUE(true); + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); } catch (...) { EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "UntarFileSupTest-an exception occurred by CheckIfTarBlockValid."; + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; } - GTEST_LOG_(INFO) << "UntarFileSupTest-end SUB_Untar_File_CheckIfTarBlockValid_0100"; + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0102"; } void ServiceProxyTest::SetUp() { -- Gitee From 6de78f1286cc4fec62020169a994849973ee0ca3 Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 06:56:15 +0000 Subject: [PATCH 04/37] update tests/unittests/backup_ext/ext_extension_stub_test.cpp. Signed-off-by: chensihan --- .../backup_ext/ext_extension_stub_test.cpp | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/tests/unittests/backup_ext/ext_extension_stub_test.cpp b/tests/unittests/backup_ext/ext_extension_stub_test.cpp index d552622ee..f1135a6b9 100644 --- a/tests/unittests/backup_ext/ext_extension_stub_test.cpp +++ b/tests/unittests/backup_ext/ext_extension_stub_test.cpp @@ -23,7 +23,93 @@ namespace OHOS::FileManagement::Backup { using namespace std; using namespace testing; +/** + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 + * @tc.desc: 测试 BackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0100"; + try { + Init(IServiceReverse::Scenario::BACKUP); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0100 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); + service_->RestoreOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 + * @tc.desc: 测试 BackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0101"; + try { + Init(IServiceReverse::Scenario::RESTORE); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0101 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0101"; +} +/** + * @tc.number: SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 + * @tc.name: SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 + * @tc.desc: 测试 BackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_BackupOnProcessInfo_0102, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_BackupOnProcessInfo_0102"; + try { + Init(IServiceReverse::Scenario::BACKUP, 1); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_BackupOnProcessInfo_0102 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo = ""; + service_->BackupOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_BackupOnProcessInfo_0102"; +} class ExtExtensionStubMock : public ExtExtensionStub { public: MOCK_METHOD(UniqueFd, GetFileHandle, (const std::string &fileName, int32_t &errCode)); -- Gitee From 39c25124fe44ecc9b2832816577e92d79e94c471 Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 07:00:20 +0000 Subject: [PATCH 05/37] update tests/unittests/backup_ext/ext_extension_stub_test.cpp. Signed-off-by: chensihan --- .../backup_ext/ext_extension_stub_test.cpp | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/tests/unittests/backup_ext/ext_extension_stub_test.cpp b/tests/unittests/backup_ext/ext_extension_stub_test.cpp index f1135a6b9..916da918f 100644 --- a/tests/unittests/backup_ext/ext_extension_stub_test.cpp +++ b/tests/unittests/backup_ext/ext_extension_stub_test.cpp @@ -20,6 +20,135 @@ #include "ext_extension_stub.h" #include "message_parcel_mock.h" +/** + * @tc.number: SUB_Service_proxy_ReportAppProcessInfo_0100 + * @tc.name: SUB_Service_proxy_ReportAppProcessInfo_0100 + * @tc.desc: 测试 ReportAppProcessInfo 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_ReportAppProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_ReportAppProcessInfo_0100"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_ReportAppProcessInfo_0100 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(4) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)); + string processInfo = ""; + int32_t result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_RESTORE); + EXPECT_EQ(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_RESTORE); + EXPECT_EQ(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_BACKUP); + EXPECT_EQ(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_BACKUP); + EXPECT_EQ(result, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_ReportAppProcessInfo_0100"; +} + +/** + * @tc.number: SUB_Service_proxy_ReportAppProcessInfo_0101 + * @tc.name: SUB_Service_proxy_ReportAppProcessInfo_0101 + * @tc.desc: 测试 ReportAppProcessInfo 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_ReportAppProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_ReportAppProcessInfo_0101"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_ReportAppProcessInfo_0101 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(4) + .WillOnce(Return(EPERM)) + .WillOnce(Return(EPERM)) + .WillOnce(Return(EPERM)) + .WillOnce(Return(EPERM)); + string processInfo = ""; + int32_t result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_RESTORE); + EXPECT_NE(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_RESTORE); + EXPECT_NE(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_BACKUP); + EXPECT_NE(result, BError(BError::Codes::OK)); + + result = proxy_->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_BACKUP); + EXPECT_NE(result, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_ReportAppProcessInfo_0101"; +} + +/** + * @tc.number: SUB_Service_proxy_StartExtTimer_0100 + * @tc.name: SUB_Service_proxy_StartExtTimer_0100 + * @tc.desc: 测试 StartExtTimer 执行DoBackup的接口成功和失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_StartExtTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_StartExtTimer_0100"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_StartExtTimer_0100 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(2) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Return(EPERM)); + bool isExtStart; + int32_t ret = proxy_->StartExtTimer(isExtStart); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + ret = proxy_->StartExtTimer(isExtStart); + EXPECT_NE(ret, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_StartExtTimer_0100"; +} + +/** + * @tc.number: SUB_Service_proxy_StartFwkTimer_0100 + * @tc.name: SUB_Service_proxy_StartFwkTimer_0100 + * @tc.desc: 测试 StartFwkTimer 执行DoBackup的接口成功和失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_StartFwkTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_StartFwkTimer_0100"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_StartFwkTimer_0100 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(2) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Return(EPERM)); + bool isFwkStart; + int32_t ret = proxy_->StartFwkTimer(isFwkStart); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + ret = proxy_->StartFwkTimer(isFwkStart); + EXPECT_NE(ret, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_StartFwkTimer_0100"; +} namespace OHOS::FileManagement::Backup { using namespace std; using namespace testing; -- Gitee From be91b49cfa01f5c4bcd29d31b5171186f25656c0 Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 07:03:14 +0000 Subject: [PATCH 06/37] update tests/unittests/backup_ext/ext_extension_stub_test.cpp. Signed-off-by: chensihan --- .../backup_ext/ext_extension_stub_test.cpp | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/unittests/backup_ext/ext_extension_stub_test.cpp b/tests/unittests/backup_ext/ext_extension_stub_test.cpp index 916da918f..8c8046f03 100644 --- a/tests/unittests/backup_ext/ext_extension_stub_test.cpp +++ b/tests/unittests/backup_ext/ext_extension_stub_test.cpp @@ -19,6 +19,60 @@ #include "b_error/b_error.h" #include "ext_extension_stub.h" #include "message_parcel_mock.h" +/** + * @tc.number: b_jsonutil_BuildRestoreErrInfo_0200 + * @tc.name: b_jsonutil_BuildRestoreErrInfo_0200 + * @tc.desc: Test function of BuildRestoreErrInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildRestoreErrInfo_0200, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildRestoreErrInfo_0200"; + try { + std::string jsonStr; + std::map> errFileInfo = {{"test", {1, 1}}}; + + bool result = BJsonUtil::BuildRestoreErrInfo(jsonStr, errFileInfo); + EXPECT_EQ(true, result); + EXPECT_NE(jsonStr.find("errorCode"), std::string::npos); + EXPECT_NE(jsonStr.find("errorInfo"), std::string::npos); + EXPECT_NE(jsonStr.find("type"), std::string::npos); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildRestoreErrInfo_0200"; +} + +/** + * @tc.number: b_jsonutil_BuildOnProcessRetInfo_0100 + * @tc.name: b_jsonutil_BuildOnProcessRetInfo_0100 + * @tc.desc: Test function of BuildOnProcessRetInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildOnProcessRetInfo_0100, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildOnProcessRetInfo_0100"; + try { + std::string jsonStr; + std::string onProcessRet = "test result"; + + bool result = BJsonUtil::BuildOnProcessRetInfo(jsonStr, onProcessRet); + EXPECT_EQ(true, result); + EXPECT_NE(jsonStr.find("timeInfo"), std::string::npos); + EXPECT_NE(jsonStr.find("resultInfo"), std::string::npos); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildOnProcessRetInfo_0100"; +} /** * @tc.number: SUB_Service_proxy_ReportAppProcessInfo_0100 -- Gitee From c51dfec790e8f71796fc09388dc8d9a800ee067e Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 3 Sep 2024 07:05:14 +0000 Subject: [PATCH 07/37] update tests/unittests/backup_ext/ext_extension_stub_test.cpp. Signed-off-by: chensihan --- .../backup_ext/ext_extension_stub_test.cpp | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/unittests/backup_ext/ext_extension_stub_test.cpp b/tests/unittests/backup_ext/ext_extension_stub_test.cpp index 8c8046f03..7664cd669 100644 --- a/tests/unittests/backup_ext/ext_extension_stub_test.cpp +++ b/tests/unittests/backup_ext/ext_extension_stub_test.cpp @@ -13,6 +13,39 @@ * limitations under the License. */ + /** + * @tc.number: SUB_backup_b_session_restore_1000 + * @tc.name: SUB_backup_b_session_restore_1000 + * @tc.desc: 测试Release接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BSessionRestoreTest, SUB_backup_b_session_restore_1000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BSessionRestoreTest-begin SUB_backup_b_session_restore_1000"; + try { + if (restorePtr_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_backup_b_session_restore_1000 restorePtr_ == nullptr"; + return; + } + GTEST_LOG_(INFO) << "GetInstance is false"; + SetMockGetInstance(false); + auto ret = restorePtr_->Release(); + EXPECT_NE(ret, ErrCode(BError::Codes::OK)); + + GTEST_LOG_(INFO) << "GetInstance is true"; + SetMockGetInstance(true); + ret = restorePtr_->Release(); + EXPECT_EQ(ret, ErrCode(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BSessionRestoreTest-an exception occurred by Finish."; + } + GTEST_LOG_(INFO) << "BSessionRestoreTest-end SUB_backup_b_session_restore_1000"; +} + #include #include -- Gitee From fac7901cbc049aef01fb41dcb3214526fcc86486 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 4 Sep 2024 07:47:12 +0000 Subject: [PATCH 08/37] update tests/unittests/backup_api/backup_impl/b_file_info_test.cpp. Signed-off-by: chensihan --- .../backup_impl/b_file_info_test.cpp | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp index 283508801..a5a204200 100644 --- a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp +++ b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp @@ -13,6 +13,131 @@ * limitations under the License. */ +/** + * @tc.number: SUB_backup_b_report_entity_GetStorageReportInfos_0100 + * @tc.name: b_report_entity_GetStorageReportInfos_0100 + * @tc.desc: Test function of GetStorageReportInfos interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + */ +HWTEST_F(BReportEntityTest, b_report_entity_GetStorageReportInfos_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BReportEntityTest-begin b_report_entity_GetStorageReportInfos_0100"; + try { + string fileName = "/a.txt"; + string mode = "0644"; + string isDir = "0"; + string size = "1"; + string mtime = "1501927260"; + string hash = "ASDasadSDASDA"; + + string content = "version=1.0&attrNum=6\r\npath;mode;dir;size;mtime;hash\r\n"; + content += fileName + ";" + mode + ";" + isDir + ";" + size + ";" + mtime + ";" + hash; + TestManager tm(__func__); + const auto [filePath, res] = GetTestFile(tm, content); + BReportEntity cloudRp(UniqueFd(open(filePath.data(), O_RDONLY, 0))); + + struct ReportFileInfo fileStat = {}; + vector splits = {"/test", "0", "0", "0", "0", "0", "0"}; + unordered_map keys; + keys.emplace(INFO_MODE, 0); + keys.emplace(INFO_DIR, 1); + keys.emplace(INFO_SIZE, 2); + keys.emplace(INFO_MTIME, 3); + keys.emplace(INFO_HASH, 4); + keys.emplace(INFO_IS_INCREMENTAL, 5); + auto err = ParseReportInfo(fileStat, splits, keys); + EXPECT_EQ(err, ERR_OK); + bool ret = cloudRp.GetStorageReportInfos(fileStat); + EXPECT_TRUE(ret); + } catch (const exception &e) { + GTEST_LOG_(INFO) << "BReportEntityTest-an exception occurred by GetStorageReportInfos."; + EXPECT_TRUE(false); + } + GTEST_LOG_(INFO) << "BReportEntityTest-end b_report_entity_GetStorageReportInfos_0100"; +} + +/** + * @tc.number: SUB_backup_b_report_entity_CheckAndUpdateIfReportLineEncoded_0100 + * @tc.name: b_report_entity_CheckAndUpdateIfReportLineEncoded_0100 + * @tc.desc: Test function of CheckAndUpdateIfReportLineEncoded interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + */ +HWTEST_F(BReportEntityTest, b_report_entity_CheckAndUpdateIfReportLineEncoded_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BReportEntityTest-begin b_report_entity_CheckAndUpdateIfReportLineEncoded_0100"; + try { + string fileName = "/a.txt"; + string mode = "0644"; + string isDir = "0"; + string size = "1"; + string mtime = "1501927260"; + string hash = "ASDasadSDASDA"; + + string content = "version=1.0&attrNum=6\r\npath;mode;dir;size;mtime;hash\r\n"; + content += fileName + ";" + mode + ";" + isDir + ";" + size + ";" + mtime + ";" + hash; + TestManager tm(__func__); + const auto [filePath, res] = GetTestFile(tm, content); + BReportEntity cloudRp(UniqueFd(open(filePath.data(), O_RDONLY, 0))); + + std::string path; + cloudRp.CheckAndUpdateIfReportLineEncoded(path); + path = filePath; + cloudRp.CheckAndUpdateIfReportLineEncoded(path); + EXPECT_TRUE(true); + } catch (const exception &e) { + GTEST_LOG_(INFO) << "BReportEntityTest-an exception occurred by CheckAndUpdateIfReportLineEncoded."; + EXPECT_TRUE(false); + } + GTEST_LOG_(INFO) << "BReportEntityTest-end b_report_entity_CheckAndUpdateIfReportLineEncoded_0100"; +} + +/** + * @tc.number: SUB_backup_b_report_entity_EncodeReportItem_0100 + * @tc.name: b_report_entity_EncodeReportItem_0100 + * @tc.desc: Test function of EncodeReportItem interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + */ +HWTEST_F(BReportEntityTest, b_report_entity_EncodeReportItem_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BReportEntityTest-begin b_report_entity_EncodeReportItem_0100"; + try { + string fileName = "/a.txt"; + string mode = "0644"; + string isDir = "0"; + string size = "1"; + string mtime = "1501927260"; + string hash = "ASDasadSDASDA"; + + string content = "version=1.0&attrNum=6\r\npath;mode;dir;size;mtime;hash\r\n"; + content += fileName + ";" + mode + ";" + isDir + ";" + size + ";" + mtime + ";" + hash; + TestManager tm(__func__); + const auto [filePath, res] = GetTestFile(tm, content); + BReportEntity cloudRp(UniqueFd(open(filePath.data(), O_RDONLY, 0))); + + const std::string reportItem = "test"; + bool enableEncode = false; + std::string ret = cloudRp.EncodeReportItem(reportItem, enableEncode); + EXPECT_EQ(ret, reportItem); + ret = cloudRp.DecodeReportItem(reportItem, enableEncode); + EXPECT_EQ(ret, reportItem); + + enableEncode = true; + ret = cloudRp.EncodeReportItem(reportItem, enableEncode); + EXPECT_NE(ret, reportItem); + ret = cloudRp.DecodeReportItem(reportItem, enableEncode); + EXPECT_NE(ret, reportItem); + } catch (const exception &e) { + GTEST_LOG_(INFO) << "BReportEntityTest-an exception occurred by EncodeReportItem. " << e.what(); + EXPECT_TRUE(false); + } + GTEST_LOG_(INFO) << "BReportEntityTest-end b_report_entity_EncodeReportItem_0100"; +} #include #include "b_file_info.h" -- Gitee From eb1791bf0b5220d3d4344c1b19cf35f4cf394278 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 4 Sep 2024 07:52:09 +0000 Subject: [PATCH 09/37] update tests/unittests/backup_api/backup_impl/b_file_info_test.cpp. Signed-off-by: chensihan --- .../backup_impl/b_file_info_test.cpp | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp index a5a204200..d3ae653a3 100644 --- a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp +++ b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp @@ -12,7 +12,46 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +/** + * @tc.name: file_uri_test_00011 + * @tc.desc: Test function of GetPath() interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7LW57 +*/ +HWTEST_F(FileUriTest, File_uri_GetPath_00011, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileUriTest-begin File_uri_GetPath_00011"; + string fileStr = "/data/appdata/el2/base/files/test.txt"; + string bundleB = "com.ohos.dlpmanager"; + string uri = "file://" + bundleB + fileStr; + string rltStr = ""; + FileUri fileUri(uri); + string path = fileUri.GetRealPath(); + EXPECT_EQ(path, rltStr); + GTEST_LOG_(INFO) << "FileUriTest-begin File_uri_GetPath_00011"; +} +/** + * @tc.name: file_uri_test_00012 + * @tc.desc: Test function of GetPath() interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7LW57 +*/ +HWTEST_F(FileUriTest, File_uri_GetPath_00012, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileUriTest-begin File_uri_GetPath_00012"; + string fileStr = "/mnt/data/fuse/1.txt"; + string bundleB = "com.demo.b"; + string uri = "file://" + bundleB + fileStr; + string rltStr = "/mnt/data/fuse/1.txt"; + FileUri fileUri(uri); + string path = fileUri.GetRealPath(); + EXPECT_EQ(path, rltStr); + GTEST_LOG_(INFO) << "FileUriTest-begin File_uri_GetPath_00012"; +} /** * @tc.number: SUB_backup_b_report_entity_GetStorageReportInfos_0100 * @tc.name: b_report_entity_GetStorageReportInfos_0100 -- Gitee From 05a5d532e3361eb8c94085207ebe12c6c1eb527e Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 4 Sep 2024 07:58:49 +0000 Subject: [PATCH 10/37] update tests/unittests/backup_api/backup_impl/b_file_info_test.cpp. Signed-off-by: chensihan --- .../backup_impl/b_file_info_test.cpp | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp index d3ae653a3..b6818fc5b 100644 --- a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp +++ b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp @@ -12,6 +12,96 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** + * @tc.number: SUB_backup_ext_js_InvokeAppExtMethod_0200 + * @tc.name: SUB_backup_ext_js_InvokeAppExtMethod_0200 + * @tc.desc: 测试 InvokeAppExtMethod 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InvokeAppExtMethod_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InvokeAppExtMethod_0200"; + try { + ErrCode errCode = BError(BError::Codes::EXT_INVAL_ARG); + string result = ""; + auto ret = extBackupJs->InvokeAppExtMethod(errCode, result); + EXPECT_EQ(ret, ERR_OK); + + result = "test"; + ret = extBackupJs->InvokeAppExtMethod(errCode, result); + EXPECT_EQ(ret, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by InvokeAppExtMethod."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InvokeAppExtMethod_0200"; +} +/** + * @tc.number: SUB_backup_ext_js_OnProcess_0100 + * @tc.name: SUB_backup_ext_js_OnProcess_0100 + * @tc.desc: 测试 OnProcess 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnProcess_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnProcess_0100"; + try { + extBackupJs->jsObj_ = make_unique(); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto ret = extBackupJs->OnProcess([](ErrCode, std::string){}); + EXPECT_EQ(ret, EINVAL); + + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) { + CallJsParam *param = reinterpret_cast(work->data); + param->retParser(nullptr, nullptr); + return -1; + }))); + ret = extBackupJs->OnProcess([](ErrCode, std::string){}); + EXPECT_EQ(ret, EINVAL); + + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) { + CallJsParam *param = reinterpret_cast(work->data); + param->retParser(nullptr, nullptr); + return -1; + }))); + ret = extBackupJs->OnProcess([](ErrCode, std::string){}); + EXPECT_EQ(ret, EINVAL); + + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_promise(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) { + int value = 0; + CallJsParam *param = reinterpret_cast(work->data); + param->retParser(nullptr, reinterpret_cast(&value)); + return -1; + }))); + ret = extBackupJs->OnProcess([](ErrCode, std::string){}); + EXPECT_EQ(ret, EINVAL); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnProcess_0100"; +} /** * @tc.name: file_uri_test_00011 * @tc.desc: Test function of GetPath() interface for SUCCESS. -- Gitee From 52216082ceeb6f1bf1ae8350426db55a31608b2a Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 4 Sep 2024 08:01:38 +0000 Subject: [PATCH 11/37] update tests/unittests/backup_api/backup_impl/b_file_info_test.cpp. Signed-off-by: chensihan --- .../backup_impl/b_file_info_test.cpp | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp index b6818fc5b..9e62bf208 100644 --- a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp +++ b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp @@ -12,6 +12,65 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + + + /** + * @tc.name: remote_file_share_GetDfsUriFromLocal_0015 + * @tc.desc: Test function of GetDfsUrisFromLocal() interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7KDF7 + */ + HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0015, testing::ext::TestSize.Level1) + { + GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0015"; + const string uriStr = "file://media/Photo/12/IMG_12345_0011/test.jpg"; + const int userId = 100; + HmdfsUriInfo hui; + int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); + EXPECT_NE(ret, E_OK); + + vector uriList; + unordered_map uriToDfsUriMaps; + uriList.push_back(uriStr); + ret = RemoteFileShare::GetDfsUrisFromLocal(uriList, userId, uriToDfsUriMaps); + EXPECT_NE(ret, E_OK); + + GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; + GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; + GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0010"; + } + + /** + * @tc.name: remote_file_share_GetDfsUriFromLocal_0016 + * @tc.desc: Test function of GetDfsUrisFromLocal() interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7KDF7 + */ + HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0016, testing::ext::TestSize.Level1) + { + GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0016"; + const string uriStr = "file://docs/storage/Users/currentUser/Documents/1.txt"; + const int userId = 100; + HmdfsUriInfo hui; + int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); + EXPECT_NE(ret, E_OK); + + vector uriList; + unordered_map uriToDfsUriMaps; + uriList.push_back(uriStr); + ret = RemoteFileShare::GetDfsUrisFromLocal(uriList, userId, uriToDfsUriMaps); + EXPECT_NE(ret, E_OK); + + GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; + GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; + GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0016"; + } + + /** * @tc.number: SUB_backup_ext_js_InvokeAppExtMethod_0200 * @tc.name: SUB_backup_ext_js_InvokeAppExtMethod_0200 -- Gitee From 059d5bce6627d999e4c807c065357671859c9186 Mon Sep 17 00:00:00 2001 From: chensihan Date: Mon, 9 Sep 2024 03:37:18 +0000 Subject: [PATCH 12/37] update tests/utils/src/test_manager.cpp. Signed-off-by: chensihan --- tests/utils/src/test_manager.cpp | 118 +++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/tests/utils/src/test_manager.cpp b/tests/utils/src/test_manager.cpp index 7bf577ec4..97dedd671 100644 --- a/tests/utils/src/test_manager.cpp +++ b/tests/utils/src/test_manager.cpp @@ -21,6 +21,124 @@ namespace OHOS::FileManagement::Backup { using namespace std; +/** + * @tc.number: SUB_Service_proxy_AppendBundlesRestoreSession_0200 + * @tc.name: SUB_Service_proxy_AppendBundlesRestoreSession_0200 + * @tc.desc: 测试 AppendBundlesRestoreSession 获取真实文件调用成功和失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6URNZ + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_AppendBundlesRestoreSession_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_AppendBundlesRestoreSession_0200"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_AppendBundlesRestoreSession_0200 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(2) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Return(EPERM)); + + std::vector bundleNames; + int32_t result = proxy_->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames); + EXPECT_EQ(result, BError(BError::Codes::OK)); + result = proxy_->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames); + EXPECT_NE(result, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_AppendBundlesRestoreSession_0200"; +} + + +/** + * @tc.number: SUB_Service_proxy_PublishSAIncrementalFile_0200 + * @tc.name: SUB_Service_proxy_PublishSAIncrementalFile_0200 + * @tc.desc: 测试 PublishSAIncrementalFile 接口调用成功和失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_PublishSAIncrementalFile_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_PublishSAIncrementalFile_0200"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_PublishSAIncrementalFile_0200 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(2) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Return(EPERM)); + + string bundleName = "com.example.app2backup"; + string fileName = ""; + BFileInfo fileInfo(bundleName, fileName, -1); + ErrCode ret = proxy_->PublishSAIncrementalFile(fileInfo, UniqueFd(-1)); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + ret = proxy_->PublishSAIncrementalFile(fileInfo, UniqueFd(-1)); + EXPECT_NE(ret, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_PublishSAIncrementalFile_0200"; +} + + +/** + * @tc.number: SUB_Service_proxy_AppIncrementalFileReady_0300 + * @tc.name: SUB_Service_proxy_AppIncrementalFileReady_0300 + * @tc.desc: 测试 AppIncrementalFileReady 接口成功和失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I90ZV5 + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_AppIncrementalFileReady_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_AppIncrementalFileReady_0300"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_AppIncrementalFileReady_0300 proxy_ == nullptr"; + return; + } + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(2) + .WillOnce(Invoke(mock_.GetRefPtr(), &IServiceMock::InvokeSendRequest)) + .WillOnce(Return(EPERM)); + + string bundleName = "com.example.app2backup"; + int32_t result = proxy_->AppIncrementalFileReady(bundleName, UniqueFd(-1), UniqueFd(-1), 0); + EXPECT_EQ(result, BError(BError::Codes::OK)); + + result = proxy_->AppIncrementalFileReady(bundleName, UniqueFd(-1), UniqueFd(-1), 0); + EXPECT_NE(result, BError(BError::Codes::OK)); + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_AppIncrementalFileReady_0300"; +} + + +/** + * @tc.number: SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103 + * @tc.name: SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103 + * @tc.desc: 测试 OnLoadSystemAbilitySuccess 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceProxyTest-begin SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103"; + if (proxy_ == nullptr) { + GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103 proxy_ == nullptr"; + return; + } + sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + EXPECT_NE(loadCallback, nullptr); + sptr remoteObject = new MockIRemoteObject(); + loadCallback->OnLoadSystemAbilitySuccess(SERVICE_ID, remoteObject); + loadCallback = nullptr; + GTEST_LOG_(INFO) << "ServiceProxyTest-end SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103"; +} + TestManager::TestManager(std::string functionName) { rootDirCurTest_ = "/data/test/backup/" + functionName + "/"; -- Gitee From baa3a59769b79e2183fb9ba15c8f10a45979323e Mon Sep 17 00:00:00 2001 From: chensihan Date: Mon, 9 Sep 2024 03:41:04 +0000 Subject: [PATCH 13/37] update tests/utils/src/test_manager.cpp. Signed-off-by: chensihan --- tests/utils/src/test_manager.cpp | 191 +++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) diff --git a/tests/utils/src/test_manager.cpp b/tests/utils/src/test_manager.cpp index 97dedd671..7489a41e0 100644 --- a/tests/utils/src/test_manager.cpp +++ b/tests/utils/src/test_manager.cpp @@ -18,6 +18,197 @@ #include "directory_ex.h" #include "test_manager.h" +/** + * @tc.number: SUB_backup_sa_session_StartExtTimer_0100 + * @tc.name: SUB_backup_sa_session_StartExtTimer_0100 + * @tc.desc: 测试 StartExtTimer 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_StartExtTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_StartExtTimer_0100"; + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + auto callback = []() -> void {}; + sessionManagerPtr_->impl_.clientToken = 0; + bool ret = sessionManagerPtr_->StartExtTimer(BUNDLE_NAME, callback); + EXPECT_FALSE(ret); + + BackupExtInfo info; + info.extTimerStatus = false; + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = info; + ret = sessionManagerPtr_->StartExtTimer(BUNDLE_NAME, callback); + EXPECT_TRUE(ret); + ret = sessionManagerPtr_->StopExtTimer(BUNDLE_NAME); + EXPECT_TRUE(ret); + + info.extTimerStatus = true; + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = info; + ret = sessionManagerPtr_->StartExtTimer(BUNDLE_NAME, callback); + EXPECT_FALSE(ret); + ret = sessionManagerPtr_->StopExtTimer(BUNDLE_NAME); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by StartExtTimer."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_StartExtTimer_0100"; +} + +/** + * @tc.number: SUB_backup_sa_session_StopExtTimer_0100 + * @tc.name: SUB_backup_sa_session_StopExtTimer_0100 + * @tc.desc: 测试 StopExtTimer 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_StopExtTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_StopExtTimer_0100"; + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = 0; + bool ret = sessionManagerPtr_->StopExtTimer(BUNDLE_NAME); + EXPECT_FALSE(ret); + + BackupExtInfo info; + info.extTimerStatus = false; + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = info; + ret = sessionManagerPtr_->StopExtTimer(BUNDLE_NAME); + EXPECT_TRUE(ret); + + info.extTimerStatus = true; + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = info; + ret = sessionManagerPtr_->StopExtTimer(BUNDLE_NAME); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by StopExtTimer."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_StopExtTimer_0100"; +} + +/** + * @tc.number: SUB_backup_sa_session_SetClearDataFlag_0100 + * @tc.name: SUB_backup_sa_session_SetClearDataFlag_0100 + * @tc.desc: 测试 SetClearDataFlag + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_SetClearDataFlag_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_SetClearDataFlag_0100"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = 0; + sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, false); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = {}; + sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, false); + EXPECT_EQ(sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME), false); + + sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, true); + EXPECT_EQ(sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME), true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by SetClearDataFlag."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_SetClearDataFlag_0100"; +} + +/** + * @tc.number: SUB_backup_sa_session_GetClearDataFlag_0100 + * @tc.name: SUB_backup_sa_session_GetClearDataFlag_0100 + * @tc.desc: 测试 GetClearDataFlag + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_GetClearDataFlag_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_GetClearDataFlag_0100"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = 0; + sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = {}; + sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, false); + EXPECT_EQ(sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME), false); + + sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, true); + EXPECT_EQ(sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME), true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by GetClearDataFlag."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_GetClearDataFlag_0100"; +} + +/** + * @tc.number: SUB_backup_sa_session_SetPublishFlag_0100 + * @tc.name: SUB_backup_sa_session_SetPublishFlag_0100 + * @tc.desc: 测试 SetPublishFlag + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_SetPublishFlag_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_SetPublishFlag_0100"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = 0; + sessionManagerPtr_->SetPublishFlag(BUNDLE_NAME); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = {}; + sessionManagerPtr_->SetPublishFlag(BUNDLE_NAME); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by SetPublishFlag."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_SetPublishFlag_0100"; +} + namespace OHOS::FileManagement::Backup { using namespace std; -- Gitee From adb56e203f40e14dee857cec038118128f2f8756 Mon Sep 17 00:00:00 2001 From: chensihan Date: Mon, 9 Sep 2024 03:44:13 +0000 Subject: [PATCH 14/37] update tests/utils/src/test_manager.cpp. Signed-off-by: chensihan --- tests/utils/src/test_manager.cpp | 97 ++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/tests/utils/src/test_manager.cpp b/tests/utils/src/test_manager.cpp index 7489a41e0..58aafb5b6 100644 --- a/tests/utils/src/test_manager.cpp +++ b/tests/utils/src/test_manager.cpp @@ -18,6 +18,103 @@ #include "directory_ex.h" #include "test_manager.h" + +/** + * @tc.number: SUB_backup_b_error_GetBackupCodeByErrno_0100 + * @tc.name: b_error_GetBackupCodeByErrno_0100 + * @tc.desc: Test function of int interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BErrorTest, b_error_GetBackupCodeByErrno_0100, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BErrorTest-begin b_error_GetBackupCodeByErrno_0100"; + int err = ERR_OK; + int result = BError::GetBackupCodeByErrno(err); + EXPECT_EQ(result, 0); + GTEST_LOG_(INFO) << "BErrorTest-end b_error_GetBackupCodeByErrno_0100"; +} + +/** + * @tc.number: SUB_backup_b_error_GetBackupCodeByErrno_0200 + * @tc.name: b_error_GetBackupCodeByErrno_0200 + * @tc.desc: Test function of int interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BErrorTest, b_error_GetBackupCodeByErrno_0200, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BErrorTest-begin b_error_GetBackupCodeByErrno_0200"; + int err = BError(BError::Codes::SA_INVAL_ARG).GetCode(); + int result = BError::GetBackupCodeByErrno(err); + EXPECT_EQ(result, BError::BackupErrorCode::E_INVAL); + err = BError(BError::Codes::SA_BROKEN_IPC).GetCode(); + result = BError::GetBackupCodeByErrno(err); + EXPECT_EQ(result, BError::BackupErrorCode::E_IPCSS); + GTEST_LOG_(INFO) << "BErrorTest-end b_error_GetBackupCodeByErrno_0200"; +} + +/** + * @tc.number: SUB_backup_b_error_GetBackupCodeByErrno_0300 + * @tc.name: b_error_GetBackupCodeByErrno_0300 + * @tc.desc: Test function of int interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BErrorTest, b_error_GetBackupCodeByErrno_0300, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BErrorTest-begin b_error_GetBackupCodeByErrno_0300"; + int err = -EPERM; + int result = BError::GetBackupCodeByErrno(err); + EXPECT_EQ(result, BError::BackupErrorCode::E_UKERR); + GTEST_LOG_(INFO) << "BErrorTest-end b_error_GetBackupCodeByErrno_0300"; +} + +/** + * @tc.number: SUB_backup_b_error_GetBackupMsgByErrno_0100 + * @tc.name: b_error_GetBackupMsgByErrno_0100 + * @tc.desc: Test function of int interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BErrorTest, b_error_GetBackupMsgByErrno_0100, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BErrorTest-begin b_error_GetBackupMsgByErrno_0100"; + int err = BError(BError::BackupErrorCode::E_PERM).GetCode(); + std::string result = BError::GetBackupMsgByErrno(err); + EXPECT_EQ(result, BError::backupErrorMsgTable_.at(err)); + err = BError(BError::BackupErrorCode::E_NOMEM).GetCode(); + result = BError::GetBackupMsgByErrno(err); + EXPECT_EQ(result, BError::backupErrorMsgTable_.at(err)); + GTEST_LOG_(INFO) << "BErrorTest-end b_error_GetBackupMsgByErrno_0100"; +} + +/** + * @tc.number: SUB_backup_b_error_GetBackupMsgByErrno_0200 + * @tc.name: b_error_GetBackupMsgByErrno_0200 + * @tc.desc: Test function of int interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BErrorTest, b_error_GetBackupMsgByErrno_0200, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BErrorTest-begin b_error_GetBackupMsgByErrno_0200"; + int err = -EPERM; + std::string result = BError::GetBackupMsgByErrno(err); + EXPECT_EQ(result, BError::backupErrorMsgTable_.at(BError::BackupErrorCode::E_UKERR)); + GTEST_LOG_(INFO) << "BErrorTest-end b_error_GetBackupMsgByErrno_0200"; +} + /** * @tc.number: SUB_backup_sa_session_StartExtTimer_0100 * @tc.name: SUB_backup_sa_session_StartExtTimer_0100 -- Gitee From 7d1a2f7cdea0305fb4a2aa8b71a314028e6c5acc Mon Sep 17 00:00:00 2001 From: chensihan Date: Tue, 10 Sep 2024 03:40:01 +0000 Subject: [PATCH 15/37] update tests/utils/src/test_manager.cpp. Signed-off-by: chensihan --- tests/utils/src/test_manager.cpp | 350 +++++++++++++++++++++++++++++++ 1 file changed, 350 insertions(+) diff --git a/tests/utils/src/test_manager.cpp b/tests/utils/src/test_manager.cpp index 58aafb5b6..1946a4636 100644 --- a/tests/utils/src/test_manager.cpp +++ b/tests/utils/src/test_manager.cpp @@ -17,7 +17,357 @@ #include "directory_ex.h" #include "test_manager.h" +/** + * @tc.number: SUB_ServiceReverse_proxy_BackupOnProcessInfo_0100 + * @tc.name: SUB_ServiceReverse_proxy_BackupOnProcessInfo_0100 + * @tc.desc: Test function of BackupOnProcessInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnProcessInfo_0100"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(1) + .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest)); + EXPECT_TRUE(proxy_ != nullptr); + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + proxy_->BackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_BackupOnProcessInfo_0101 + * @tc.name: SUB_ServiceReverse_proxy_BackupOnProcessInfo_0101 + * @tc.desc: Test function of BackupOnProcessInfo interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->BackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->BackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->BackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1)); + proxy_->BackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnProcessInfo_0101"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0100 + * @tc.name: SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0100 + * @tc.desc: Test function of RestoreOnProcessInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0100"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(1) + .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest)); + EXPECT_TRUE(proxy_ != nullptr); + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + proxy_->RestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by RestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0101 + * @tc.name: SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0101 + * @tc.desc: Test function of RestoreOnProcessInfo interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->RestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->RestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->RestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1)); + proxy_->RestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by RestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_RestoreOnProcessInfo_0101"; +} +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0100 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0100 + * @tc.desc: Test function of IncrementalBackupOnProcessInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0100"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(1) + .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest)); + EXPECT_TRUE(proxy_ != nullptr); + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + proxy_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0101 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0101 + * @tc.desc: Test function of IncrementalBackupOnProcessInfo interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1)); + proxy_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnProcessInfo_0101"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0100 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0100 + * @tc.desc: Test function of IncrementalRestoreOnProcessInfo interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0100"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(1) + .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest)); + EXPECT_TRUE(proxy_ != nullptr); + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + proxy_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalRestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101 + * @tc.desc: Test function of IncrementalRestoreOnProcessInfo interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1)); + proxy_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalRestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101"; +} /** * @tc.number: SUB_backup_b_error_GetBackupCodeByErrno_0100 -- Gitee From b4e5cfcbdd0802468993c5d092b25e044224ee7f Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 11 Sep 2024 07:32:59 +0000 Subject: [PATCH 16/37] update test/unittest/remote_file_share/remote_file_share_test.cpp. Signed-off-by: chensihan --- .../remote_file_share_test.cpp | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/test/unittest/remote_file_share/remote_file_share_test.cpp b/test/unittest/remote_file_share/remote_file_share_test.cpp index 2e338abfa..04539ce27 100644 --- a/test/unittest/remote_file_share/remote_file_share_test.cpp +++ b/test/unittest/remote_file_share/remote_file_share_test.cpp @@ -13,6 +13,114 @@ * limitations under the License. */ +/** + * @tc.number: SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100 + * @tc.name: SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100 + * @tc.desc: Test function of CmdStartExtTimer interface for SUCCESS and FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceStubTest-begin SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100"; + try { + MessageParcel data; + MessageParcel reply; + EXPECT_TRUE(service != nullptr); + EXPECT_CALL(*service, StartExtTimer(_)).WillOnce(Return(-1)); + auto err = service->CmdStartExtTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_BROKEN_IPC)); + + EXPECT_CALL(*service, StartExtTimer(_)).WillOnce(Return(0)); + EXPECT_CALL(*messageParcelMock, WriteBool(_)).WillOnce(Return(false)); + err = service->CmdStartExtTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_BROKEN_IPC)); + + EXPECT_CALL(*service, StartExtTimer(_)).WillOnce(Return(0)); + EXPECT_CALL(*messageParcelMock, WriteBool(_)).WillOnce(Return(true)); + err = service->CmdStartExtTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceStubTest-an exception occurred by CmdStartExtTimer."; + } + GTEST_LOG_(INFO) << "ServiceStubTest-end SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100"; +} + +/** + * @tc.number: SUB_backup_sa_ServiceStub_CmdStartFwkTimer_0100 + * @tc.name: SUB_backup_sa_ServiceStub_CmdStartFwkTimer_0100 + * @tc.desc: Test function of CmdStartFwkTimer interface for SUCCESS and FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_CmdStartFwkTimer_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceStubTest-begin SUB_backup_sa_ServiceStub_CmdStartFwkTimer_0100"; + try { + MessageParcel data; + MessageParcel reply; + EXPECT_TRUE(service != nullptr); + EXPECT_CALL(*service, StartFwkTimer(_)).WillOnce(Return(-1)); + auto err = service->CmdStartFwkTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_BROKEN_IPC)); + + EXPECT_CALL(*service, StartFwkTimer(_)).WillOnce(Return(0)); + EXPECT_CALL(*messageParcelMock, WriteBool(_)).WillOnce(Return(false)); + err = service->CmdStartFwkTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_BROKEN_IPC)); + + EXPECT_CALL(*service, StartFwkTimer(_)).WillOnce(Return(0)); + EXPECT_CALL(*messageParcelMock, WriteBool(_)).WillOnce(Return(true)); + err = service->CmdStartFwkTimer(data, reply); + EXPECT_EQ(err, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceStubTest-an exception occurred by CmdStartFwkTimer."; + } + GTEST_LOG_(INFO) << "ServiceStubTest-end SUB_backup_sa_ServiceStub_CmdStartFwkTimer_0100"; +} + +/** + * @tc.number: SUB_backup_sa_ServiceStub_CmdReportAppProcessInfo_0100 + * @tc.name: SUB_backup_sa_ServiceStub_CmdReportAppProcessInfo_0100 + * @tc.desc: Test function of CmdReportAppProcessInfo interface for SUCCESS and FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_CmdReportAppProcessInfo_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceStubTest-begin SUB_backup_sa_ServiceStub_CmdReportAppProcessInfo_0100"; + try { + MessageParcel data; + MessageParcel reply; + EXPECT_TRUE(service != nullptr); + EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(false)); + auto err = service->CmdReportAppProcessInfo(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_INVAL_ARG)); + + EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(false)); + err = service->CmdReportAppProcessInfo(data, reply); + EXPECT_EQ(err, BError(BError::Codes::SA_INVAL_ARG)); + + EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(true)); + EXPECT_CALL(*service, ReportAppProcessInfo(_, _)).WillOnce(Return(0)); + err = service->CmdReportAppProcessInfo(data, reply); + EXPECT_EQ(err, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceStubTest-an exception occurred by CmdReportAppProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceStubTest-end SUB_backup_sa_ServiceStub_CmdReportAppProcessInfo_0100"; +} #include #include #include -- Gitee From 4edd53e9fa363dc42afd6935d30bbe45d3a24dcf Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 11 Sep 2024 07:34:06 +0000 Subject: [PATCH 17/37] update test/unittest/remote_file_share/remote_file_share_test.cpp. Signed-off-by: chensihan --- .../remote_file_share_test.cpp | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/test/unittest/remote_file_share/remote_file_share_test.cpp b/test/unittest/remote_file_share/remote_file_share_test.cpp index 04539ce27..5c8ff0fe6 100644 --- a/test/unittest/remote_file_share/remote_file_share_test.cpp +++ b/test/unittest/remote_file_share/remote_file_share_test.cpp @@ -12,7 +12,156 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** + * @tc.number: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0100 + * @tc.name: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0100 + * @tc.desc: 测试 CleanAndCheckIfNeedWait + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_CleanAndCheckIfNeedWait_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_CleanAndCheckIfNeedWait_0100"; + try { + ErrCode err; + std::vector bundleNameList; + bundleNameList.push_back(BUNDLE_NAME); + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + + auto ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = {}; + sessionManagerPtr_->impl_.restoreDataType = RestoreTypeEnum::RESTORE_DATA_READDY; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = {}; + sessionManagerPtr_->impl_.restoreDataType = RestoreTypeEnum::RESTORE_DATA_WAIT_SEND; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by CleanAndCheckIfNeedWait."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_CleanAndCheckIfNeedWait_0100"; +} +/** + * @tc.number: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0200 + * @tc.name: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0200 + * @tc.desc: 测试 CleanAndCheckIfNeedWait + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_CleanAndCheckIfNeedWait_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_CleanAndCheckIfNeedWait_0200"; + try { + ErrCode err; + std::vector bundleNameList; + bundleNameList.push_back(BUNDLE_NAME); + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + + BackupExtInfo extInfo {}; + extInfo.schedAction = BConstants::ServiceSchedAction::WAIT; + extInfo.backUpConnection = nullptr; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo; + auto ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + BackupExtInfo extInfo2 {}; + extInfo2.schedAction = BConstants::ServiceSchedAction::RUNNING; + extInfo2.isInPublishFile = true; + extInfo2.backUpConnection = nullptr; + extInfo2.fwkTimerStatus = true; + extInfo2.extTimerStatus = false; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo2; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + BackupExtInfo extInfo3 {}; + extInfo3.schedAction = BConstants::ServiceSchedAction::START; + extInfo3.isInPublishFile = true; + extInfo3.backUpConnection = nullptr; + extInfo3.fwkTimerStatus = true; + extInfo3.extTimerStatus = false; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo3; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by CleanAndCheckIfNeedWait."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_CleanAndCheckIfNeedWait_0200"; +} + +/** + * @tc.number: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0300 + * @tc.name: SUB_backup_sa_session_CleanAndCheckIfNeedWait_0300 + * @tc.desc: 测试 CleanAndCheckIfNeedWait + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_CleanAndCheckIfNeedWait_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_CleanAndCheckIfNeedWait_0300"; + try { + ErrCode err; + std::vector bundleNameList; + bundleNameList.push_back(BUNDLE_NAME); + + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + + BackupExtInfo extInfo {}; + extInfo.schedAction = BConstants::ServiceSchedAction::WAIT; + extInfo.backUpConnection = sptr(new SvcBackupConnection(nullptr, nullptr, BUNDLE_NAME));; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo; + auto ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + BackupExtInfo extInfo2 {}; + extInfo2.schedAction = BConstants::ServiceSchedAction::RUNNING; + extInfo2.isInPublishFile = true; + extInfo2.backUpConnection = sptr(new SvcBackupConnection(nullptr, nullptr, BUNDLE_NAME));; + extInfo2.fwkTimerStatus = true; + extInfo2.extTimerStatus = false; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo2; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + + BackupExtInfo extInfo3 {}; + extInfo3.schedAction = BConstants::ServiceSchedAction::START; + extInfo3.isInPublishFile = true; + extInfo3.backUpConnection = sptr(new SvcBackupConnection(nullptr, nullptr, BUNDLE_NAME));; + extInfo3.fwkTimerStatus = true; + extInfo3.extTimerStatus = false; + sessionManagerPtr_->impl_.backupExtNameMap.clear(); + sessionManagerPtr_->impl_.backupExtNameMap[BUNDLE_NAME] = extInfo3; + ret = sessionManagerPtr_->CleanAndCheckIfNeedWait(err, bundleNameList); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by CleanAndCheckIfNeedWait."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_CleanAndCheckIfNeedWait_0300"; +} /** * @tc.number: SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100 * @tc.name: SUB_backup_sa_ServiceStub_CmdStartExtTimer_0100 -- Gitee From 8b4cf8797d0acf68ceaf8d55621bd5f3bb3e8fae Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 12 Sep 2024 09:23:13 +0000 Subject: [PATCH 18/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 752 ++++++++++++++++++ 1 file changed, 752 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index 89cb59d82..2eab6be3f 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -1,3 +1,755 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "json/value.h" + +#include "b_error/b_error.h" +#include "b_error/b_excep_utils.h" +#include "b_json/b_json_clear_data_config.h" +#include "cJsonMock.h" + +namespace OHOS::FileManagement::Backup { +using namespace std; +using namespace testing; + +namespace { +const string PATH = "/data/service/el2/100/backup/"; +const string CONFIG_NAME = "ClearDataConfig.json"; +} // namespace + +class BJsonClearDataConfigTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + + static inline shared_ptr cJsonMock = nullptr; +}; + +void BJsonClearDataConfigTest::TearDown() {} + +void BJsonClearDataConfigTest::SetUp() +{ + string filePath = PATH + CONFIG_NAME; + bool result = remove(filePath.c_str()); + if (result) { + GTEST_LOG_(INFO) << "delete file success."; + } else { + GTEST_LOG_(INFO) << "delete file failed."; + } +} + +void BJsonClearDataConfigTest::SetUpTestCase() +{ + cJsonMock = make_shared(); + CJson::cJsonPtr = cJsonMock; +} + +void BJsonClearDataConfigTest::TearDownTestCase() +{ + CJson::cJsonPtr = nullptr; + cJsonMock = nullptr; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0100 + * @tc.name: Clear_Data_Config_Test_0100 + * @tc.desc: 测试配置文件存在的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0100"; + try { + string filePath = PATH + CONFIG_NAME; + ofstream outFile(filePath); + outFile.close(); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0100"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0101 + * @tc.name: Clear_Data_Config_Test_0101 + * @tc.desc: 测试配置文件不存在的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0101"; + try { + string filePath = PATH + CONFIG_NAME; + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0101"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0200 + * @tc.name: Clear_Data_Config_Test_0200 + * @tc.desc: 测试返回空指针情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0200"; + try { + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + BJsonClearDataConfig config; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0200"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0201 + * @tc.name: Clear_Data_Config_Test_0201 + * @tc.desc: 测试返回空指针情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0201, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0201"; + try { + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0201"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0202 + * @tc.name: Clear_Data_Config_Test_0202 + * @tc.desc: 测试返回空指针情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0202, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0202"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0202"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0300 + * @tc.name: Clear_Data_Config_Test_0300 + * @tc.desc: 测试 HasClearBundleRecord 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0300"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.HasClearBundleRecord(); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.HasClearBundleRecord(); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0300"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0301 + * @tc.name: Clear_Data_Config_Test_0301 + * @tc.desc: 测试 HasClearBundleRecord 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0301, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0301"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.HasClearBundleRecord(); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0301"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0400 + * @tc.name: Clear_Data_Config_Test_0400 + * @tc.desc: 测试 FindClearBundleRecord 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0400, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0400"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.FindClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.FindClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0400"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0401 + * @tc.name: Clear_Data_Config_Test_0401 + * @tc.desc: 测试 FindClearBundleRecord 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0401, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0401"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.FindClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.FindClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.FindClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0401"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0402 + * @tc.name: Clear_Data_Config_Test_0402 + * @tc.desc: 测试 FindClearBundleRecord 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0402, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0402"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.FindClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.FindClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0402"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0500 + * @tc.name: Clear_Data_Config_Test_0500 + * @tc.desc: 测试 InsertClearBundleRecord 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0500, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0500"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(0)); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0500"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0501 + * @tc.name: Clear_Data_Config_Test_0501 + * @tc.desc: 测试 InsertClearBundleRecord 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0501, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0501"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + char printString[] = {"teststring"}; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(0)); + //WriteClearBundleRecord Mock + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(printString)); + EXPECT_CALL(*cJsonMock, cJSON_free(_)).WillOnce(Return()); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.InsertClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0501"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0502 + * @tc.name: Clear_Data_Config_Test_0502 + * @tc.desc: 测试 InsertClearBundleRecord 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0502, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0502"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(nullptr)); + + //WriteClearBundleRecord Mock + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + + //WriteClearBundleRecord Mock + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0502"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0503 + * @tc.name: Clear_Data_Config_Test_0503 + * @tc.desc: 测试 InsertClearBundleRecord 接口失败和成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0503, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0503"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + + //WriteClearBundleRecord Mock + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + + //WriteClearBundleRecord Mock + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)); + EXPECT_CALL(*cJsonMock, cJSON_GetArrayItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0503"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0600 + * @tc.name: Clear_Data_Config_Test_0600 + * @tc.desc: 测试 WriteClearBundleRecord 接口失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0600, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0600"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.WriteClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.WriteClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.WriteClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.WriteClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0600"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0601 + * @tc.name: Clear_Data_Config_Test_0601 + * @tc.desc: 测试 WriteClearBundleRecord 接口成功 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0601, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0601"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + char printString[] = {"teststring"}; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(printString)); + EXPECT_CALL(*cJsonMock, cJSON_free(_)).WillOnce(Return()); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.WriteClearBundleRecord(bundleName); + EXPECT_TRUE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0601"; +} +} // namespace OHOS::FileManagement::Backup + + /* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From 643c06fc6db0772745e8f529c1c5a904059cde56 Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 12 Sep 2024 09:28:21 +0000 Subject: [PATCH 19/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index 2eab6be3f..5344c12c1 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -1,3 +1,52 @@ +ohos_unittest("b_json_clear_data_test") { + module_out_path = path_module_out_tests + + sources = [ + "${path_backup}/tests/mock/cJson/src/cJsonMock.cpp", + "${path_backup}/tests/unittests/backup_utils/b_json/b_json_clear_data_config_test.cpp", + "${path_backup}/utils/src/b_json/b_json_clear_data_config.cpp", + ] + sources += backup_mock_parameter_src + + include_dirs = [ + "${path_backup}/utils", + "${path_base}/include", + "${path_backup}/tests/mock/cJson/include", + ] + include_dirs += backup_mock_parameter_include_dirs + + deps = [ + "${path_backup}/interfaces/innerkits/native:sandbox_helper_native", + "${path_backup}/tests/utils:backup_test_utils", + "${path_backup}/utils/:backup_utils", + "${path_googletest}:gmock_main", + "${path_jsoncpp}:jsoncpp", + ] + + external_deps = [ + "cJSON:cjson", + "c_utils:utils", + "hilog:libhilog", + ] + + defines = [ + "LOG_TAG=\"app_file_service\"", + "LOG_DOMAIN=0xD004303", + "private = public", + "protected = public", + ] + + use_exceptions = true +} + +group("backup_test") { + testonly = true + + deps = [ + ":b_error_test", + ":b_file_test", + ":b_json_clear_data_test", + /* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From 62556b058f8f5ccf600990dc9d2d8db14f2b65d3 Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 12 Sep 2024 09:29:47 +0000 Subject: [PATCH 20/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index 5344c12c1..e2df23055 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -1,3 +1,28 @@ +virtual cJSON* cJSON_GetArrayItem(const cJSON* array, int index) = 0; + virtual cJSON_bool cJSON_AddItemToArray(cJSON *array, cJSON *item); + virtual cJSON *cJSON_AddStringToObject(cJSON *const object, const char *const name, const char *const string); + virtual void cJSON_free(void* object) = 0; + +public: + static inline std::shared_ptr cJsonPtr = nullptr; +}; + +class CJsonMock : public CJson { +public: + MOCK_METHOD3(cJSON_AddItemToObject, cJSON_bool(cJSON *object, const char *string, cJSON *item)); + MOCK_METHOD1(cJSON_Delete, void(cJSON *item)); + MOCK_METHOD0(cJSON_CreateObject, cJSON *()); + MOCK_METHOD0(cJSON_CreateArray, cJSON *()); + MOCK_METHOD1(cJSON_Print, char *(const cJSON *item)); + MOCK_METHOD1(cJSON_Parse, cJSON *(const char *value)); + MOCK_METHOD2(cJSON_GetObjectItem, cJSON *(const cJSON *const object, const char *const string)); + MOCK_METHOD1(cJSON_GetArraySize, int(const cJSON *array)); + MOCK_METHOD2(cJSON_GetArrayItem, cJSON *(const cJSON* array, int index)); + MOCK_METHOD2(cJSON_AddItemToArray, cJSON_bool(cJSON *array, cJSON *item)); + MOCK_METHOD3(cJSON_AddStringToObject, + cJSON *(cJSON *const object, const char *const name, const char *const string)); + MOCK_METHOD1(cJSON_free, void(void* object)); + ohos_unittest("b_json_clear_data_test") { module_out_path = path_module_out_tests -- Gitee From 253733bd413486898202cdd3a591b8af45938e39 Mon Sep 17 00:00:00 2001 From: chensihan Date: Sat, 14 Sep 2024 08:51:58 +0000 Subject: [PATCH 21/37] update tests/mock/accesstoken/accesstoken_kit_mock.cpp. Signed-off-by: chensihan --- .../mock/accesstoken/accesstoken_kit_mock.cpp | 286 ++++++++++++++++++ 1 file changed, 286 insertions(+) diff --git a/tests/mock/accesstoken/accesstoken_kit_mock.cpp b/tests/mock/accesstoken/accesstoken_kit_mock.cpp index 153183770..5989a9cdc 100644 --- a/tests/mock/accesstoken/accesstoken_kit_mock.cpp +++ b/tests/mock/accesstoken/accesstoken_kit_mock.cpp @@ -12,7 +12,293 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/* + * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * 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. + */ + +#include +#include + +#include +#include + +#include +#include +#include + +#include "b_jsonutil/b_jsonutil.h" +#include "b_process/b_process.h" +#include "cJsonMock.h" + +namespace OHOS::FileManagement::Backup { +using namespace std; +using namespace testing; + +namespace { + +} // namespace + +class BJsonUtilTest : public testing::Test { +public: + // 所有测试用例执行之前执行 + static void SetUpTestCase(void); + // 所有测试用例执行之后执行 + static void TearDownTestCase(void); + // 每次测试用例执行之前执行 + void SetUp() {}; + // 每次测试用例执行之后执行 + void TearDown() {}; + + static inline shared_ptr cJsonMock = nullptr; +}; + +void BJsonUtilTest::SetUpTestCase() +{ + cJsonMock = make_shared(); + CJson::cJsonPtr = cJsonMock; +} + +void BJsonUtilTest::TearDownTestCase() +{ + CJson::cJsonPtr = nullptr; + cJsonMock = nullptr; +} + +/** + * @tc.number: b_jsonutil_BuildExtensionErrInfo_0101 + * @tc.name: b_jsonutil_BuildExtensionErrInfo_0101 + * @tc.desc: Test function of BuildExtensionErrInfo interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildExtensionErrInfo_0101, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildExtensionErrInfo_0101"; + try { + std::string jsonStr; + int errCode = 1; + std::string errMsg = "error"; + int cjson = 0; + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + bool result = BJsonUtil::BuildExtensionErrInfo(jsonStr, errCode, errMsg); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildExtensionErrInfo(jsonStr, errCode, errMsg); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildExtensionErrInfo_0101"; +} + +/** + * @tc.number: b_jsonutil_BuildExtensionErrInfo_0201 + * @tc.name: b_jsonutil_BuildExtensionErrInfo_0201 + * @tc.desc: Test function of BuildExtensionErrInfo interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildExtensionErrInfo_0201, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildExtensionErrInfo_0201"; + try { + std::string jsonStr; + std::map> errFileInfo; + int cjson = 0; + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + bool result = BJsonUtil::BuildExtensionErrInfo(jsonStr, errFileInfo); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildExtensionErrInfo(jsonStr, errFileInfo); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildExtensionErrInfo_0201"; +} + +/** + * @tc.number: b_jsonutil_BuildOnProcessRetInfo_0301 + * @tc.name: b_jsonutil_BuildOnProcessRetInfo_0301 + * @tc.desc: Test function of BuildOnProcessRetInfo interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildOnProcessRetInfo_0301, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildOnProcessRetInfo_0301"; + try { + std::string jsonStr; + std::string onProcessRet; + int cjson = 0; + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + bool result = BJsonUtil::BuildOnProcessRetInfo(jsonStr, onProcessRet); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildOnProcessRetInfo(jsonStr, onProcessRet); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)) + .WillOnce(Return(nullptr)) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + result = BJsonUtil::BuildOnProcessRetInfo(jsonStr, onProcessRet); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildOnProcessRetInfo_0301"; +} + +/** + * @tc.number: b_jsonutil_BuildBundleInfoJson_0401 + * @tc.name: b_jsonutil_BuildBundleInfoJson_0401 + * @tc.desc: Test function of BuildBundleInfoJson interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleInfoJson_0401, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildBundleInfoJson_0401"; + try { + int32_t userId = 100; + std::string detailInfo; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + bool result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleInfoJson_0401"; +} + +/** + * @tc.number: b_jsonutil_BuildBundleInfoJson_0402 + * @tc.name: b_jsonutil_BuildBundleInfoJson_0402 + * @tc.desc: Test function of BuildBundleInfoJson interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleInfoJson_0402, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildBundleInfoJson_0402"; + try { + int32_t userId = 100; + std::string detailInfo; + int cjson = 0; + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)) + .WillOnce(Return(true)) + .WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)) + .WillOnce(Return(true)) + .WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)) + .WillOnce(Return(true)) + .WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildBundleInfoJson(userId, detailInfo); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleInfoJson_0402"; +} +} #include "accesstoken_kit.h" namespace OHOS::Security::AccessToken { -- Gitee From 7a9b94e7cecf7ec76ef1acbe592991a625b697db Mon Sep 17 00:00:00 2001 From: chensihan Date: Sat, 14 Sep 2024 08:56:22 +0000 Subject: [PATCH 22/37] update tests/mock/accesstoken/accesstoken_kit_mock.cpp. Signed-off-by: chensihan --- .../mock/accesstoken/accesstoken_kit_mock.cpp | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/mock/accesstoken/accesstoken_kit_mock.cpp b/tests/mock/accesstoken/accesstoken_kit_mock.cpp index 5989a9cdc..befa89d36 100644 --- a/tests/mock/accesstoken/accesstoken_kit_mock.cpp +++ b/tests/mock/accesstoken/accesstoken_kit_mock.cpp @@ -12,6 +12,49 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + + +ohos_unittest("b_jsonutil_other_test") { + module_out_path = path_module_out_tests + + sources = [ + "${path_backup}/tests/mock/cJson/src/cJsonMock.cpp", + "b_jsonutil/b_jsonutil_other_test.cpp", + ] + sources += backup_mock_parameter_src + + include_dirs = [ + "${path_backup}/utils", + "${path_base}/include", + "${path_backup}/tests/mock/cJson/include", + ] + include_dirs += backup_mock_parameter_include_dirs + + deps = [ + "${path_backup}/tests/utils:backup_test_utils", + "${path_backup}/utils/:backup_utils", + "${path_jsoncpp}:jsoncpp", + "${path_googletest}:gmock_main", + "${path_jsoncpp}:jsoncpp", + ] + + external_deps = [ + "cJSON:cjson", + "c_utils:utils", + "hilog:libhilog", + ] + + defines = [ + "LOG_TAG=\"app_file_service\"", + "LOG_DOMAIN=0xD004303", + "private = public", + "protected = public", + ] + + use_exceptions = true +} + + /* * Copyright (c) 2022-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From c032b67880ad6d9f9b282b30a5fed786632c73f4 Mon Sep 17 00:00:00 2001 From: chensihan Date: Sat, 14 Sep 2024 08:57:51 +0000 Subject: [PATCH 23/37] update tests/mock/accesstoken/accesstoken_kit_mock.cpp. Signed-off-by: chensihan --- .../mock/accesstoken/accesstoken_kit_mock.cpp | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/mock/accesstoken/accesstoken_kit_mock.cpp b/tests/mock/accesstoken/accesstoken_kit_mock.cpp index befa89d36..637f2411c 100644 --- a/tests/mock/accesstoken/accesstoken_kit_mock.cpp +++ b/tests/mock/accesstoken/accesstoken_kit_mock.cpp @@ -13,6 +13,73 @@ * limitations under the License. */ +/** + * @tc.name: ErrorCodeConversion_test_001 + * @tc.desc: Test function of ErrorCodeConversion() interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: + */ +HWTEST_F(FilePermissionTest, ErrorCodeConversion_test_001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin ErrorCodeConversion_test_001"; + auto ret = ErrorCodeConversion(SANDBOX_MANAGER_OK); + EXPECT_EQ(ret, 0); + + ret = ErrorCodeConversion(PERMISSION_DENIED); + EXPECT_EQ(ret, FileManagement::LibN::E_PERMISSION); + + int32_t UNKNOWN_ERROR = -114; + ret = ErrorCodeConversion(UNKNOWN_ERROR); + EXPECT_EQ(ret, FileManagement::LibN::E_UNKNOWN_ERROR); + GTEST_LOG_(INFO) << "FileShareTest-end ErrorCodeConversion_test_001"; +} + +/** + * @tc.name: ErrorCodeConversion_test_002 + * @tc.desc: Test function of ErrorCodeConversion() interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: + */ +HWTEST_F(FilePermissionTest, ErrorCodeConversion_test_002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin ErrorCodeConversion_test_002"; + deque errorResults; + vector resultCodes; + auto ret = ErrorCodeConversion(SANDBOX_MANAGER_OK, errorResults, resultCodes); + EXPECT_EQ(ret, 0); + + ret = ErrorCodeConversion(INVALID_PARAMTER, errorResults, resultCodes); + EXPECT_EQ(ret, EPERM); + + resultCodes.emplace_back(static_cast(PolicyErrorCode::PERSISTENCE_FORBIDDEN)); + resultCodes.emplace_back(static_cast(PolicyErrorCode::INVALID_MODE)); + resultCodes.emplace_back(static_cast(PolicyErrorCode::INVALID_PATH)); + resultCodes.emplace_back(static_cast(PolicyErrorCode::PERMISSION_NOT_PERSISTED)); + + ret = ErrorCodeConversion(INVALID_PARAMTER, errorResults, resultCodes); + EXPECT_EQ(ret, FileManagement::LibN::E_PARAMS); + + errorResults.push_back(true); + ret = ErrorCodeConversion(INVALID_PARAMTER, errorResults, resultCodes); + EXPECT_EQ(ret, EPERM); + + errorResults.clear(); + ret = ErrorCodeConversion(SANDBOX_MANAGER_OK, errorResults, resultCodes); + EXPECT_EQ(ret, EPERM); + + resultCodes.clear(); + ret = ErrorCodeConversion(SANDBOX_MANAGER_OK, errorResults, resultCodes); + EXPECT_EQ(ret, 0); + + int32_t UNKNOWN_ERROR = -114; + ret = ErrorCodeConversion(UNKNOWN_ERROR, errorResults, resultCodes); + EXPECT_EQ(ret, FileManagement::LibN::E_UNKNOWN_ERROR); + GTEST_LOG_(INFO) << "FileShareTest-end ErrorCodeConversion_test_002"; +} ohos_unittest("b_jsonutil_other_test") { module_out_path = path_module_out_tests -- Gitee From ef5b3056b170e7069caa7a41287ae43ad8cc11cf Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 19 Sep 2024 02:38:55 +0000 Subject: [PATCH 24/37] update tests/unittests/backup_api/backup_impl/b_file_info_test.cpp. Signed-off-by: chensihan --- .../backup_impl/b_file_info_test.cpp | 390 ++++++++++++++++++ 1 file changed, 390 insertions(+) diff --git a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp index 9e62bf208..0d96bedf2 100644 --- a/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp +++ b/tests/unittests/backup_api/backup_impl/b_file_info_test.cpp @@ -14,6 +14,396 @@ */ +/* * + * @tc.number: SUB_Disposal_Config_Test_0204 + * @tc.name: Disposal_Config_Test_0204 + * @tc.desc: 测试修改config文件时print返回空指针 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0204, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0204"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_IsArray(_)).WillOnce(Return(false)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_IsArray(_)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0204"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0300 + * @tc.name: Disposal_Config_Test_0300 + * @tc.desc: 测试修改config文件时print返回空指针 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0300"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool ret = config.DeleteFromDisposalConfigFile(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_IsArray(_)).WillOnce(Return(false)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.DeleteFromDisposalConfigFile(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0300"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0400 + * @tc.name: Disposal_Config_Test_0400 + * @tc.desc: 测试修改config文件时print返回空指针 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0400, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0400"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool ret = config.IfBundleNameInDisposalConfigFile(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_IsArray(_)).WillOnce(Return(false)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.IfBundleNameInDisposalConfigFile(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0400"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0500 + * @tc.name: Disposal_Config_Test_0500 + * @tc.desc: 测试修改config文件时print返回空指针 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0500, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0500"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + auto ret = config.GetBundleNameFromConfigFile(); + EXPECT_EQ(ret, std::vector()); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_IsArray(_)).WillOnce(Return(false)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.GetBundleNameFromConfigFile(); + EXPECT_EQ(ret, std::vector()); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0500"; +} + + + + +/** + * @tc.number: SUB_Ext_Extension_0800 + * @tc.name: Ext_Extension_Test_0800 + * @tc.desc: 测试 GetIndexFileRestorePath + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9P3Y3 + */ +HWTEST_F(ExtExtensionTest, Ext_Extension_Test_0800, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtExtensionTest-begin Ext_Extension_Test_0800"; + try { + std::string bundleName = BConstants::BUNDLE_FILE_MANAGER; + auto ret = GetIndexFileRestorePath(bundleName); + EXPECT_EQ(ret, string(BConstants::PATH_FILEMANAGE_BACKUP_HOME) + .append(BConstants::SA_BUNDLE_BACKUP_RESTORE) + .append(BConstants::EXT_BACKUP_MANAGE)); + + bundleName = BConstants::BUNDLE_MEDIAL_DATA; + ret = GetIndexFileRestorePath(bundleName); + EXPECT_EQ(ret, string(BConstants::PATH_MEDIALDATA_BACKUP_HOME) + .append(BConstants::SA_BUNDLE_BACKUP_RESTORE) + .append(BConstants::EXT_BACKUP_MANAGE)); + + bundleName = "test"; + ret = GetIndexFileRestorePath(bundleName); + EXPECT_EQ(ret, INDEX_FILE_RESTORE); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtExtensionTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "ExtExtensionTest-end Ext_Extension_Test_0800"; +} + +/** + * @tc.number: SUB_Ext_Extension_0900 + * @tc.name: Ext_Extension_Test_0900 + * @tc.desc: 测试 GetRestoreTempPath + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9P3Y3 + */ +HWTEST_F(ExtExtensionTest, Ext_Extension_Test_0900, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtExtensionTest-begin Ext_Extension_Test_0900"; + try { + std::string bundleName = BConstants::BUNDLE_MEDIAL_DATA; + auto ret = GetRestoreTempPath(bundleName); + EXPECT_EQ(ret, string(BConstants::PATH_MEDIALDATA_BACKUP_HOME) + .append(BConstants::SA_BUNDLE_BACKUP_RESTORE)); + + bundleName = "test"; + ret = GetRestoreTempPath(bundleName); + EXPECT_EQ(ret, string(BConstants::PATH_BUNDLE_BACKUP_HOME) + .append(BConstants::SA_BUNDLE_BACKUP_RESTORE)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtExtensionTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "ExtExtensionTest-end Ext_Extension_Test_0900"; +} + + + + + +/** + * @tc.name: File_share_CheckValidPath_0001 + * @tc.desc: Test function of CheckValidPath() interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_CheckValidPath_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_CheckValidPath_0001"; + std::string filePath1 = ""; + auto ret = SandboxHelper::CheckValidPath(filePath1); + EXPECT_FALSE(ret); + + std::string filePath2(PATH_MAX, 't'); + ret = SandboxHelper::CheckValidPath(filePath2); + EXPECT_FALSE(ret); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_CheckValidPath_0001"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0001 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetBackupPhysicalPath_0001"; + std::string fileUri = "file://media/Photo/12/IMG_12345_0011/test.jpg"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(fileUri, "100", physicalPath); + EXPECT_EQ(ret, E_OK); + EXPECT_EQ(physicalPath, "/mnt/hmdfs/100/account/cloud_merge_view/files/Photo/11/IMG_12345_0011.jpg"); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0001"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0002 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetBackupPhysicalPath_0002"; + std::string fileUri = "file://media/Photo/12/IMG_12345_/test.jpg"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(fileUri, "100", physicalPath); + EXPECT_EQ(ret, -EINVAL); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0002"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0003 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetBackupPhysicalPath_0003"; + std::string fileUri = "file://media/Photo/12/IMG_12345_a0011/test.jpg"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(fileUri, "100", physicalPath); + EXPECT_EQ(ret, -EINVAL); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0003"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0004 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0004, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetBackupPhysicalPath_0004"; + std::string fileUri = "file://media/Photo/IMG_12345_999999/test.jpg"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(fileUri, "100", physicalPath); + EXPECT_EQ(ret, -EINVAL); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0004"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0005 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0005, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetBackupPhysicalPath_0005"; + std::string strPrefix = "file://media/"; + std::string fileUri = "Photo/12/IMG_12345_999999/test.jpg"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(strPrefix + SandboxHelper::Encode(fileUri), "100", physicalPath); + EXPECT_EQ(ret, E_OK); + EXPECT_EQ(physicalPath, "/mnt/hmdfs/100/account/cloud_merge_view/files/Photo/575/IMG_12345_999999.jpg"); + + std::string fileUri2 = "Photo/12/IMG_12345_999999/test .jpg"; + std::string physicalPath2; + ret = SandboxHelper::GetBackupPhysicalPath(strPrefix + SandboxHelper::Encode(fileUri2), "100", physicalPath2); + EXPECT_EQ(ret, E_OK); + EXPECT_EQ(physicalPath2, "/mnt/hmdfs/100/account/cloud_merge_view/files/Photo/575/IMG_12345_999999.jpg"); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0005"; +} + +/** + * @tc.name: File_share_GetBackupPhysicalPath_0006 + * @tc.desc: Test function of GetBackupPhysicalPath() interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I7PDZL + */ +HWTEST_F(FileShareTest, File_share_GetBackupPhysicalPath_0006, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileShareTest-begin File_share_GetPhysicalPath_0006"; + std::string fileUri = "file://media/Photo/12/IMG_12345_999999/test.jpg/other"; + std::string physicalPath; + int32_t ret = SandboxHelper::GetBackupPhysicalPath(fileUri, "100", physicalPath); + EXPECT_EQ(ret, -EINVAL); + GTEST_LOG_(INFO) << "FileShareTest-end File_share_GetBackupPhysicalPath_0006"; +} + + /** * @tc.name: remote_file_share_GetDfsUriFromLocal_0015 * @tc.desc: Test function of GetDfsUrisFromLocal() interface. -- Gitee From 84e8f628f663acedf117dd4028d1be1cbaa0f54e Mon Sep 17 00:00:00 2001 From: chensihan Date: Mon, 23 Sep 2024 08:15:34 +0000 Subject: [PATCH 25/37] update tests/mock/accesstoken/accesstoken_kit_mock.cpp. Signed-off-by: chensihan --- .../mock/accesstoken/accesstoken_kit_mock.cpp | 303 ++++++++++++++++++ 1 file changed, 303 insertions(+) diff --git a/tests/mock/accesstoken/accesstoken_kit_mock.cpp b/tests/mock/accesstoken/accesstoken_kit_mock.cpp index 637f2411c..980218543 100644 --- a/tests/mock/accesstoken/accesstoken_kit_mock.cpp +++ b/tests/mock/accesstoken/accesstoken_kit_mock.cpp @@ -13,6 +13,309 @@ * limitations under the License. */ + /** + * @tc.number: SUB_backup_b_dir_GetBackupList_0100 + * @tc.name: b_dir_GetBackupList_0100 + * @tc.desc: Test function of GetBackupList interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetBackupList_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetBackupList_0100"; + try { + vector includes; + vector excludes; + auto [bigFiles, smallFiles] = BDir::GetBackupList(includes, excludes); + EXPECT_EQ(bigFiles.size(), 0); + EXPECT_EQ(smallFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetBackupList_0100"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetBackupList_0200 + * @tc.name: b_dir_GetBackupList_0200 + * @tc.desc: Test function of GetBackupList interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetBackupList_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetBackupList_0200"; + try { + vector includes = {"/data/"}; + vector excludes; + auto [bigFiles, smallFiles] = BDir::GetBackupList(includes, excludes); + EXPECT_NE(bigFiles.size(), 0); + EXPECT_NE(smallFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetBackupList_0200"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetBackupList_0300 + * @tc.name: b_dir_GetBackupList_0300 + * @tc.desc: Test function of GetBackupList interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetBackupList_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetBackupList_0300"; + try { + vector includes = {"/data/app"}; + vector excludes; + auto [bigFiles, smallFiles] = BDir::GetBackupList(includes, excludes); + EXPECT_NE(bigFiles.size(), 0); + EXPECT_NE(smallFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetBackupList_0300"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetBackupList_0400 + * @tc.name: b_dir_GetBackupList_0400 + * @tc.desc: Test function of GetBackupList interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetBackupList_0400, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetBackupList_0400"; + try { + vector includes = {{}, {}}; + vector excludes = {{}}; + auto [bigFiles, smallFiles] = BDir::GetBackupList(includes, excludes); + EXPECT_EQ(bigFiles.size(), 0); + EXPECT_EQ(smallFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetBackupList_0400"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetUser0FileStat_0100 + * @tc.name: b_dir_GetUser0FileStat_0100 + * @tc.desc: Test function of GetUser0FileStat interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetUser0FileStat_0100, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetUser0FileStat_0100"; + try { + vector bigFile; + vector smallFile; + vector allFiles; + vector smallFiles; + vector bigFiles; + BDir::GetUser0FileStat(bigFile, smallFile, allFiles, smallFiles, bigFiles); + EXPECT_EQ(bigFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetUser0FileStat_0100"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetUser0FileStat_0200 + * @tc.name: b_dir_GetUser0FileStat_0200 + * @tc.desc: Test function of GetUser0FileStat interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetUser0FileStat_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetUser0FileStat_0200"; + try { + vector includes = {"/data/"}; + vector excludes; + auto [bigFile, smallFile] = BDir::GetBackupList(includes, excludes); + vector allFiles; + vector smallFiles; + vector bigFiles; + BDir::GetUser0FileStat(bigFile, smallFile, allFiles, smallFiles, bigFiles); + EXPECT_NE(smallFiles.size(), 0); + EXPECT_NE(bigFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetUser0FileStat_0200"; +} + +/** + * @tc.number: SUB_backup_b_dir_GetUser0FileStat_0300 + * @tc.name: b_dir_GetUser0FileStat_0300 + * @tc.desc: Test function of GetUser0FileStat interface + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(BDirTest, b_dir_GetUser0FileStat_0300, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BDirTest-begin b_dir_GetUser0FileStat_0300"; + try { + vector includes = {{}, {}}; + vector excludes = {{}}; + auto [bigFile, smallFile] = BDir::GetBackupList(includes, excludes); + vector allFiles; + vector smallFiles; + vector bigFiles; + BDir::GetUser0FileStat(bigFile, smallFile, allFiles, smallFiles, bigFiles); + EXPECT_EQ(smallFiles.size(), 0); + EXPECT_EQ(bigFiles.size(), 0); + } catch (...) { + GTEST_LOG_(INFO) << "BDirTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BDirTest-end b_dir_GetUser0FileStat_0300"; +} + + + + + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 + * @tc.desc: 测试 IncrementalBackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100"; + try { + IncrementalInit(IServiceReverse::Scenario::BACKUP, 1); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo; + service_->IncrementalBackupOnProcessInfo(bundleName, processInfo); + + IncrementalInit(IServiceReverse::Scenario::RESTORE); + service_->IncrementalBackupOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalBackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 + * @tc.desc: 测试 IncrementalRestoreOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100"; + try { + IncrementalInit(IServiceReverse::Scenario::RESTORE, 1); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 service_ == nullptr"; + return; + } + std::string bundleName = BUNDLE_NAME; + std::string processInfo; + service_->IncrementalRestoreOnProcessInfo(bundleName, processInfo); + + IncrementalInit(IServiceReverse::Scenario::BACKUP); + service_->IncrementalRestoreOnProcessInfo(bundleName, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalRestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100"; +} + + + + + + +/** + * @tc.number: SUB_backup_tools_op_restore_1305 + * @tc.name: tools_op_restore_Exec_1305 + * @tc.desc: test func + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9NOPD + */ +HWTEST_F(ToolsOpRestoreTest, tools_op_restore_Exec_1305, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-begin tools_op_restore_Exec_1305"; + try { + map> mapArgToVal; + mapArgToVal["bundles"] = {"com.example.app2backup/"}; + int ret = Exec(mapArgToVal); + EXPECT_LT(ret, 0); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-end tools_op_restore_Exec_1305"; +} + +/** + * @tc.number: SUB_backup_tools_op_restore_1306 + * @tc.name: tools_op_restore_Exec_1306 + * @tc.desc: test func + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9NOPD + */ +HWTEST_F(ToolsOpRestoreTest, tools_op_restore_Exec_1306, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-begin tools_op_restore_Exec_1306"; + try { + map> mapArgToVal; + mapArgToVal["pathCapFile"] = {"/data/backup/recived/com.example.app2backup/"}; + int ret = Exec(mapArgToVal); + EXPECT_LT(ret, 0); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "ToolsOpRestoreTest-end tools_op_restore_Exec_1306"; +} + + + /** * @tc.name: ErrorCodeConversion_test_001 * @tc.desc: Test function of ErrorCodeConversion() interface. -- Gitee From 10493e37f8f078fdc1d212d0a4a60a71e0fdc800 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 06:55:24 +0000 Subject: [PATCH 26/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index e2df23055..d59d8df49 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -1,3 +1,69 @@ +ohos_unittest("backup_service_other_test") { + module_out_path = path_module_out_tests + + sources = [ + "${path_backup_mock}/accesstoken/accesstoken_kit_mock.cpp", + "${path_backup_mock}/module_external/bms_adapter_mock.cpp", + "${path_backup_mock}/module_external/src/sms_adapter_mock.cpp", + "${path_backup_mock}/module_ipc/app_gallery_dispose_proxy_mock.cpp", + "${path_backup_mock}/module_ipc/src/ipc_skeleton_mock.cpp", + "${path_backup_mock}/module_ipc/src/sa_backup_connection_mock.cpp", + "${path_backup_mock}/module_ipc/src/service_stub_mock.cpp", + "${path_backup_mock}/module_ipc/src/svc_backup_connection_mock.cpp", + "${path_backup_mock}/module_ipc/src/svc_session_manager_mock.cpp", + "${path_backup_mock}/module_sched/sched_scheduler_mock.cpp", + "${path_backup_mock}/utils_mock/src/backup_para_mock.cpp", + "${path_backup}/services/backup_sa/src/module_ipc/service_incremental.cpp", + "${path_backup}/services/backup_sa/src/module_ipc/svc_extension_incremental_proxy.cpp", + "${path_backup}/services/backup_sa/src/module_ipc/svc_extension_proxy.cpp", + "${path_backup}/services/backup_sa/src/module_ipc/svc_restore_deps_manager.cpp", + "${path_backup}/services/backup_sa/src/module_notify/notify_work_service.cpp", + "service_other_test.cpp", + ] + + include_dirs = [ + "${path_backup}/interfaces/inner_api/native/backup_kit_inner/impl", + "${path_backup}/services/backup_sa/include", + "${path_backup}/services/backup_sa/include/module_ipc", + "${path_backup}/services/backup_sa/src/module_ipc", + "${path_backup}/tests/unittests/backup_api/backup_impl/include", + "${path_backup}/tests/utils/include/", + "${path_backup_mock}/module_external/include", + "${path_backup_mock}/module_ipc/include", + "${path_backup_mock}/utils_mock/include", + "${path_access_token}/interfaces/innerkits/accesstoken/include", + ] + + deps = [ + "${path_backup}/interfaces/inner_api/native/backup_kit_inner:backup_kit_inner", + "${path_backup}/tests/utils:backup_test_utils", + "${path_backup}/utils:backup_utils", + "${path_googletest}:gmock_main", + "${path_jsoncpp}:jsoncpp", + ] + + external_deps = [ + "ability_base:want", + "ability_runtime:ability_manager", + "bundle_framework:appexecfwk_core", + "c_utils:utils", + "common_event_service:cesfwk_innerkits", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "init:libbegetutil", + "ipc:ipc_core", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + "storage_service:storage_manager_sa_proxy", + ] + + defines = [ "private=public" ] + use_exceptions = true +} + + + virtual cJSON* cJSON_GetArrayItem(const cJSON* array, int index) = 0; virtual cJSON_bool cJSON_AddItemToArray(cJSON *array, cJSON *item); virtual cJSON *cJSON_AddStringToObject(cJSON *const object, const char *const name, const char *const string); -- Gitee From c291a0c1824d20ca309bfcef91f54e355c00be6d Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 06:55:49 +0000 Subject: [PATCH 27/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 316 ++++++++++++++++++ 1 file changed, 316 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index d59d8df49..17b3610b8 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -1,3 +1,319 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * 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. + */ + +#include +#include +#include +#include + +#include "backup_para_mock.h" +#include "bms_adapter_mock.h" +#include "b_jsonutil_mock.h" +#include "ipc_skeleton_mock.h" +#include "sa_backup_connection_mock.h" +#include "service_reverse_proxy_mock.h" +#include "svc_backup_connection_mock.h" +#include "svc_extension_proxy_mock.h" +#include "svc_session_manager_mock.h" + +#include "module_ipc/service.h" +#include "service.cpp" + +namespace OHOS::FileManagement::Backup { +using namespace std; +using namespace testing; +using namespace testing::ext; + +const string BUNDLE_NAME = "com.example.app2backup"; +constexpr int32_t SERVICE_ID = 5203; + +class ServiceTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(); + void SetUp() {}; + void TearDown() {}; + + static inline sptr servicePtr_ = nullptr; + static inline shared_ptr param = nullptr; + static inline shared_ptr jsonUtil = nullptr; + static inline shared_ptr session = nullptr; + static inline shared_ptr bms = nullptr; + static inline sptr svcProxy = nullptr; + static inline sptr connect = nullptr; + static inline shared_ptr saConnect = nullptr; + static inline shared_ptr skeleton = nullptr; + static inline sptr srProxy = nullptr; +}; + +void ServiceTest::SetUpTestCase(void) +{ + GTEST_LOG_(INFO) << "SetUpTestCase enter"; + servicePtr_ = sptr(new Service(SERVICE_ID)); + param = make_shared(); + BackupParaMock::backupPara = param; + jsonUtil = make_shared(); + BJsonUtilMock::jsonUtil = jsonUtil; + session = make_shared(); + SvcSessionManagerMock::sessionManager = session; + svcProxy = sptr(new SvcExtensionProxyMock()); + bms = make_shared(); + BundleMgrAdapterMock::bms = bms; + connect = sptr(new SvcBackupConnectionMock()); + SvcBackupConnectionMock::connect = connect; + saConnect = make_shared(); + SABackupConnectionMock::saConnect = saConnect; + skeleton = make_shared(); + IPCSkeletonMock::skeleton = skeleton; + srProxy = sptr(new ServiceReverseProxyMock()); +} + +void ServiceTest::TearDownTestCase() +{ + GTEST_LOG_(INFO) << "TearDownTestCase enter"; + servicePtr_ = nullptr; + BackupParaMock::backupPara = nullptr; + param = nullptr; + BJsonUtilMock::jsonUtil = nullptr; + jsonUtil = nullptr; + SvcSessionManagerMock::sessionManager = nullptr; + session = nullptr; + svcProxy = nullptr; + BundleMgrAdapterMock::bms = nullptr; + bms = nullptr; + SvcBackupConnectionMock::connect = nullptr; + connect = nullptr; + SABackupConnectionMock::saConnect = nullptr; + saConnect = nullptr; + IPCSkeletonMock::skeleton = nullptr; + skeleton = nullptr; + srProxy = nullptr; +} + +/** + * @tc.number: SUB_Service_GetLocalCapabilities_0100 + * @tc.name: SUB_Service_GetLocalCapabilities_0100 + * @tc.desc: 测试 GetLocalCapabilities + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_GetLocalCapabilities_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_GetLocalCapabilities_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + servicePtr_->session_ = nullptr; + UniqueFd fd = servicePtr_->GetLocalCapabilities(); + EXPECT_NE(fd, BError(BError::Codes::OK)); + + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + servicePtr_->isOccupyingSession_.store(true); + fd = servicePtr_->GetLocalCapabilities(); + EXPECT_NE(fd, BError(BError::Codes::OK)); + servicePtr_->isOccupyingSession_.store(false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by GetLocalCapabilities."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_GetLocalCapabilities_0100"; +} + +/** + * @tc.number: SUB_Service_AppendBundlesRestoreSession_0100 + * @tc.name: SUB_Service_AppendBundlesRestoreSession_0100 + * @tc.desc: 测试 AppendBundlesRestoreSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesRestoreSession_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesRestoreSession_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(false, 0))) + .WillOnce(Return(make_pair(false, 0))); + EXPECT_CALL(*skeleton, GetCallingUid()) + .WillOnce(Return(BConstants::SYSTEM_UID)) + .WillOnce(Return(BConstants::SYSTEM_UID)); + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + UniqueFd fd = servicePtr_->GetLocalCapabilities(); + std::vector bundleNames; + std::vector bundleInfos; + RestoreTypeEnum restoreType = RESTORE_DATA_READDY; + int32_t userId = 100; + + servicePtr_->session_ = nullptr; + auto ret = servicePtr_->AppendBundlesRestoreSession(move(fd), bundleNames, bundleInfos, restoreType, userId); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + servicePtr_->isOccupyingSession_.store(true); + ret = servicePtr_->AppendBundlesRestoreSession(move(fd), bundleNames, bundleInfos, restoreType, userId); + EXPECT_NE(ret, BError(BError::Codes::OK)); + servicePtr_->isOccupyingSession_.store(false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesRestoreSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesRestoreSession_0100"; +} + +/** + * @tc.number: SUB_Service_AppendBundlesRestoreSession_0200 + * @tc.name: SUB_Service_AppendBundlesRestoreSession_0200 + * @tc.desc: 测试 AppendBundlesRestoreSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesRestoreSession_0200, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesRestoreSession_0200"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(false, 0))) + .WillOnce(Return(make_pair(false, 0))); + EXPECT_CALL(*skeleton, GetCallingUid()) + .WillOnce(Return(BConstants::SYSTEM_UID)) + .WillOnce(Return(BConstants::SYSTEM_UID)); + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + UniqueFd fd = servicePtr_->GetLocalCapabilities(); + std::vector bundleNames; + std::vector bundleInfos; + RestoreTypeEnum restoreType = RESTORE_DATA_READDY; + int32_t userId = DEFAULT_INVAL_VALUE; + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair(false, 0))); + EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); + EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); + auto ret = servicePtr_->AppendBundlesRestoreSession(move(fd), bundleNames, bundleInfos, restoreType, userId); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesRestoreSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesRestoreSession_0200"; +} + +/** + * @tc.number: SUB_Service_SetCurrentSessProperties_0100 + * @tc.name: SUB_Service_SetCurrentSessProperties_0100 + * @tc.desc: 测试 SetCurrentSessProperties + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_SetCurrentSessProperties_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SetCurrentSessProperties_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + BJsonEntityCaps::BundleInfo info; + std::map isClearDataFlags; + + servicePtr_->session_ = nullptr; + servicePtr_->SetCurrentSessProperties(info, isClearDataFlags); + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + servicePtr_->SetCurrentSessProperties(info, isClearDataFlags); + + info = BJsonEntityCaps::BundleInfo{BUNDLE_NAME, 0, {}, {}, 0, 0, true, false, BUNDLE_NAME}; + isClearDataFlags = {{BUNDLE_NAME, true}}; + servicePtr_->SetCurrentSessProperties(info, isClearDataFlags); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SetCurrentSessProperties."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SetCurrentSessProperties_0100"; +} + +/** + * @tc.number: SUB_Service_AppendBundlesBackupSession_0100 + * @tc.name: SUB_Service_AppendBundlesBackupSession_0100 + * @tc.desc: 测试 AppendBundlesBackupSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesBackupSession_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::vector bundleNames; + + servicePtr_->session_ = nullptr; + auto ret = servicePtr_->AppendBundlesBackupSession(bundleNames); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + servicePtr_->isOccupyingSession_.store(true); + ret = servicePtr_->AppendBundlesBackupSession(bundleNames); + EXPECT_NE(ret, BError(BError::Codes::OK)); + servicePtr_->isOccupyingSession_.store(false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesBackupSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesBackupSession_0100"; +} + +/** + * @tc.number: SUB_Service_AppendBundlesBackupSession_0200 + * @tc.name: SUB_Service_AppendBundlesBackupSession_0200 + * @tc.desc: 测试 AppendBundlesBackupSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0200, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesBackupSession_0200"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::vector bundleNames; + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); + auto ret = servicePtr_->AppendBundlesBackupSession(bundleNames); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesBackupSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesBackupSession_0200"; +} + + + + + + + ohos_unittest("backup_service_other_test") { module_out_path = path_module_out_tests -- Gitee From 154769095b4ebc123775f9b646cd13087728a2fe Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 06:56:34 +0000 Subject: [PATCH 28/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.cpp | 213 ++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index 17b3610b8..95b2a2c99 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -309,6 +309,219 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0200, TestSize.Leve } +/** + * @tc.number: SUB_Service_AppendBundlesDetailsBackupSession_0100 + * @tc.name: SUB_Service_AppendBundlesDetailsBackupSession_0100 + * @tc.desc: 测试 AppendBundlesDetailsBackupSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesDetailsBackupSession_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::vector bundleNames; + std::vector bundleInfos; + + servicePtr_->session_ = nullptr; + auto ret = servicePtr_->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + servicePtr_->isOccupyingSession_.store(true); + ret = servicePtr_->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); + EXPECT_NE(ret, BError(BError::Codes::OK)); + servicePtr_->isOccupyingSession_.store(false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesDetailsBackupSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesDetailsBackupSession_0100"; +} + +/** + * @tc.number: SUB_Service_AppendBundlesDetailsBackupSession_0200 + * @tc.name: SUB_Service_AppendBundlesDetailsBackupSession_0200 + * @tc.desc: 测试 AppendBundlesDetailsBackupSession + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0200, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesDetailsBackupSession_0200"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::vector bundleNames; + std::vector bundleInfos; + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); + auto ret = servicePtr_->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesDetailsBackupSession."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesDetailsBackupSession_0200"; +} + +/** + * @tc.number: SUB_Service_PublishFile_0100 + * @tc.name: SUB_Service_PublishFile_0100 + * @tc.desc: 测试 PublishFile + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_PublishFile_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_PublishFile_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + BFileInfo fileInfo {BUNDLE_NAME, "", 0}; + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + auto ret = servicePtr_->PublishFile(fileInfo); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); + ret = servicePtr_->PublishFile(fileInfo); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, PublishFile(_)) + .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode())); + ret = servicePtr_->PublishFile(fileInfo); + EXPECT_NE(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by PublishFile."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_PublishFile_0100"; +} + +/** + * @tc.number: SUB_Service_AppDone_0100 + * @tc.name: SUB_Service_AppDone_0100 + * @tc.desc: 测试 AppDone + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppDone_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppDone_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + ErrCode errCode = BError(BError::Codes::OK).GetCode(); + + servicePtr_->session_ = nullptr; + auto ret = servicePtr_->AppDone(errCode); + EXPECT_NE(ret, BError(BError::Codes::OK)); + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false)); + EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false)).WillOnce(Return(false)); + ret = servicePtr_->AppDone(errCode); + EXPECT_EQ(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppDone."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppDone_0100"; +} + +/** + * @tc.number: SUB_Service_AppDone_0200 + * @tc.name: SUB_Service_AppDone_0200 + * @tc.desc: 测试 AppDone + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_AppDone_0200, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppDone_0200"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + ErrCode errCode = BError(BError::Codes::SA_INVAL_ARG).GetCode(); + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + auto ret = servicePtr_->AppDone(errCode); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); + ret = servicePtr_->AppDone(errCode); + EXPECT_NE(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppDone."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppDone_0200"; +} + +/** + * @tc.number: SUB_Service_NotifyCloneBundleFinish_0100 + * @tc.name: SUB_Service_NotifyCloneBundleFinish_0100 + * @tc.desc: 测试 NotifyCloneBundleFinish + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_NotifyCloneBundleFinish_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_NotifyCloneBundleFinish_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::string bundleName = BUNDLE_NAME; + BackupRestoreScenario senario = BackupRestoreScenario::INCREMENTAL_BACKUP; + servicePtr_->NotifyCloneBundleFinish(bundleName, senario); + + senario = BackupRestoreScenario::FULL_RESTORE; + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false)); + EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false)) + .WillOnce(Return(false)).WillOnce(Return(false)); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + servicePtr_->NotifyCloneBundleFinish(bundleName, senario); + + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + servicePtr_->NotifyCloneBundleFinish(bundleName, senario); + + EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); + servicePtr_->NotifyCloneBundleFinish(bundleName, senario); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by NotifyCloneBundleFinish."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_NotifyCloneBundleFinish_0100"; +} + +} -- Gitee From 3aa50bfec4399e662cc9d002c9791d2cb5828be8 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 07:01:26 +0000 Subject: [PATCH 29/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.h. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.h | 142 +++++++++++++++++- 1 file changed, 141 insertions(+), 1 deletion(-) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h index 38ed20ef4..a7ea6f6fd 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h @@ -18,4 +18,144 @@ #define FUZZ_PROJECT_NAME "ServiceReverseFuzzTest" -#endif \ No newline at end of file +#endif + +/** + * @tc.number: SUB_Service_LaunchBackupExtension_0100 + * @tc.name: SUB_Service_LaunchBackupExtension_0100 + * @tc.desc: 测试 LaunchBackupExtension + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_LaunchBackupExtension_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_LaunchBackupExtension_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::string bundleName = ""; + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); + auto ret = servicePtr_->LaunchBackupExtension(bundleName); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY)); + EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + ret = servicePtr_->LaunchBackupExtension(bundleName); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY)); + EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(true)); + EXPECT_CALL(*connect, WaitDisconnectDone()).WillOnce(Return(false)); + ret = servicePtr_->LaunchBackupExtension(bundleName); + EXPECT_NE(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by LaunchBackupExtension."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_LaunchBackupExtension_0100"; +} + +/** + * @tc.number: SUB_Service_LaunchBackupExtension_0200 + * @tc.name: SUB_Service_LaunchBackupExtension_0100 + * @tc.desc: 测试 LaunchBackupExtension + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_LaunchBackupExtension_0200, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_LaunchBackupExtension_0200"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::string bundleName = ""; + + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY)); + EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(false)); + EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)); + EXPECT_CALL(*connect, ConnectBackupExtAbility(_, _)) + .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode())); + auto ret = servicePtr_->LaunchBackupExtension(bundleName); + EXPECT_NE(ret, BError(BError::Codes::OK)); + + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0)); + EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY)); + EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return("")); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(true)); + EXPECT_CALL(*connect, WaitDisconnectDone()).WillOnce(Return(true)); + EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)); + EXPECT_CALL(*connect, ConnectBackupExtAbility(_, _)) + .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode())); + ret = servicePtr_->LaunchBackupExtension(bundleName); + EXPECT_NE(ret, BError(BError::Codes::OK)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by LaunchBackupExtension."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_LaunchBackupExtension_0200"; +} + +/** + * @tc.number: SUB_Service_ClearResidualBundleData_0100 + * @tc.name: SUB_Service_ClearResidualBundleData_0100 + * @tc.desc: 测试 ClearResidualBundleData + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_ClearResidualBundleData_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_ClearResidualBundleData_0100"; + try { + EXPECT_TRUE(servicePtr_ != nullptr); + std::string bundleName = BUNDLE_NAME; + servicePtr_->session_ = nullptr; + servicePtr_->ClearResidualBundleData(bundleName); + servicePtr_->session_ = sptr(new SvcSessionManager(wptr(servicePtr_))); + + try { + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + servicePtr_->ClearResidualBundleData(bundleName); + EXPECT_TRUE(false); + } catch (...) { + EXPECT_TRUE(true); + } + + try { + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); + servicePtr_->ClearResidualBundleData(bundleName); + EXPECT_TRUE(false); + } catch (...) { + EXPECT_TRUE(true); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by ClearResidualBundleData."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_ClearResidualBundleData_0100"; +} \ No newline at end of file -- Gitee From ddaadfd1e4caa58bef9a24b37447ed746ed97d8f Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 07:11:42 +0000 Subject: [PATCH 30/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.h. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.h | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h index a7ea6f6fd..7a530bf34 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h @@ -158,4 +158,52 @@ HWTEST_F(ServiceTest, SUB_Service_ClearResidualBundleData_0100, TestSize.Level1) GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by ClearResidualBundleData."; } GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_ClearResidualBundleData_0100"; -} \ No newline at end of file +} + + + virtual uint32_t GetCallingTokenID() = 0; + MOCK_METHOD(uint32_t, GetCallingTokenID, ()); + + uint32_t IPCSkeleton::GetCallingTokenID() +{ + return OHOS::FileManagement::Backup::BIPCSkeleton::skeleton->GetCallingTokenID(); +} + + virtual bool WaitDisconnectDone() = 0; + + MOCK_METHOD(bool, WaitDisconnectDone, ()); + + bool SvcBackupConnection::WaitDisconnectDone() +{ + return BSvcBackupConnection::connect->WaitDisconnectDone(); +} + +bool SvcSessionManager::CleanAndCheckIfNeedWait(ErrCode &ret, std::vector &bundleNameList) +{ + return BSvcSessionManager::sessionManager->CleanAndCheckIfNeedWait(ret, bundleNameList); +} + +ErrCode SvcSessionManager::ClearSessionData() +{ + return BSvcSessionManager::sessionManager->ClearSessionData(); +} + +int SvcSessionManager::GetSessionCnt() +{ + return BSvcSessionManager::sessionManager->GetSessionCnt(); +} + +SvcSessionManager::Impl SvcSessionManager::GetImpl() +{ + return BSvcSessionManager::sessionManager->GetImpl(); +} + + virtual bool CleanAndCheckIfNeedWait(ErrCode &, std::vector &) = 0; + virtual ErrCode ClearSessionData() = 0; + virtual int GetSessionCnt() = 0; + virtual SvcSessionManager::Impl GetImpl() = 0; + + MOCK_METHOD(bool, CleanAndCheckIfNeedWait, (ErrCode &, std::vector &)); + MOCK_METHOD(ErrCode, ClearSessionData, ()); + MOCK_METHOD(int, GetSessionCnt, ()); + MOCK_METHOD(SvcSessionManager::Impl, GetImpl, ()); \ No newline at end of file -- Gitee From 4e7525c2971c004a55ee6ccdb6b06bdadee66e94 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 07:17:03 +0000 Subject: [PATCH 31/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.h. Signed-off-by: chensihan --- test/fuzztest/backupext_fuzzer/backupext_fuzzer.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h index 7a530bf34..bd986149f 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h @@ -1,3 +1,8 @@ +virtual std::vector GetFullBundleInfos(int32_t) = 0; + +MOCK_METHOD((std::vector), GetFullBundleInfos, (int32_t)); + + /* * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From a49c0606bdb65c60940d9ffe17a0d37ddc75ab4a Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 25 Sep 2024 09:05:37 +0000 Subject: [PATCH 32/37] update test/fuzztest/backupext_fuzzer/backupext_fuzzer.h. Signed-off-by: chensihan --- .../backupext_fuzzer/backupext_fuzzer.h | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h index bd986149f..8c2957f6e 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.h @@ -1,3 +1,31 @@ +bool SvcSessionManager::CleanAndCheckIfNeedWait(ErrCode &ret, std::vector &bundleNameList) +{ + return BSvcSessionManager::sessionManager->CleanAndCheckIfNeedWait(ret, bundleNameList); +} + +ErrCode SvcSessionManager::ClearSessionData() +{ + return BSvcSessionManager::sessionManager->ClearSessionData(); +} + +int SvcSessionManager::GetSessionCnt() +{ + return BSvcSessionManager::sessionManager->GetSessionCnt(); +} + +SvcSessionManager::Impl SvcSessionManager::GetImpl() +{ + return BSvcSessionManager::sessionManager->GetImpl(); +} + + +bool SvcBackupConnection::WaitDisconnectDone() +{ + return BSvcBackupConnection::connect->WaitDisconnectDone(); +} + + + virtual std::vector GetFullBundleInfos(int32_t) = 0; MOCK_METHOD((std::vector), GetFullBundleInfos, (int32_t)); -- Gitee From dbb457c554790b4c8cd5eb8f12d242684d866b1c Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 17 Oct 2024 08:44:02 +0000 Subject: [PATCH 33/37] update test/unittest/file_share_native/file_share_test.cpp. Signed-off-by: chensihan --- .../file_share_native/file_share_test.cpp | 227 ++++++++++++++++++ 1 file changed, 227 insertions(+) diff --git a/test/unittest/file_share_native/file_share_test.cpp b/test/unittest/file_share_native/file_share_test.cpp index dea3a408a..50fbdf56c 100644 --- a/test/unittest/file_share_native/file_share_test.cpp +++ b/test/unittest/file_share_native/file_share_test.cpp @@ -1,3 +1,230 @@ +diff --git a/tests/unittests/backup_ext/ext_extension_test.cpp b/tests/unittests/backup_ext/ext_extension_test.cpp +index 906817e..2651062 100644 +--- a/tests/unittests/backup_ext/ext_extension_test.cpp ++++ b/tests/unittests/backup_ext/ext_extension_test.cpp +@@ -589,4 +589,30 @@ HWTEST_F(ExtExtensionTest, Ext_Extension_Test_0900, testing::ext::TestSize.Level + } + GTEST_LOG_(INFO) << "ExtExtensionTest-end Ext_Extension_Test_0900"; + } ++ ++/** ++ * @tc.number: SUB_Ext_Extension_1000 ++ * @tc.name: Ext_Extension_Test_1000 ++ * @tc.desc: 测试 GetFileHandleForSpecialCloneCloud ++ * @tc.size: MEDIUM ++ * @tc.type: FUNC ++ * @tc.level Level 1 ++ * @tc.require: I9P3Y3 ++ */ ++HWTEST_F(ExtExtensionTest, Ext_Extension_Test_1000, testing::ext::TestSize.Level1) ++{ ++ GTEST_LOG_(INFO) << "ExtExtensionTest-begin Ext_Extension_Test_1000"; ++ try { ++ std::string fileName = "test.txt"; ++ auto ret = GetIncreFileHandleForSpecialVersion(fileName); ++ EXPECT_NE(ret, ERR_OK); ++ fileName = "/test.txt"; ++ ret = GetIncreFileHandleForSpecialVersion(fileName); ++ EXPECT_NE(ret, ERR_OK); ++ } catch (...) { ++ EXPECT_TRUE(false); ++ GTEST_LOG_(INFO) << "ExtExtensionTest-an exception occurred by construction."; ++ } ++ GTEST_LOG_(INFO) << "ExtExtensionTest-end Ext_Extension_Test_1000"; ++} + } // namespace OHOS::FileManagement::Backup +\ No newline at end of file +diff --git a/tests/unittests/backup_utils/b_json/b_json_clear_data_config_test.cpp b/tests/unittests/backup_utils/b_json/b_json_clear_data_config_test.cpp +index 1c4672e..a7e735a 100644 +--- a/tests/unittests/backup_utils/b_json/b_json_clear_data_config_test.cpp ++++ b/tests/unittests/backup_utils/b_json/b_json_clear_data_config_test.cpp +@@ -411,4 +411,84 @@ HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0600, testing::ext::Te + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0600"; + } ++ ++/** ++ * @tc.number: SUB_Clear_Data_Config_Test_0700 ++ * @tc.name: Clear_Data_Config_Test_0700 ++ * @tc.desc: 测试 InsertClearBundleRecord 接口 ++ * @tc.size: MEDIUM ++ * @tc.type: FUNC ++ * @tc.level Level 1 ++ * @tc.require: IAAMIK ++ */ ++HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0700, testing::ext::TestSize.Level1) ++{ ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0700"; ++ try { ++ string bundleName = "test1"; ++ string filePath = PATH + CONFIG_NAME; ++ int cjson = 0; ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); ++ EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ BJsonClearDataConfig config; ++ EXPECT_EQ(access(filePath.c_str(), F_OK), 0); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); ++ auto ret = config.InsertClearBundleRecord(bundleName); ++ EXPECT_FALSE(ret); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ ret = config.InsertClearBundleRecord(bundleName); ++ EXPECT_FALSE(ret); ++ } catch (...) { ++ EXPECT_TRUE(false); ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; ++ } ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0700"; ++} ++ ++/** ++ * @tc.number: SUB_Clear_Data_Config_Test_0800 ++ * @tc.name: Clear_Data_Config_Test_0800 ++ * @tc.desc: 测试 GetAllClearBundleRecords 接口 ++ * @tc.size: MEDIUM ++ * @tc.type: FUNC ++ * @tc.level Level 1 ++ * @tc.require: IAAMIK ++ */ ++HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0800, testing::ext::TestSize.Level1) ++{ ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0800"; ++ try { ++ string bundleName = "test1"; ++ string filePath = PATH + CONFIG_NAME; ++ int cjson = 0; ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); ++ EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ BJsonClearDataConfig config; ++ EXPECT_EQ(access(filePath.c_str(), F_OK), 0); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); ++ auto ret = config.GetAllClearBundleRecords(bundleName); ++ EXPECT_EQ(ret, {}); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ ret = config.GetAllClearBundleRecords(bundleName); ++ EXPECT_EQ(ret, {}); ++ } catch (...) { ++ EXPECT_TRUE(false); ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; ++ } ++ GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0800"; ++} + } // namespace OHOS::FileManagement::Backup +\ No newline at end of file +diff --git a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp +index 5607da2..fa38c26 100644 +--- a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp ++++ b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp +@@ -30,6 +30,9 @@ + namespace OHOS::FileManagement::Backup { + using namespace std; + using namespace testing; ++namespace { ++ const static int BUNDLE_INDEX_DEFAULT_VAL = 0; ++} + + class BJsonUtilTest : public testing::Test { + public: +@@ -284,4 +287,83 @@ HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleInfoJson_0402, testing::ext::TestS + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleInfoJson_0402"; + } ++ ++/** ++ * @tc.number: b_jsonutil_BuildOnProcessErrInfo_0501 ++ * @tc.name: b_jsonutil_BuildOnProcessErrInfo_0501 ++ * @tc.desc: Test function of BuildOnProcessErrInfo interface. ++ * @tc.size: MEDIUM ++ * @tc.type: FUNC ++ * @tc.level Level 0 ++ * @tc.require: I6F3GV ++ */ ++HWTEST_F(BJsonUtilTest, b_jsonutil_BuildOnProcessErrInfo_0501, testing::ext::TestSize.Level0) ++{ ++ GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildOnProcessErrInfo_0501"; ++ try { ++ std::string reportInfo; ++ std::string path; ++ int err = 0; ++ int cjson = 0; ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); ++ bool result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); ++ EXPECT_FALSE(result); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) ++ .WillOnce(Return(reinterpret_cast(&cjson))) ++ .WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); ++ EXPECT_FALSE(result); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) ++ .WillOnce(Return(reinterpret_cast(&cjson))) ++ .WillOnce(Return(reinterpret_cast(&cjson))) ++ .WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()).WillOnce(Return()); ++ result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); ++ EXPECT_FALSE(result); ++ ++ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) ++ .WillOnce(Return(reinterpret_cast(&cjson))) ++ .WillOnce(Return(reinterpret_cast(&cjson))) ++ .WillOnce(Return(reinterpret_cast(&cjson))); ++ EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); ++ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); ++ result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); ++ EXPECT_FALSE(result); ++ } catch (...) { ++ EXPECT_TRUE(false); ++ GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; ++ } ++ GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildOnProcessErrInfo_0501"; ++} ++ ++/** ++ * @tc.number: b_jsonutil_BuildBundleNameIndexInfo_0601 ++ * @tc.name: b_jsonutil_BuildBundleNameIndexInfo_0601 ++ * @tc.desc: Test function of BuildBundleNameIndexInfo interface. ++ * @tc.size: MEDIUM ++ * @tc.type: FUNC ++ * @tc.level Level 0 ++ * @tc.require: I6F3GV ++ */ ++HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleNameIndexInfo_0601, testing::ext::TestSize.Level0) ++{ ++ GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildBundleNameIndexInfo_0601"; ++ try { ++ std::string bundleName = "test"; ++ int appIndex = BUNDLE_INDEX_DEFAULT_VAL; ++ auto ret = BJsonUtil::BuildBundleNameIndexInfo(bundleName, appIndex); ++ EXPECT_EQ(ret, bundleName); ++ ++ appIndex = -1; ++ ret = BJsonUtil::BuildBundleNameIndexInfo(bundleName, appIndex); ++ EXPECT_NE(ret, bundleName); ++ } catch (...) { ++ EXPECT_TRUE(false); ++ GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; ++ } ++ GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleNameIndexInfo_0601"; ++} + } +\ No newline at end of file + + /* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From 1ab4dd0cb127063256588907e8571670a4fe6f00 Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 17 Oct 2024 08:51:34 +0000 Subject: [PATCH 34/37] update test/unittest/file_share_native/file_share_test.cpp. Signed-off-by: chensihan --- .../file_share_native/file_share_test.cpp | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/test/unittest/file_share_native/file_share_test.cpp b/test/unittest/file_share_native/file_share_test.cpp index 50fbdf56c..56534146e 100644 --- a/test/unittest/file_share_native/file_share_test.cpp +++ b/test/unittest/file_share_native/file_share_test.cpp @@ -1,3 +1,171 @@ +/** + * @tc.number: SUB_Clear_Data_Config_Test_0700 + * @tc.name: Clear_Data_Config_Test_0700 + * @tc.desc: 测试 InsertClearBundleRecord 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0700, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0700"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.InsertClearBundleRecord(bundleName); + EXPECT_FALSE(ret); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0700"; +} + +/** + * @tc.number: SUB_Clear_Data_Config_Test_0800 + * @tc.name: Clear_Data_Config_Test_0800 + * @tc.desc: 测试 GetAllClearBundleRecords 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0800, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0800"; + try { + string bundleName = "test1"; + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonClearDataConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + auto ret = config.GetAllClearBundleRecords(bundleName); + EXPECT_EQ(ret, {}); + + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + ret = config.GetAllClearBundleRecords(bundleName); + EXPECT_EQ(ret, {}); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0800"; +} + + +namespace { + const static int BUNDLE_INDEX_DEFAULT_VAL = 0; +} + + +/** + * @tc.number: b_jsonutil_BuildOnProcessErrInfo_0501 + * @tc.name: b_jsonutil_BuildOnProcessErrInfo_0501 + * @tc.desc: Test function of BuildOnProcessErrInfo interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildOnProcessErrInfo_0501, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildOnProcessErrInfo_0501"; + try { + std::string reportInfo; + std::string path; + int err = 0; + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + bool result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()).WillOnce(Return()); + result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); + EXPECT_FALSE(result); + + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))) + .WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + result = BJsonUtil::BuildOnProcessErrInfo(reportInfo, path, err); + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildOnProcessErrInfo_0501"; +} + +/** + * @tc.number: b_jsonutil_BuildBundleNameIndexInfo_0601 + * @tc.name: b_jsonutil_BuildBundleNameIndexInfo_0601 + * @tc.desc: Test function of BuildBundleNameIndexInfo interface. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleNameIndexInfo_0601, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildBundleNameIndexInfo_0601"; + try { + std::string bundleName = "test"; + int appIndex = BUNDLE_INDEX_DEFAULT_VAL; + auto ret = BJsonUtil::BuildBundleNameIndexInfo(bundleName, appIndex); + EXPECT_EQ(ret, bundleName); + + appIndex = -1; + ret = BJsonUtil::BuildBundleNameIndexInfo(bundleName, appIndex); + EXPECT_NE(ret, bundleName); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleNameIndexInfo_0601"; +} + + + + diff --git a/tests/unittests/backup_ext/ext_extension_test.cpp b/tests/unittests/backup_ext/ext_extension_test.cpp index 906817e..2651062 100644 --- a/tests/unittests/backup_ext/ext_extension_test.cpp -- Gitee From 640b2fd98ca3fb7616e6e41b73dd977efd8fb86a Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 23 Oct 2024 07:23:23 +0000 Subject: [PATCH 35/37] update services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp. Signed-off-by: chensihan --- .../app_gallery_dispose_proxy.cpp | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp index 75a5354b6..be8997d37 100644 --- a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp +++ b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp @@ -1,3 +1,94 @@ +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100 + * @tc.desc: Test function of IncrementalBackupOnResultReport interface for FAILURE. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9OVHB + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100"; + try { + std::string bundleName = "app01"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalBackupOnResultReport(RESULT_REPORT, bundleName); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); + proxy_->IncrementalBackupOnResultReport(RESULT_REPORT, bundleName); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(false)); + proxy_->IncrementalBackupOnResultReport(RESULT_REPORT, bundleName); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1)); + proxy_->IncrementalBackupOnResultReport(RESULT_REPORT, bundleName); + EXPECT_TRUE(false); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnResultReport."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100"; +} + +/** + * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0101 + * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0101 + * @tc.desc: Test function of IncrementalBackupOnResultReport interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0101, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0101"; + try { + EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); + EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)).WillOnce(Return(true)); + EXPECT_CALL(*mock_, SendRequest(_, _, _, _)) + .Times(1) + .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest)); + std::string bundleName = "app01"; + EXPECT_TRUE(proxy_ != nullptr); + proxy_->IncrementalBackupOnResultReport(RESULT_REPORT, bundleName); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by RestoreOnResultReport."; + } + GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0101"; +} + + + + /* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee From 436a57dc5b93bc027019dc547feafc63ba8b5ff4 Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 23 Oct 2024 07:30:57 +0000 Subject: [PATCH 36/37] update services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp. Signed-off-by: chensihan --- .../app_gallery_dispose_proxy.cpp | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp index be8997d37..818077afe 100644 --- a/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp +++ b/services/backup_sa/src/module_app_gallery/app_gallery_dispose_proxy.cpp @@ -1,3 +1,94 @@ +/** + * @tc.number: SUB_backup_sa_session_GetExtFileNameRequest_0101 + * @tc.name: SUB_backup_sa_session_GetExtFileNameRequest_0101 + * @tc.desc: 测试 GetExtFileNameRequest 获取暂存真实文件请求 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_GetExtFileNameRequest_0101, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_GetExtFileNameRequest_0101"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = 0; + sessionManagerPtr_->GetExtFileNameRequest(BUNDLE_NAME); + EXPECT_TRUE(true); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by GetExtFileNameRequest."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_GetExtFileNameRequest_0101"; +} + +/** + * @tc.number: SUB_backup_sa_session_GetExtFileNameRequest_0102 + * @tc.name: SUB_backup_sa_session_GetExtFileNameRequest_0102 + * @tc.desc: 测试 GetExtFileNameRequest 获取暂存真实文件请求 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_GetExtFileNameRequest_0102, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_GetExtFileNameRequest_0102"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.scenario = IServiceReverse::Scenario::UNDEFINED; + sessionManagerPtr_->GetExtFileNameRequest(BUNDLE_NAME); + EXPECT_TRUE(true); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by GetExtFileNameRequest."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_GetExtFileNameRequest_0102"; +} + +/** + * @tc.number: SUB_backup_sa_session_GetExtFileNameRequest_0103 + * @tc.name: SUB_backup_sa_session_GetExtFileNameRequest_0103 + * @tc.desc: 测试 GetExtFileNameRequest 获取暂存真实文件请求 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I6F3GV + */ +HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_GetExtFileNameRequest_0103, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_GetExtFileNameRequest_0103"; + try { + try { + EXPECT_TRUE(sessionManagerPtr_ != nullptr); + sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID; + sessionManagerPtr_->impl_.scenario = IServiceReverse::Scenario::RESTORE; + sessionManagerPtr_->GetExtFileNameRequest(BUNDLE_NAME); + EXPECT_TRUE(true); + } catch (BError &err) { + EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_INVAL_ARG); + } + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by GetExtFileNameRequest."; + } + GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_GetExtFileNameRequest_0103"; +} + + + + + + /** * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100 * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnResultReport_0100 -- Gitee From c85e26ea5bc7f370be15947d44ca8f8fee80bfc1 Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 24 Oct 2024 06:19:06 +0000 Subject: [PATCH 37/37] update tools/backup_tool/src/main.cpp. Signed-off-by: chensihan --- tools/backup_tool/src/main.cpp | 188 +++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) diff --git a/tools/backup_tool/src/main.cpp b/tools/backup_tool/src/main.cpp index 9b977652e..685757f56 100644 --- a/tools/backup_tool/src/main.cpp +++ b/tools/backup_tool/src/main.cpp @@ -1,3 +1,191 @@ +/** + * @tc.number: SUB_backup_ext_js_PromiseCallback_0200 + * @tc.name: SUB_backup_ext_js_PromiseCallback_0200 + * @tc.desc: 测试 PromiseCallback 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallback_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCallback_0200"; + try { + napi_env env = nullptr; + napi_callback_info info = nullptr; + g_isExtBackupValid = false; + auto ret = PromiseCallback(env, info); + EXPECT_TRUE(ret == nullptr); + g_isExtBackupValid = true; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallback."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallback_0200"; +} + + + +/** + * @tc.number: SUB_backup_ext_js_PromiseCallbackEx_0200 + * @tc.name: SUB_backup_ext_js_PromiseCallbackEx_0200 + * @tc.desc: 测试 PromiseCallbackEx 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallbackEx_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCallbackEx_0200"; + try { + napi_env env = nullptr; + napi_callback_info info = nullptr; + g_isExtBackupValid = false; + auto ret = PromiseCallbackEx(env, info); + EXPECT_TRUE(ret == nullptr); + g_isExtBackupValid = true; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallbackEx."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallbackEx_0200"; +} + + + + + + + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 + * @tc.desc: 测试 IncrementalRestoreOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + IncrementalInit(IServiceReverse::Scenario::RESTORE); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100 service_ == nullptr"; + return; + } + service_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + service_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalRestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101 + * @tc.name: SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101 + * @tc.desc: 测试 IncrementalRestoreOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + IncrementalInit(IServiceReverse::Scenario::BACKUP); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101 service_ == nullptr"; + return; + } + service_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + + IncrementalInit(IServiceReverse::Scenario::RESTORE, 1); + service_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalRestoreOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalRestoreOnProcessInfo_0101"; +} + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 + * @tc.name: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 + * @tc.desc: 测试 IncrementalBackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + IncrementalInit(IServiceReverse::Scenario::BACKUP); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100 service_ == nullptr"; + return; + } + service_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + service_->IncrementalRestoreOnProcessInfo(BUNDLE_NAME, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalBackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0100"; +} + +/** + * @tc.number: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101 + * @tc.name: SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101 + * @tc.desc: 测试 IncrementalBackupOnProcessInfo 接口 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: I9116W + */ +HWTEST_F(ServiceReverseTest, SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceReverseTest-begin SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101"; + try { + std::string processInfo = "{\"timeInfo\": \"\", \"resultInfo\": \"\"}"; + IncrementalInit(IServiceReverse::Scenario::RESTORE); + if (service_ == nullptr) { + GTEST_LOG_(INFO) << + "SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101 service_ == nullptr"; + return; + } + service_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + + IncrementalInit(IServiceReverse::Scenario::BACKUP, 1); + service_->IncrementalBackupOnProcessInfo(BUNDLE_NAME, processInfo); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceReverseTest-an exception occurred by IncrementalBackupOnProcessInfo."; + } + GTEST_LOG_(INFO) << "ServiceReverseTest-end SUB_backup_ServiceReverse_IncrementalBackupOnProcessInfo_0101"; +} + + + + + /* * Copyright (c) 2022-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); -- Gitee