From 86c78b97585e70cd1dc45d93cb3011a673613eee Mon Sep 17 00:00:00 2001 From: "yaoruozi1@huawei.com" Date: Thu, 13 Feb 2025 14:53:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=84=E7=90=86=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=80=97=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yaoruozi1@huawei.com --- .../include/module_external/bms_adapter.h | 2 + .../src/module_external/bms_adapter.cpp | 39 ++++++++++++++++++- services/backup_sa/src/module_ipc/service.cpp | 6 ++- .../src/module_ipc/service_incremental.cpp | 6 +-- .../src/module_ipc/svc_session_manager.cpp | 3 ++ .../mock/module_external/bms_adapter_mock.cpp | 10 +++++ .../include/bms_adapter_mock.h | 4 ++ .../module_external/src/bms_adapter_mock.cpp | 6 +++ .../module_ipc/service_incremental_test.cpp | 4 +- .../module_ipc/service_other_test.cpp | 4 +- 10 files changed, 74 insertions(+), 10 deletions(-) diff --git a/services/backup_sa/include/module_external/bms_adapter.h b/services/backup_sa/include/module_external/bms_adapter.h index 72fd55d18..13a7be7a1 100644 --- a/services/backup_sa/include/module_external/bms_adapter.h +++ b/services/backup_sa/include/module_external/bms_adapter.h @@ -80,6 +80,8 @@ public: static void CreatBackupEnv(const std::vector &bundleNameList, int32_t userId); + static std::vector GetBundleInfosForAppendBundles( + const std::vector &incrementalDataList, int32_t userId); private: static bool GetCurBundleExtenionInfo(AppExecFwk::BundleInfo &installedBundle, const std::string &bundleName, std::vector &extensionInfos, sptr bms, diff --git a/services/backup_sa/src/module_external/bms_adapter.cpp b/services/backup_sa/src/module_external/bms_adapter.cpp index db61d1369..12a70dd62 100644 --- a/services/backup_sa/src/module_external/bms_adapter.cpp +++ b/services/backup_sa/src/module_external/bms_adapter.cpp @@ -681,4 +681,41 @@ void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundl } HILOGI("CreatBackupEnv end"); } -} // namespace OHOS::FileManagement::Backup + +std::vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const std::vector &incrementalDataList, int32_t userId) +{ + vector bundleInfos; + auto bms = GetBundleManager(); + for (const auto &bundleIncData : incrementalDataList) { + auto bundleName = bundleIncData.bundleName; + HILOGE("Current bundle name is:%{public}s", bundleName.c_str()); + AppExecFwk::BundleInfo installedBundle; + std::vector extensionInfos; + bool getBundleSuccess = GetCurBundleExtenionInfo(installedBundle, bundleName, extensionInfos, bms, userId); + if (!getBundleSuccess) { + HILOGE("Failed to get bundle info from bms, bundleName:%{public}s", bundleName.c_str()); + continue; + } + struct BJsonEntityCaps::BundleBackupConfigPara backupPara; + if (!GetBackupExtConfig(extensionInfos, backupPara)) { + HILOGE("No backup extension ability found, bundleName:%{public}s", bundleName.c_str()); + continue; + } + bundleInfos.emplace_back(BJsonEntityCaps::BundleInfo {installedBundle.name, installedBundle.appIndex, + installedBundle.versionCode, + installedBundle.versionName, 0, 0, + backupPara.allToBackup, backupPara.fullBackupOnly, + backupPara.extensionName, + backupPara.restoreDeps, backupPara.supportScene, + backupPara.extraInfo}); + } + for (const auto &info : incrementalDataList) { + if (SAUtils::IsSABundleName(info.bundleName)) { + HILOGE("Current SA name is:%{public}s", info.bundleName.c_str()); + GetBundleInfoForSA(info.bundleName, bundleInfos); + } + } + return bundleInfos; +} +} // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index b48c7a195..3cf203c75 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -851,7 +851,8 @@ ErrCode Service::AppendBundlesBackupSession(const vector &bundleName return ret; } auto bundleDetails = MakeDetailList(bundleNames); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundleDetails, + session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); AppendBundles(supportBackupNames); SetCurrentBackupSessProperties(supportBackupNames, session_->GetSessionUserId(), backupInfos, false); @@ -894,7 +895,8 @@ ErrCode Service::AppendBundlesDetailsBackupSession(const vector &bun BJsonUtil::BuildBundleInfos(bundleNames, bundleInfos, bundleNamesOnly, session_->GetSessionUserId(), isClearDataFlags); auto bundleDetails = MakeDetailList(bundleNames); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundleDetails, + session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); AppendBundles(supportBackupNames); HandleCurGroupBackupInfos(backupInfos, bundleNameDetailMap, isClearDataFlags); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index b86784652..1ec3061e6 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -393,7 +393,7 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vectorDecreaseSessionCnt(__PRETTY_FUNCTION__); return ret; } - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundlesToBackup, session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); AppendBundles(supportBackupNames); @@ -439,7 +439,7 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector> bundleNameDetailMap = BJsonUtil::BuildBundleInfos(bundleNames, infos, bundleNamesOnly, session_->GetSessionUserId(), isClearDataFlags); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundlesToBackup, session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); AppendBundles(supportBackupNames); @@ -836,7 +836,7 @@ void Service::SetCurrentBackupSessProperties(const vector &bundleNames, void Service::SetBundleIncDataInfo(const std::vector& bundlesToBackup, - std::vector& supportBundleNames) + std::vector &supportBundleNames) { for (const auto &bundleInfo : bundlesToBackup) { std::string bundleName = bundleInfo.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 ec982c0cc..a0aafce1c 100644 --- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp @@ -16,6 +16,7 @@ #include "module_ipc/svc_session_manager.h" #include +#include #include #include #include @@ -865,6 +866,8 @@ void SvcSessionManager::SetBundleDataSize(const std::string &bundleName, int64_t return; } it->second.dataSize = dataSize; + HILOGI("Set bundle data size end, bundlename = %{public}s , datasize = %{public}" PRId64 "", + bundleName.c_str(), dataSize); } uint32_t SvcSessionManager::CalAppProcessTime(const std::string &bundleName) diff --git a/tests/mock/module_external/bms_adapter_mock.cpp b/tests/mock/module_external/bms_adapter_mock.cpp index 0b6954c1d..83f98eace 100644 --- a/tests/mock/module_external/bms_adapter_mock.cpp +++ b/tests/mock/module_external/bms_adapter_mock.cpp @@ -117,4 +117,14 @@ int64_t BundleMgrAdapter::GetBundleDataSize(const std::string &bundleName, int32 } void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundleNameList, int32_t userId) {} + +vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const vector &incrementalDataList, int32_t userId) +{ + vector bundleInfos; + bundleInfos.emplace_back( + BJsonEntityCaps::BundleInfo {"com.example.app2backup", 0, {}, {}, 0, 0, true, false, + "com.example.app2backup"}); + return bundleInfos; +} } // namespace OHOS::FileManagement::Backup diff --git a/tests/mock/module_external/include/bms_adapter_mock.h b/tests/mock/module_external/include/bms_adapter_mock.h index 364172921..fc3642d1a 100644 --- a/tests/mock/module_external/include/bms_adapter_mock.h +++ b/tests/mock/module_external/include/bms_adapter_mock.h @@ -40,6 +40,8 @@ public: virtual std::vector GetBundleInfosForIndex(const vector&, int32_t) = 0; virtual int64_t GetBundleDataSize(const std::string&, int32_t) = 0; virtual void CreatBackupEnv(const std::vector&, int32_t) = 0; + virtual std::vector + GetBundleInfosForAppendBundles(const std::vector&, int32_t) = 0; public: BBundleMgrAdapter() = default; virtual ~BBundleMgrAdapter() = default; @@ -67,6 +69,8 @@ public: MOCK_METHOD((std::vector), GetBundleInfosForIndex, (const vector&, int32_t)); MOCK_METHOD(int64_t, GetBundleDataSize, (const std::string&, int32_t)); MOCK_METHOD(void, CreatBackupEnv, (const std::vector&, int32_t)); + MOCK_METHOD((std::vector), GetBundleInfosForAppendBundles, + ((const std::vector&), int32_t)); }; } // namespace OHOS::FileManagement::Backup #endif // OHOS_FILEMGMT_BACKUP_BMS_ADAPTER_MOCK_H diff --git a/tests/mock/module_external/src/bms_adapter_mock.cpp b/tests/mock/module_external/src/bms_adapter_mock.cpp index e7dd3d0af..6ebc156ae 100644 --- a/tests/mock/module_external/src/bms_adapter_mock.cpp +++ b/tests/mock/module_external/src/bms_adapter_mock.cpp @@ -89,4 +89,10 @@ int64_t BundleMgrAdapter::GetBundleDataSize(const std::string &bundleName, int32 void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundleNameList, int32_t userId) {} +vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const vector &incrementalDataList, int32_t userId) +{ + return BBundleMgrAdapter::bms->GetBundleInfosForAppendBundles(incrementalDataList, userId); +} + } // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp index b63452aac..4a6ed74b6 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -605,7 +605,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental service->isOccupyingSession_ = false; vector bundleInfos; EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); EXPECT_EQ(service->AppendBundlesIncrementalBackupSession({}), BError(BError::Codes::OK).GetCode()); } catch (...) { EXPECT_TRUE(false); @@ -643,7 +643,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental vector bundleInfos; EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); ret = service->AppendBundlesIncrementalBackupSession({}, {}); EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode()); } catch (...) { diff --git a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp index 5df07ad2b..30ea8f00e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -1063,7 +1063,7 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0200, TestSize.Leve EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL)); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); auto ret = service->AppendBundlesBackupSession(bundleNames); EXPECT_EQ(ret, BError(BError::Codes::OK)); @@ -1131,7 +1131,7 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0200, TestSi EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap)); EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(infos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(infos)); EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); auto ret = service->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); EXPECT_EQ(ret, BError(BError::Codes::OK)); -- Gitee