From 6de214b64b0dc2c8fe5ecec584ab757617fb1119 Mon Sep 17 00:00:00 2001 From: BrainL Date: Tue, 20 May 2025 11:01:25 +0800 Subject: [PATCH 01/29] =?UTF-8?q?=E8=BF=BD=E5=8A=A0service=20mock,?= =?UTF-8?q?=E5=B9=B6=E5=88=A0=E9=99=A4=E5=AE=B9=E6=98=93proxy.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL Change-Id: I787fafd963d3687c76c37409029c44c11bd7ef72 --- .../src/module_ipc/svc_extension_proxy.cpp | 215 ------ .../backup_sa/module_client/BUILD.gn | 2 +- .../module_client/service_client_test.cpp | 6 +- .../backup_sa/module_client/service_mock.cpp | 625 ++++++++++++++++++ .../module_ipc/svc_extension_proxy_test.cpp | 544 --------------- 5 files changed, 629 insertions(+), 763 deletions(-) delete mode 100644 services/backup_sa/src/module_ipc/svc_extension_proxy.cpp create mode 100644 tests/unittests/backup_sa/module_client/service_mock.cpp delete mode 100644 tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp diff --git a/services/backup_sa/src/module_ipc/svc_extension_proxy.cpp b/services/backup_sa/src/module_ipc/svc_extension_proxy.cpp deleted file mode 100644 index bd0d8e8a0..000000000 --- a/services/backup_sa/src/module_ipc/svc_extension_proxy.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - * 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 "extension_proxy.h" - -#include "b_error/b_error.h" -#include "b_error/b_excep_utils.h" -#include "filemgmt_libhilog.h" -#include "iservice_registry.h" -#include "system_ability_definition.h" -#include "hitrace_meter.h" - -namespace OHOS::FileManagement::Backup { -using namespace std; -const int INVALID_FD = -1; - -UniqueFd SvcExtensionProxy::GetFileHandle(const string &fileName, int32_t &errCode) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - HILOGI("Start"); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - data.WriteInterfaceToken(GetDescriptor()); - - if (!data.WriteString(fileName)) { - BError(BError::Codes::SDK_INVAL_ARG, "Failed to send the fileName"); - return UniqueFd(-1); - } - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_GET_FILE_HANDLE), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return UniqueFd(-ret); - } - - HILOGI("Successful"); - bool fdFlag = reply.ReadBool(); - errCode = reply.ReadInt32(); - UniqueFd fd = UniqueFd(INVALID_FD); - if (fdFlag == true) { - fd = UniqueFd(reply.ReadFileDescriptor()); - } - return UniqueFd(fd.Release()); -} - -ErrCode SvcExtensionProxy::HandleClear() -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - HILOGI("Start"); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - data.WriteInterfaceToken(GetDescriptor()); - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_HANDLE_CLAER), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - - HILOGI("Successful"); - return reply.ReadInt32(); -} - -ErrCode SvcExtensionProxy::HandleBackup(bool isClearData) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - HILOGI("Start"); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor()) || !data.WriteBool(isClearData)) { - return BError(BError::Codes::SDK_INVAL_ARG, "build param fail."); - } - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_HANDLE_BACKUP), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - - HILOGI("Successful"); - return reply.ReadInt32(); -} - -ErrCode SvcExtensionProxy::PublishFile(const string &fileName) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - HILOGI("Start"); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - data.WriteInterfaceToken(GetDescriptor()); - - if (!data.WriteString(fileName)) { - BError(BError::Codes::SDK_INVAL_ARG, "Failed to send the fileName"); - return ErrCode(EPERM); - } - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_PUBLISH_FILE), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - - HILOGD("Successful"); - return reply.ReadInt32(); -} - -ErrCode SvcExtensionProxy::HandleRestore(bool isClearData) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - HILOGI("Start"); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor()) || !data.WriteBool(isClearData)) { - return BError(BError::Codes::SDK_INVAL_ARG, "build param fail."); - } - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_HANDLE_RESTORE), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - - HILOGI("Successful"); - return reply.ReadInt32(); -} - -ErrCode SvcExtensionProxy::GetBackupInfo(std::string &result) -{ - HILOGD("SvcExtensionProxy::GetBackupInfo begin."); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - data.WriteInterfaceToken(GetDescriptor()); - - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_GET_BACKUP_INFO), data, reply, option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - if (!reply.ReadInt32(ret)) { - HILOGE("fail to ReadInt32 ret"); - return ErrCode(ret); - } - if (ret != NO_ERROR) { - HILOGE("ret is not NO_ERROR. ret = %d", ret); - return ErrCode(ret); - } - if (!reply.ReadString(result)) { - HILOGE("fail to ReadInt32 ret"); - return ErrCode(ret); - } - HILOGI("SvcExtensionProxy::GetBackupInfo end. result: %s", result.c_str()); - return ret; -} - -ErrCode SvcExtensionProxy::UpdateFdSendRate(std::string &bundleName, int32_t sendRate) -{ - HILOGD("SvcExtensionProxy::UpdateFdSendRate begin."); - BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); - MessageParcel data; - data.WriteInterfaceToken(GetDescriptor()); - if (!data.WriteString(bundleName)) { - BError(BError::Codes::SDK_INVAL_ARG, "Failed to send bundleName"); - return ErrCode(EPERM); - } - if (!data.WriteInt32(sendRate)) { - BError(BError::Codes::SDK_INVAL_ARG, "Failed to send sendRate"); - return ErrCode(EPERM); - } - MessageParcel reply; - MessageOption option; - int32_t ret = - Remote()->SendRequest(static_cast(IExtensionInterfaceCode::CMD_UPDATE_FD_SENDRATE), data, reply, - option); - if (ret != NO_ERROR) { - HILOGE("Received error %{public}d when doing IPC", ret); - return ErrCode(ret); - } - if (!reply.ReadInt32(ret)) { - HILOGE("fail to read ret, ret is %{public}d", ret); - return ErrCode(ret); - } - HILOGI("SvcExtensionProxy::UpdateFdSendRate end."); - return ret; -} -} // namespace OHOS::FileManagement::Backup diff --git a/tests/unittests/backup_sa/module_client/BUILD.gn b/tests/unittests/backup_sa/module_client/BUILD.gn index 47a26fff8..bb988d321 100644 --- a/tests/unittests/backup_sa/module_client/BUILD.gn +++ b/tests/unittests/backup_sa/module_client/BUILD.gn @@ -32,11 +32,11 @@ ohos_unittest("service_client_test") { sources = [ "${path_backup}/tests/mock/utils_mock/src/utils_mock_global_variable.cpp", "service_client_test.cpp", + "service_mock.cpp", ] deps = [ "${path_backup}/interfaces/inner_api/native/backup_kit_inner:backup_kit_inner", - "${path_backup}/services/backup_sa:backup_sa_ipc_stub", "${path_backup}/utils:backup_utils", ] diff --git a/tests/unittests/backup_sa/module_client/service_client_test.cpp b/tests/unittests/backup_sa/module_client/service_client_test.cpp index 0cecf86a5..e1d19b4a8 100644 --- a/tests/unittests/backup_sa/module_client/service_client_test.cpp +++ b/tests/unittests/backup_sa/module_client/service_client_test.cpp @@ -346,13 +346,13 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); ret = proxy->InitRestoreSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); EXPECT_EQ(errMsg, ""); ret = proxy->InitBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); EXPECT_EQ(errMsg, ""); ret = proxy->InitIncrementalBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); EXPECT_EQ(errMsg, ""); GTEST_LOG_(INFO) << "ServiceClientTest-end SUB_service_client_test_1200"; diff --git a/tests/unittests/backup_sa/module_client/service_mock.cpp b/tests/unittests/backup_sa/module_client/service_mock.cpp new file mode 100644 index 000000000..08ffa9783 --- /dev/null +++ b/tests/unittests/backup_sa/module_client/service_mock.cpp @@ -0,0 +1,625 @@ +/* + * 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 "module_ipc/service.h" + +#include +#include +#include +#include + +#include "b_error/b_error.h" +#include "b_resources/b_constants.h" + +namespace OHOS::FileManagement::Backup { +using namespace std; + +int32_t Service::GetUserIdDefault() +{ + return 0; +} + +void Service::OnStart() {} + +void Service::OnStop() {} + +ErrCode Service::GetLocalCapabilitiesForBundleInfos(int &fd) +{ + fd = 1; + return BError(BError::Codes::OK); +} +ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +{ + if (remote == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + errMsg = "err"; + return BError(BError::Codes::OK); +} + +ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &reverseIpcRemoteObject, std::string &errMsg) +{ + if (reverseIpcRemoteObject == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + errMsg = "err"; + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesRestoreSessionDataByDetail(int fd, + const std::vector &bundleNames, + const std::vector &detailInfos, + int32_t restoreType, + int32_t userId) +{ + if (bundleNames.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (detailInfos.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (restoreType < 0 || userId < 0 || fd < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesRestoreSessionData(int fd, + const std::vector &bundleNames, + int32_t restoreType, + int32_t userId) +{ + if (bundleNames.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (restoreType < 0 || userId < 0 || fd < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} +ErrCode Service::AppendBundlesIncrementalBackupSessionWithBundleInfos( + const std::vector &bundlesToBackup, + const std::vector &bundleInfos) +{ + if (bundlesToBackup.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (bundleInfos.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::GetLocalCapabilities(int &fd) +{ + fd = 1; + return BError(BError::Codes::OK); +} + +UniqueFd Service::GetLocalCapabilities() +{ + return UniqueFd(-1); +} + +UniqueFd Service::GetLocalCapabilitiesForBundleInfos() +{ + return UniqueFd(-1); +} + +void Service::StopAll(const wptr &obj, bool force) {} + +ErrCode Service::VerifyCallerAndGetCallerName(std::string &bundleName) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::InitRestoreSession(const sptr &remote) +{ + if (remote == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::InitBackupSession(const sptr &remote) +{ + if (remote == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::Start() +{ + GTEST_LOG_(INFO) << "Service mock start"; + return BError(BError::Codes::OK); +} + +ErrCode Service::PublishFile(const BFileInfo &fileInfo) +{ + if (fileInfo.fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppFileReady(const string &fileName, int fd, int32_t errCode) +{ + if (fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (fd < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppDone(ErrCode errCode) +{ + if (errCode == 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (errCode == -1) { + return BError(BError::BackupErrorCode::E_EMPTY); + } + if (errCode > 0) { + return BError(BError::Codes::OK); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::ServiceResultReport(const std::string &restoreRetInfo, BackupRestoreScenario sennario, ErrCode errCode) +{ + if (restoreRetInfo.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + const std::vector &detailInfos, + RestoreTypeEnum restoreType, + int32_t userId) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + RestoreTypeEnum restoreType, + int32_t userId) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesBackupSession(const std::vector &bundleNames) +{ + if (bundleNames.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesDetailsBackupSession(const std::vector &bundleNames, + const std::vector &bundleInfos) +{ + if (bundleNames.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (bundleInfos.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::Finish() +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::LaunchBackupExtension(const BundleName &bundleName) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::LaunchBackupSAExtension(const BundleName &bundleName) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) +{ + if (bundleName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +void Service::OnBackupExtensionDied(const string &&bundleName, bool isCleanCalled) {} + +void Service::ExtConnectDied(const string &callName) {} + +void Service::ExtStart(const string &bundleName) {} + +int Service::Dump(int fd, const vector &args) +{ + return 0; +} + +void Service::ExtConnectFailed(const string &bundleName, ErrCode ret) +{ + GTEST_LOG_(INFO) << "ExtConnectFailed is OK"; +} + +void Service::ExtConnectDone(string bundleName) {} + +void Service::ClearSessionAndSchedInfo(const string &bundleName) {} + +ErrCode Service::VerifyCaller() +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::VerifyCaller(IServiceReverseType::Scenario scenario) +{ + return BError(BError::Codes::OK); +} + +void Service::OnAllBundlesFinished(ErrCode errCode) {} + +void Service::OnStartSched() {} + +void Service::SendStartAppGalleryNotify(const BundleName &bundleName) {} + +void Service::SessionDeactive() {} + +ErrCode Service::Release() +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::Cancel(const std::string &bundleName, int32_t &result) +{ + if (bundleName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (!bundleName.empty()) { + result = 0; + return BError(BError::Codes::OK); + } + result = BError(BError::Codes::OK); + return BError(BError::Codes::OK); +} + +ErrCode Service::GetLocalCapabilitiesIncremental(const std::vector &bundleNames, int &fd) +{ + fd = 1; + return BError(BError::Codes::OK); +} + +ErrCode Service::GetAppLocalListAndDoIncrementalBackup() +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::InitIncrementalBackupSession(const sptr &remote) +{ + if (remote == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +{ + if (remote == nullptr) { + return BError(BError::Codes::SA_BROKEN_IPC); + } + errMsg = "err"; + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector &bundlesToBackup) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector &bundlesToBackup, + const std::vector &infos) +{ + return BError(BError::Codes::OK); +} + +ErrCode Service::PublishIncrementalFile(const BFileInfo &fileInfo) +{ + if (fileInfo.fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::PublishSAIncrementalFile(const BFileInfo &fileInfo, int fd) +{ + if (fileInfo.fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::AppIncrementalFileReady(const std::string &fileName, + int fd, + int manifestFd, + int32_t appIncrementalFileReadyErrCode) +{ + if (fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (fd < 0 || manifestFd < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + + return BError(BError::Codes::OK); +} + +ErrCode Service::AppIncrementalDone(ErrCode errCode) +{ + if (errCode == 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (errCode == -1) { + return BError(BError::BackupErrorCode::E_EMPTY); + } + if (errCode > 0) { + return BError(BError::Codes::OK); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::GetIncrementalFileHandle(const string &bundleName, const string &fileName) +{ + if (bundleName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + if (fileName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::GetBackupInfo(const BundleName &bundleName, std::string &result) +{ + result = "abc"; + return BError(BError::Codes::OK); +} + +ErrCode Service::StartExtTimer(bool &isExtStart) +{ + if (isExtStart) { + return BError(BError::Codes::OK); + } + + return BError(BError::BackupErrorCode::E_TASKFAIL); +} + +ErrCode Service::StartFwkTimer(bool &isFwkStart) +{ + if (isFwkStart) { + return BError(BError::Codes::OK); + } + + return BError(BError::BackupErrorCode::E_TASKFAIL); +} + +ErrCode Service::StopExtTimer(bool &isExtStop) +{ + if (isExtStop) { + return BError(BError::Codes::OK); + } + return BError(BError::BackupErrorCode::E_TASKFAIL); +} + +ErrCode Service::RefreshDataSize(int64_t totalDatasize) +{ + if (totalDatasize < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +ErrCode Service::UpdateTimer(const BundleName &bundleName, uint32_t timeout, bool &result) +{ + if (bundleName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + result = false; + } + if (timeout < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + result = false; + } + result = true; + return BError(BError::Codes::OK); +} + +ErrCode Service::UpdateSendRate(const std::string &bundleName, int32_t sendRate, bool &result) +{ + if (bundleName.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + result = false; + } + if (sendRate < 0) { + return BError(BError::BackupErrorCode::E_INVAL); + result = false; + } + result = true; + return BError(BError::Codes::OK); +} + +ErrCode Service::ReportAppProcessInfo(const std::string &processInfo, const BackupRestoreScenario sennario) +{ + if (processInfo.empty()) { + return BError(BError::BackupErrorCode::E_INVAL); + } + return BError(BError::Codes::OK); +} + +void Service::OnSABackup(const std::string &bundleName, + const int &fd, + const std::string &result, + const ErrCode &errCode) +{ +} + +void Service::OnSARestore(const std::string &bundleName, const std::string &result, const ErrCode &errCode) {} + +ErrCode Service::ClearResidualBundleData(const std::string &bundleName) +{ + return BError(BError::Codes::OK); +} + +std::shared_ptr Service::GetExtensionMutex(const BundleName &bundleName) +{ + return make_shared(bundleName); +} + +void Service::RemoveExtensionMutex(const BundleName &bundleName) {} + +void Service::OnBundleStarted(BError error, sptr session, const BundleName &bundleName) {} + +void Service::HandleExceptionOnAppendBundles(sptr session, + const vector &appendBundleNames, + const vector &restoreBundleNames) +{ +} + +void Service::BundleBeginRadarReport(const std::string &bundleName, + const ErrCode errCode, + const IServiceReverseType::Scenario scenario) +{ +} + +void Service::BundleEndRadarReport(const std::string &bundleName, + ErrCode errCode, + const IServiceReverseType::Scenario scenario) +{ +} + +void Service::FileReadyRadarReport(const std::string &bundleName, + const std::string &fileName, + const ErrCode errCode, + const IServiceReverseType::Scenario scenario) +{ +} + +void Service::ExtensionConnectFailRadarReport(const std::string &bundleName, + const ErrCode errCode, + const IServiceReverseType::Scenario scenario) +{ +} + +void Service::PermissionCheckFailRadar(const std::string &info, const std::string &func) {} + +void Service::OnStartResRadarReport(const std::vector &bundleNameList, int32_t stage) {} + +std::string Service::GetCallerName() +{ + return ""; +} + +bool Service::IsReportBundleExecFail(const std::string &bundleName) +{ + return true; +} + +void Service::ClearBundleRadarReport() {} + +void Service::UpdateBundleRadarReport(const std::string &bundleName) {} + +bool Service::IsReportFileReadyFail(const std::string &bundleName) +{ + return true; +} + +void Service::ClearFileReadyRadarReport() {} + +void Service::UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo taskInfo) {} + +void Service::ClearFailedBundles() {} + +void Service::GetOldDeviceBackupVersion() {} + +void Service::CreateDirIfNotExist(const std::string &path) {} + +void Service::StartRunningTimer(const std::string &bundleName) {} + +std::vector Service::GetSupportBackupBundleNames(vector &, + bool, + const vector &) +{ + return {}; +} + +void Service::HandleNotSupportBundleNames(const vector &, vector &, bool) {} + +void Service::SetBundleIncDataInfo(const std::vector &, std::vector &) {} + +void Service::CancelTask(std::string bundleName, wptr ptr) {} + +void SetUserIdAndRestoreType(RestoreTypeEnum restoreType, int32_t userId) {} + +void Service::CallOnBundleEndByScenario(const std::string &bundleName, BackupRestoreScenario scenario, ErrCode errCode) +{ +} + +void Service::SetUserIdAndRestoreType(RestoreTypeEnum restoreType, int32_t userId) {} + +ErrCode Service::GetBackupDataSize(bool isPreciseScan, const std::vector &bundleNameList) +{ + return BError(BError::Codes::OK); +} + +void Service::GetDataSizeStepByStep(bool isPreciseScan, vector bundleNameList, string &scanning) {} + +void Service::GetPresumablySize(vector bundleNameList, string &scanning) {} + +void Service::GetPrecisesSize(vector bundleNameList, string &scanning) {} + +void Service::WriteToList(BJsonUtil::BundleDataSize bundleDataSize) {} + +void Service::DeleteFromList(size_t scannedSize) {} + +void Service::WriteScannedInfoToList(const string &bundleName, int64_t dataSize, int64_t incDataSize) {} + +void Service::SendScannedInfo(const string &scannendInfos, sptr session) {} + +void Service::CyclicSendScannedInfo(bool isPreciseScan, vector bundleNameList) {} + +bool Service::GetScanningInfo(wptr obj, size_t scannedSize, string &scanning) +{ + return true; +} + +void Service::SetScanningInfo(string &scanning, string name) {} +} // namespace OHOS::FileManagement::Backup diff --git a/tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp b/tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp deleted file mode 100644 index 75782d0a6..000000000 --- a/tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp +++ /dev/null @@ -1,544 +0,0 @@ -/* - * 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 "b_error/b_error.h" -#include "ext_extension_mock.h" -#include "message_parcel_mock.h" -#include "extension_proxy.h" -#include "unique_fd.h" - -namespace OHOS::FileManagement::Backup { -using namespace std; -using namespace testing; - -class SvcExtensionProxyTest : public testing::Test { -public: - static void SetUpTestCase(void); - static void TearDownTestCase(); - void SetUp() override {}; - void TearDown() override {}; -public: - static inline sptr proxy_ = nullptr; - static inline sptr mock_ = nullptr; - static inline shared_ptr messageParcelMock_ = nullptr; -}; - -void SvcExtensionProxyTest::SetUpTestCase() -{ - mock_ = sptr(new BackupExtExtensionMock()); - proxy_ = sptr(new ExtensionProxy(mock_)); - messageParcelMock_ = make_shared(); - MessageParcelMock::messageParcel = messageParcelMock_; -} -void SvcExtensionProxyTest::TearDownTestCase() -{ - mock_ = nullptr; - proxy_ = nullptr; - MessageParcelMock::messageParcel = nullptr; - messageParcelMock_ = nullptr; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_GetFileHandle_0100 - * @tc.name: SUB_Ext_Extension_proxy_GetFileHandle_0100 - * @tc.desc: 测试 GetFileHandle 获取真实文件接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetFileHandle_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetFileHandle_0100"; - try { - string fileName = "1.tar"; - int32_t errCode = 0; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - UniqueFd fd = proxy_->GetFileHandle(fileName, errCode); - EXPECT_LT(fd, BError(BError::Codes::OK)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - fd = proxy_->GetFileHandle(fileName, errCode); - EXPECT_LT(fd, BError(BError::Codes::OK)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadBool()).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1)); - fd = proxy_->GetFileHandle(fileName, errCode); - EXPECT_LT(fd, BError(BError::Codes::OK)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadBool()).WillOnce(Return(false)); - fd = proxy_->GetFileHandle(fileName, errCode); - EXPECT_LT(fd, BError(BError::Codes::OK)); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetFileHandle."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetFileHandle_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_HandleClear_0100 - * @tc.name: SUB_Ext_Extension_proxy_HandleClear_0100 - * @tc.desc: 测试 HandleClear 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleClear_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleClear_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->HandleClear(); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0)); - ret = proxy_->HandleClear(); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleClear."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleClear_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_HandleBackup_0100 - * @tc.name: SUB_Ext_Extension_proxy_HandleBackup_0100 - * @tc.desc: 测试 HandleBackup 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleBackup_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleBackup_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->HandleBackup(true); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0)); - ret = proxy_->HandleBackup(true); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleBackup."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleBackup_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_PublishFile_0100 - * @tc.name: SUB_Ext_Extension_proxy_PublishFile_0100 - * @tc.desc: 测试 PublishFile 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_PublishFile_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_PublishFile_0100"; - try { - string fileName = "1.tar"; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->PublishFile(fileName); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - ret = proxy_->PublishFile(fileName); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0)); - ret = proxy_->PublishFile(fileName); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by PublishFile."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_PublishFile_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_HandleRestore_0100 - * @tc.name: SUB_Ext_Extension_proxy_HandleRestore_0100 - * @tc.desc: 测试 HandleRestore 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleRestore_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleRestore_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->HandleRestore(true); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0)); - ret = proxy_->HandleRestore(true); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleRestore."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleRestore_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_GetBackupInfo_0100 - * @tc.name: SUB_Ext_Extension_proxy_GetBackupInfo_0100 - * @tc.desc: 测试 GetBackupInfo 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetBackupInfo_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetBackupInfo_0100"; - try { - string result = "result_report"; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->GetBackupInfo(result); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(false)); - ret = proxy_->GetBackupInfo(result); - EXPECT_EQ(BError(BError::Codes::OK), ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(EPERM), Return(true))); - ret = proxy_->GetBackupInfo(result); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(NO_ERROR), Return(true))); - EXPECT_CALL(*messageParcelMock_, ReadString(_)).WillOnce(Return(false)); - ret = proxy_->GetBackupInfo(result); - EXPECT_EQ(BError(BError::Codes::OK), ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(NO_ERROR), Return(true))); - EXPECT_CALL(*messageParcelMock_, ReadString(_)).WillOnce(Return(true)); - ret = proxy_->GetBackupInfo(result); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetBackupInfo."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetBackupInfo_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_UpdateFdSendRate_0100 - * @tc.name: SUB_Ext_Extension_proxy_UpdateFdSendRate_0100 - * @tc.desc: 测试 HandleRestore 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Service_GetBackupInfoCmdHandle_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_UpdateFdSendRate_0100"; - try { - std::string bundleName = "bundleName"; - int32_t sendRate = 0; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->UpdateFdSendRate(bundleName, sendRate); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->UpdateFdSendRate(bundleName, sendRate); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->UpdateFdSendRate(bundleName, sendRate); - EXPECT_EQ(EPERM, ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->UpdateFdSendRate(bundleName, sendRate); - EXPECT_EQ(BError(BError::Codes::OK), ret); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(true)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->UpdateFdSendRate(bundleName, sendRate); - EXPECT_EQ(BError(BError::Codes::OK), ret); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by UpdateFdSendRate."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_UpdateFdSendRate_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100 - * @tc.name: SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100 - * @tc.desc: 测试 GetIncrementalFileHandle 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100"; - try { - string fileName = "1.tar"; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - auto [ret, fd, reportFd] = proxy_->GetIncrementalFileHandle(fileName); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - tie(ret, fd, reportFd) = proxy_->GetIncrementalFileHandle(fileName); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1)).WillOnce(Return(-1)); - tie(ret, fd, reportFd) = proxy_->GetIncrementalFileHandle(fileName); - EXPECT_EQ(ret, ErrCode(BError::Codes::OK)); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetIncrementalFileHandle."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_PublishIncrementalFile_0100 - * @tc.name: SUB_Ext_Extension_proxy_PublishIncrementalFile_0100 - * @tc.desc: 测试 PublishIncrementalFile 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_PublishIncrementalFile_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_PublishIncrementalFile_0100"; - try { - string fileName = "1.tar"; - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->PublishIncrementalFile(fileName); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - ret = proxy_->PublishIncrementalFile(fileName); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR)); - ret = proxy_->PublishIncrementalFile(fileName); - EXPECT_EQ(ret, ErrCode(BError::Codes::OK)); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by PublishIncrementalFile."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_PublishIncrementalFile_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100 - * @tc.name: SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100 - * @tc.desc: 测试 HandleIncrementalBackup 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteFileDescriptor(_)).WillOnce(Return(true)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->HandleIncrementalBackup(UniqueFd(-1), UniqueFd(-1)); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteFileDescriptor(_)).WillOnce(Return(true)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR)); - ret = proxy_->HandleIncrementalBackup(UniqueFd(-1), UniqueFd(-1)); - EXPECT_EQ(ret, ErrCode(BError::Codes::OK)); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleIncrementalBackup."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_IncrementalOnBackup_0100 - * @tc.name: SUB_Ext_Extension_proxy_IncrementalOnBackup_0100 - * @tc.desc: 测试 IncrementalOnBackup 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_IncrementalOnBackup_0100, testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_IncrementalOnBackup_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_TRUE(proxy_ != nullptr); - ErrCode ret = proxy_->IncrementalOnBackup(true); - EXPECT_NE(ret, ErrCode(BError::Codes::OK)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(false)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->IncrementalOnBackup(true); - EXPECT_NE(ret, ErrCode(BError::Codes::OK)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->IncrementalOnBackup(true); - EXPECT_EQ(ret, ErrCode(EPERM)); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_TRUE(proxy_ != nullptr); - ret = proxy_->IncrementalOnBackup(true); - EXPECT_EQ(ret, ErrCode(BError::Codes::OK)); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by IncrementalOnBackup."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_IncrementalOnBackup_0100"; -} - -/** - * @tc.number: SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100 - * @tc.name: SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100 - * @tc.desc: 测试 GetIncrementalBackupFileHandle 接口调用成功和失败 - * @tc.size: MEDIUM - * @tc.type: FUNC - * @tc.level Level 1 - * @tc.require: I6F3GV - */ -HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100, - testing::ext::TestSize.Level1) -{ - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100"; - try { - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM)); - EXPECT_TRUE(proxy_ != nullptr); - auto [incrementalFd, manifestFd] = proxy_->GetIncrementalBackupFileHandle(); - EXPECT_EQ(incrementalFd, -1); - EXPECT_EQ(manifestFd, -1); - - EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true)); - EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR)); - EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1)).WillOnce(Return(-1)); - tie(incrementalFd, manifestFd) = proxy_->GetIncrementalBackupFileHandle(); - EXPECT_EQ(incrementalFd, -1); - EXPECT_EQ(manifestFd, -1); - } catch (...) { - EXPECT_TRUE(false); - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetIncrementalBackupFileHandle."; - } - GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100"; -} -} // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee From 0396ce79aaf467b5d87ccc9ab43752bdd9d5de4c Mon Sep 17 00:00:00 2001 From: BrainL Date: Tue, 20 May 2025 14:42:58 +0800 Subject: [PATCH 02/29] service_client_test modify. Signed-off-by: BrainL Change-Id: I78de99e3076f2130874e621cfc46bacd0b513b3f --- .../backup_sa/module_client/service_client_test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unittests/backup_sa/module_client/service_client_test.cpp b/tests/unittests/backup_sa/module_client/service_client_test.cpp index e1d19b4a8..f21fbcb18 100644 --- a/tests/unittests/backup_sa/module_client/service_client_test.cpp +++ b/tests/unittests/backup_sa/module_client/service_client_test.cpp @@ -346,13 +346,13 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); ret = proxy->InitRestoreSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); + EXPECT_EQ(ret, BError(BError::Codes::OK)); EXPECT_EQ(errMsg, ""); ret = proxy->InitBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); + EXPECT_EQ(ret, BError(BError::Codes::OK)); EXPECT_EQ(errMsg, ""); ret = proxy->InitIncrementalBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::BackupErrorCode::OK)); + EXPECT_EQ(ret, BError(BError::Codes::OK)); EXPECT_EQ(errMsg, ""); GTEST_LOG_(INFO) << "ServiceClientTest-end SUB_service_client_test_1200"; -- Gitee From 647d00a0b1ecf89ff2f4155427f2b25c9d079259 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 21 May 2025 18:01:30 +0800 Subject: [PATCH 03/29] fixed the gn for mock. Signed-off-by: BrainL Change-Id: I2610826ef2b9923f2a7ade6b84a52a81220b8a07 --- tests/unittests/backup_sa/module_client/BUILD.gn | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/unittests/backup_sa/module_client/BUILD.gn b/tests/unittests/backup_sa/module_client/BUILD.gn index bb988d321..6f1f0af70 100644 --- a/tests/unittests/backup_sa/module_client/BUILD.gn +++ b/tests/unittests/backup_sa/module_client/BUILD.gn @@ -30,13 +30,16 @@ ohos_unittest("service_client_test") { ] sources = [ + "${path_backup}/frameworks/native/backup_kit_inner/src/b_file_info.cpp", + "${path_backup}/frameworks/native/backup_kit_inner/src/service_client.cpp", + "${path_backup}/frameworks/native/backup_kit_inner/src/service_incremental_reverse.cpp", + "${path_backup}/frameworks/native/backup_kit_inner/src/service_reverse.cpp", "${path_backup}/tests/mock/utils_mock/src/utils_mock_global_variable.cpp", "service_client_test.cpp", - "service_mock.cpp", ] deps = [ - "${path_backup}/interfaces/inner_api/native/backup_kit_inner:backup_kit_inner", + "${path_backup}/services/backup_sa:backup_sa_ipc_stub", "${path_backup}/utils:backup_utils", ] -- Gitee From 3a5600ce638a8ae888ca17f555c0475f4e246877 Mon Sep 17 00:00:00 2001 From: BrainL Date: Sun, 25 May 2025 16:29:27 +0800 Subject: [PATCH 04/29] afs idl fd modify. Signed-off-by: BrainL Change-Id: I32de1ecff9723413ec9cba2d650db96c1f9cdc96 --- .../native/backup_ext/include/ext_extension.h | 4 +-- .../native/backup_ext/src/ext_extension.cpp | 31 +++++++++++++++---- services/backup_sa/BUILD.gn | 1 - services/backup_sa/ExtensionType.idl | 22 ------------- services/backup_sa/IExtension.idl | 6 ++-- .../src/module_ipc/service_incremental.cpp | 24 ++++++++------ 6 files changed, 44 insertions(+), 44 deletions(-) delete mode 100644 services/backup_sa/ExtensionType.idl diff --git a/frameworks/native/backup_ext/include/ext_extension.h b/frameworks/native/backup_ext/include/ext_extension.h index 6687ec5f9..312b23036 100644 --- a/frameworks/native/backup_ext/include/ext_extension.h +++ b/frameworks/native/backup_ext/include/ext_extension.h @@ -51,11 +51,11 @@ public: ErrCode PublishFile(const std::string &fileName) override; ErrCode HandleBackup(bool isClearData) override; ErrCode HandleRestore(bool isClearData) override; - ErrCode GetIncrementalFileHandle(const std::string &fileName, UniqueFdGroup &fdGroup) override; + ErrCode GetIncrementalFileHandle(const std::string &fileName, int &fd, int &reportFd, int &errCode) override; ErrCode PublishIncrementalFile(const std::string &fileName) override; ErrCode HandleIncrementalBackup(int incrementalFd, int manifestFd) override; ErrCode IncrementalOnBackup(bool isClearData) override; - ErrCode GetIncrementalBackupFileHandle(UniqueFdGroup &fdGroup) override; + ErrCode GetIncrementalBackupFileHandle(int &fd, int &reportFd) override; ErrCode GetBackupInfo(std::string &result) override; ErrCode UpdateFdSendRate(const std::string &bundleName, int32_t sendRate) override; void AsyncTaskRestoreForUpgrade(void); diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index 8bba955eb..ef1f18d10 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -222,7 +222,7 @@ ErrCode BackupExtExtension::GetFileHandleWithUniqueFd(const std::string &fileNam int &fd) { UniqueFd fileHandleFd(GetFileHandle(fileName, getFileHandleErrCode)); - fd = fileHandleFd.Release(); + fd = dup(fileHandleFd.Get()); return ERR_OK; } @@ -388,13 +388,14 @@ tuple BackupExtExtension::GetIncreFileHandleForNorm return {errCode, move(fd), move(reportFd)}; } -ErrCode BackupExtExtension::GetIncrementalFileHandle(const std::string &fileName, UniqueFdGroup &fdGroup) +ErrCode BackupExtExtension::GetIncrementalFileHandle(const std::string &fileName, + int &fd, int &reportFd, int &errCode) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - auto [errCode, fd, reportFd] = GetIncrementalFileHandle(fileName); - fdGroup.errCode = errCode; - fdGroup.fd = fd.Release(); - fdGroup.reportFd = reportFd.Release(); + auto [errCode, fdval, reportFdVal] = GetIncrementalFileHandle(fileName); + errCode = errCode; + fd = dup(fdval.Get()); + reportFd = dup(reportFdVal.Get()); return ERR_OK; } @@ -532,6 +533,7 @@ ErrCode BackupExtExtension::BigFileReady(TarMap &bigFileInfo, sptr pro } else { HILOGW("Current file execute app file ready interface failed, ret is:%{public}d", ret); } + close(fdval); fdNum++; RefreshTimeInfo(startTime, fdNum); } @@ -713,6 +715,7 @@ static ErrCode TarFileReady(const TarMap &tarFileInfo, sptr proxy) } else { HILOGE("TarFileReady AppFileReady fail to be invoked for %{public}s: ret = %{public}d", tarName.c_str(), ret); } + close(fdval); return ret; } @@ -2081,6 +2084,20 @@ ErrCode BackupExtExtension::IncrementalOnBackup(bool isClearData) return ERR_OK; } +ErrCode BackupExtExtension::GetIncrementalBackupFileHandle(int &fd, int &reportFd) +{ + auto [fd, reportFd] = GetIncrementalBackupFileHandle(); + fd = dup(fd.Get()); + reportFd = dup(reportFd.Get()); + return BError(BError::Codes::OK).GetCode(); +} + +tuple BackupExtExtension::GetIncrementalBackupFileHandle() +{ + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); + return {UniqueFd(-1), UniqueFd(-1)}; +} + static void WriteFile(const string &filename, const vector &srcFiles) { fstream f; @@ -2215,6 +2232,8 @@ ErrCode BackupExtExtension::IncrementalAllFileReady(const TarMap &pkgInfo, } else { HILOGI("successfully but the IncrementalAllFileReady interface fails to be invoked: %{public}d", ret); } + close(fdval); + close(manifestFdval); return ret; } diff --git a/services/backup_sa/BUILD.gn b/services/backup_sa/BUILD.gn index d20605286..c5983d3a5 100644 --- a/services/backup_sa/BUILD.gn +++ b/services/backup_sa/BUILD.gn @@ -22,7 +22,6 @@ idl_gen_interface("backup_idl") { "IServiceReverse.idl", ] sources_common = [ - "ExtensionType.idl", "ServiceReverseType.idl", "ServiceType.idl", ] diff --git a/services/backup_sa/ExtensionType.idl b/services/backup_sa/ExtensionType.idl deleted file mode 100644 index 19014d92c..000000000 --- a/services/backup_sa/ExtensionType.idl +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2025 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. - */ - -package OHOS.FileManagement.Backup.ExtensionType; - -struct UniqueFdGroup { - FileDescriptor fd; - FileDescriptor reportFd; - int errCode; -}; \ No newline at end of file diff --git a/services/backup_sa/IExtension.idl b/services/backup_sa/IExtension.idl index 4dcff5076..1d9b70b3a 100644 --- a/services/backup_sa/IExtension.idl +++ b/services/backup_sa/IExtension.idl @@ -13,18 +13,18 @@ * limitations under the License. */ -import ExtensionType; interface OHOS.FileManagement.Backup.IExtension{ [ipccode 1] void GetFileHandleWithUniqueFd([in] String fileName, [out] int getFileHandleErrCode, [out] FileDescriptor fd); [ipccode 2] void HandleClear(); [ipccode 3] void HandleBackup([in] boolean isClearData); [ipccode 4] void PublishFile([in] String fileName); [ipccode 5] void HandleRestore([in] boolean isClearData); - [ipccode 6] void GetIncrementalFileHandle([in] String fileName, [out] UniqueFdGroup fdGroup); + [ipccode 6] void GetIncrementalFileHandle([in] String fileName, + [out] FileDescriptor fd, [out] FileDescriptor reportFd, [out] int errCode); [ipccode 7] void PublishIncrementalFile([in] String fileName); [ipccode 8] void HandleIncrementalBackup([in] FileDescriptor incrementalFd, [in] FileDescriptor manifestFd); [ipccode 9] void IncrementalOnBackup([in] boolean isClearData); - [ipccode 10] void GetIncrementalBackupFileHandle([out] UniqueFdGroup fdGroup); + [ipccode 10] void GetIncrementalBackupFileHandle([out] FileDescriptor fd, [out] FileDescriptor reportFd); [ipccode 11] void GetBackupInfo([out] String getBackupInfoResult); [ipccode 12] void UpdateFdSendRate([in] String bundleName, [in] int sendRate); [ipccode 13] void User0OnBackup(); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index adfbf0e69..0c90e37e5 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -762,11 +762,13 @@ ErrCode Service::SendIncrementalFileHandle(const std::string &bundleName, const HILOGE("GetIncrementalFileHandle failed, bundleName:%{public}s", bundleName.c_str()); return BError(BError::Codes::SA_INVAL_ARG); } - UniqueFdGroup fdGroup; - proxy->GetIncrementalFileHandle(fileName, fdGroup); - UniqueFd fd(fdGroup.fd); - UniqueFd reportFd(fdGroup.reportFd); - auto err = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), fdGroup.errCode); + int fdVal = -1; + int reportFdVal = -1; + int errCode = -1; + proxy->GetIncrementalFileHandle(fileName, fdVal, reportFdVal, errCode); + UniqueFd fd(fdVal); + UniqueFd reportFd(reportFdVal); + auto err = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), errCode); if (err != ERR_OK) { HILOGE("Failed to send file handle, bundleName:%{public}s, fileName:%{public}s", bundleName.c_str(), GetAnonyPath(fileName).c_str()); @@ -829,11 +831,13 @@ bool Service::IncrementalBackup(const string &bundleName) } ErrCode Service::HelpToAppIncrementalFileReady(const string &bundleName, const string &fileName, sptr proxy) { - UniqueFdGroup fdGroup; - proxy->GetIncrementalFileHandle(fileName, fdGroup); - UniqueFd fd(fdGroup.fd); - UniqueFd reportFd(fdGroup.reportFd); - auto ret = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), fdGroup.errCode); + int fdVal = -1; + int reportFdVal = -1; + int errCode = -1; + proxy->GetIncrementalFileHandle(fileName, fdVal, reportFdVal, errCode); + UniqueFd fd(fdVal); + UniqueFd reportFd(reportFdVal); + auto ret = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), errCode); return ret; } -- Gitee From bdd1047c7ffd9dd0513bbec9eb06467a022dcbfb Mon Sep 17 00:00:00 2001 From: BrainL Date: Sun, 25 May 2025 16:40:28 +0800 Subject: [PATCH 05/29] fixed ut Signed-off-by: BrainL Change-Id: I4c9356ab3895d2ffe8c8ebb7def44233ff67e557 --- .../backup_sa/module_client/BUILD.gn | 5 +- .../module_client/service_client_test.cpp | 6 +- .../backup_sa/module_client/service_mock.cpp | 625 ------------------ 3 files changed, 4 insertions(+), 632 deletions(-) delete mode 100644 tests/unittests/backup_sa/module_client/service_mock.cpp diff --git a/tests/unittests/backup_sa/module_client/BUILD.gn b/tests/unittests/backup_sa/module_client/BUILD.gn index 6f1f0af70..47a26fff8 100644 --- a/tests/unittests/backup_sa/module_client/BUILD.gn +++ b/tests/unittests/backup_sa/module_client/BUILD.gn @@ -30,15 +30,12 @@ ohos_unittest("service_client_test") { ] sources = [ - "${path_backup}/frameworks/native/backup_kit_inner/src/b_file_info.cpp", - "${path_backup}/frameworks/native/backup_kit_inner/src/service_client.cpp", - "${path_backup}/frameworks/native/backup_kit_inner/src/service_incremental_reverse.cpp", - "${path_backup}/frameworks/native/backup_kit_inner/src/service_reverse.cpp", "${path_backup}/tests/mock/utils_mock/src/utils_mock_global_variable.cpp", "service_client_test.cpp", ] deps = [ + "${path_backup}/interfaces/inner_api/native/backup_kit_inner:backup_kit_inner", "${path_backup}/services/backup_sa:backup_sa_ipc_stub", "${path_backup}/utils:backup_utils", ] diff --git a/tests/unittests/backup_sa/module_client/service_client_test.cpp b/tests/unittests/backup_sa/module_client/service_client_test.cpp index f21fbcb18..0cecf86a5 100644 --- a/tests/unittests/backup_sa/module_client/service_client_test.cpp +++ b/tests/unittests/backup_sa/module_client/service_client_test.cpp @@ -346,13 +346,13 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); ret = proxy->InitRestoreSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); ret = proxy->InitBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); ret = proxy->InitIncrementalBackupSessionWithErrMsg(srptr, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK)); + EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); GTEST_LOG_(INFO) << "ServiceClientTest-end SUB_service_client_test_1200"; diff --git a/tests/unittests/backup_sa/module_client/service_mock.cpp b/tests/unittests/backup_sa/module_client/service_mock.cpp deleted file mode 100644 index 08ffa9783..000000000 --- a/tests/unittests/backup_sa/module_client/service_mock.cpp +++ /dev/null @@ -1,625 +0,0 @@ -/* - * 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 "module_ipc/service.h" - -#include -#include -#include -#include - -#include "b_error/b_error.h" -#include "b_resources/b_constants.h" - -namespace OHOS::FileManagement::Backup { -using namespace std; - -int32_t Service::GetUserIdDefault() -{ - return 0; -} - -void Service::OnStart() {} - -void Service::OnStop() {} - -ErrCode Service::GetLocalCapabilitiesForBundleInfos(int &fd) -{ - fd = 1; - return BError(BError::Codes::OK); -} -ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) -{ - if (remote == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - errMsg = "err"; - return BError(BError::Codes::OK); -} - -ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &reverseIpcRemoteObject, std::string &errMsg) -{ - if (reverseIpcRemoteObject == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - errMsg = "err"; - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesRestoreSessionDataByDetail(int fd, - const std::vector &bundleNames, - const std::vector &detailInfos, - int32_t restoreType, - int32_t userId) -{ - if (bundleNames.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (detailInfos.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (restoreType < 0 || userId < 0 || fd < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesRestoreSessionData(int fd, - const std::vector &bundleNames, - int32_t restoreType, - int32_t userId) -{ - if (bundleNames.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (restoreType < 0 || userId < 0 || fd < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} -ErrCode Service::AppendBundlesIncrementalBackupSessionWithBundleInfos( - const std::vector &bundlesToBackup, - const std::vector &bundleInfos) -{ - if (bundlesToBackup.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (bundleInfos.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::GetLocalCapabilities(int &fd) -{ - fd = 1; - return BError(BError::Codes::OK); -} - -UniqueFd Service::GetLocalCapabilities() -{ - return UniqueFd(-1); -} - -UniqueFd Service::GetLocalCapabilitiesForBundleInfos() -{ - return UniqueFd(-1); -} - -void Service::StopAll(const wptr &obj, bool force) {} - -ErrCode Service::VerifyCallerAndGetCallerName(std::string &bundleName) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::InitRestoreSession(const sptr &remote) -{ - if (remote == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::InitBackupSession(const sptr &remote) -{ - if (remote == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::Start() -{ - GTEST_LOG_(INFO) << "Service mock start"; - return BError(BError::Codes::OK); -} - -ErrCode Service::PublishFile(const BFileInfo &fileInfo) -{ - if (fileInfo.fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppFileReady(const string &fileName, int fd, int32_t errCode) -{ - if (fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (fd < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppDone(ErrCode errCode) -{ - if (errCode == 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (errCode == -1) { - return BError(BError::BackupErrorCode::E_EMPTY); - } - if (errCode > 0) { - return BError(BError::Codes::OK); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::ServiceResultReport(const std::string &restoreRetInfo, BackupRestoreScenario sennario, ErrCode errCode) -{ - if (restoreRetInfo.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, - const std::vector &bundleNames, - const std::vector &detailInfos, - RestoreTypeEnum restoreType, - int32_t userId) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, - const std::vector &bundleNames, - RestoreTypeEnum restoreType, - int32_t userId) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesBackupSession(const std::vector &bundleNames) -{ - if (bundleNames.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesDetailsBackupSession(const std::vector &bundleNames, - const std::vector &bundleInfos) -{ - if (bundleNames.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (bundleInfos.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::Finish() -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::LaunchBackupExtension(const BundleName &bundleName) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::LaunchBackupSAExtension(const BundleName &bundleName) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::GetFileHandle(const string &bundleName, const string &fileName) -{ - if (bundleName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -void Service::OnBackupExtensionDied(const string &&bundleName, bool isCleanCalled) {} - -void Service::ExtConnectDied(const string &callName) {} - -void Service::ExtStart(const string &bundleName) {} - -int Service::Dump(int fd, const vector &args) -{ - return 0; -} - -void Service::ExtConnectFailed(const string &bundleName, ErrCode ret) -{ - GTEST_LOG_(INFO) << "ExtConnectFailed is OK"; -} - -void Service::ExtConnectDone(string bundleName) {} - -void Service::ClearSessionAndSchedInfo(const string &bundleName) {} - -ErrCode Service::VerifyCaller() -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::VerifyCaller(IServiceReverseType::Scenario scenario) -{ - return BError(BError::Codes::OK); -} - -void Service::OnAllBundlesFinished(ErrCode errCode) {} - -void Service::OnStartSched() {} - -void Service::SendStartAppGalleryNotify(const BundleName &bundleName) {} - -void Service::SessionDeactive() {} - -ErrCode Service::Release() -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::Cancel(const std::string &bundleName, int32_t &result) -{ - if (bundleName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (!bundleName.empty()) { - result = 0; - return BError(BError::Codes::OK); - } - result = BError(BError::Codes::OK); - return BError(BError::Codes::OK); -} - -ErrCode Service::GetLocalCapabilitiesIncremental(const std::vector &bundleNames, int &fd) -{ - fd = 1; - return BError(BError::Codes::OK); -} - -ErrCode Service::GetAppLocalListAndDoIncrementalBackup() -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::InitIncrementalBackupSession(const sptr &remote) -{ - if (remote == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) -{ - if (remote == nullptr) { - return BError(BError::Codes::SA_BROKEN_IPC); - } - errMsg = "err"; - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector &bundlesToBackup) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector &bundlesToBackup, - const std::vector &infos) -{ - return BError(BError::Codes::OK); -} - -ErrCode Service::PublishIncrementalFile(const BFileInfo &fileInfo) -{ - if (fileInfo.fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::PublishSAIncrementalFile(const BFileInfo &fileInfo, int fd) -{ - if (fileInfo.fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::AppIncrementalFileReady(const std::string &fileName, - int fd, - int manifestFd, - int32_t appIncrementalFileReadyErrCode) -{ - if (fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (fd < 0 || manifestFd < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - - return BError(BError::Codes::OK); -} - -ErrCode Service::AppIncrementalDone(ErrCode errCode) -{ - if (errCode == 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (errCode == -1) { - return BError(BError::BackupErrorCode::E_EMPTY); - } - if (errCode > 0) { - return BError(BError::Codes::OK); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::GetIncrementalFileHandle(const string &bundleName, const string &fileName) -{ - if (bundleName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - if (fileName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::GetBackupInfo(const BundleName &bundleName, std::string &result) -{ - result = "abc"; - return BError(BError::Codes::OK); -} - -ErrCode Service::StartExtTimer(bool &isExtStart) -{ - if (isExtStart) { - return BError(BError::Codes::OK); - } - - return BError(BError::BackupErrorCode::E_TASKFAIL); -} - -ErrCode Service::StartFwkTimer(bool &isFwkStart) -{ - if (isFwkStart) { - return BError(BError::Codes::OK); - } - - return BError(BError::BackupErrorCode::E_TASKFAIL); -} - -ErrCode Service::StopExtTimer(bool &isExtStop) -{ - if (isExtStop) { - return BError(BError::Codes::OK); - } - return BError(BError::BackupErrorCode::E_TASKFAIL); -} - -ErrCode Service::RefreshDataSize(int64_t totalDatasize) -{ - if (totalDatasize < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -ErrCode Service::UpdateTimer(const BundleName &bundleName, uint32_t timeout, bool &result) -{ - if (bundleName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - result = false; - } - if (timeout < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - result = false; - } - result = true; - return BError(BError::Codes::OK); -} - -ErrCode Service::UpdateSendRate(const std::string &bundleName, int32_t sendRate, bool &result) -{ - if (bundleName.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - result = false; - } - if (sendRate < 0) { - return BError(BError::BackupErrorCode::E_INVAL); - result = false; - } - result = true; - return BError(BError::Codes::OK); -} - -ErrCode Service::ReportAppProcessInfo(const std::string &processInfo, const BackupRestoreScenario sennario) -{ - if (processInfo.empty()) { - return BError(BError::BackupErrorCode::E_INVAL); - } - return BError(BError::Codes::OK); -} - -void Service::OnSABackup(const std::string &bundleName, - const int &fd, - const std::string &result, - const ErrCode &errCode) -{ -} - -void Service::OnSARestore(const std::string &bundleName, const std::string &result, const ErrCode &errCode) {} - -ErrCode Service::ClearResidualBundleData(const std::string &bundleName) -{ - return BError(BError::Codes::OK); -} - -std::shared_ptr Service::GetExtensionMutex(const BundleName &bundleName) -{ - return make_shared(bundleName); -} - -void Service::RemoveExtensionMutex(const BundleName &bundleName) {} - -void Service::OnBundleStarted(BError error, sptr session, const BundleName &bundleName) {} - -void Service::HandleExceptionOnAppendBundles(sptr session, - const vector &appendBundleNames, - const vector &restoreBundleNames) -{ -} - -void Service::BundleBeginRadarReport(const std::string &bundleName, - const ErrCode errCode, - const IServiceReverseType::Scenario scenario) -{ -} - -void Service::BundleEndRadarReport(const std::string &bundleName, - ErrCode errCode, - const IServiceReverseType::Scenario scenario) -{ -} - -void Service::FileReadyRadarReport(const std::string &bundleName, - const std::string &fileName, - const ErrCode errCode, - const IServiceReverseType::Scenario scenario) -{ -} - -void Service::ExtensionConnectFailRadarReport(const std::string &bundleName, - const ErrCode errCode, - const IServiceReverseType::Scenario scenario) -{ -} - -void Service::PermissionCheckFailRadar(const std::string &info, const std::string &func) {} - -void Service::OnStartResRadarReport(const std::vector &bundleNameList, int32_t stage) {} - -std::string Service::GetCallerName() -{ - return ""; -} - -bool Service::IsReportBundleExecFail(const std::string &bundleName) -{ - return true; -} - -void Service::ClearBundleRadarReport() {} - -void Service::UpdateBundleRadarReport(const std::string &bundleName) {} - -bool Service::IsReportFileReadyFail(const std::string &bundleName) -{ - return true; -} - -void Service::ClearFileReadyRadarReport() {} - -void Service::UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo taskInfo) {} - -void Service::ClearFailedBundles() {} - -void Service::GetOldDeviceBackupVersion() {} - -void Service::CreateDirIfNotExist(const std::string &path) {} - -void Service::StartRunningTimer(const std::string &bundleName) {} - -std::vector Service::GetSupportBackupBundleNames(vector &, - bool, - const vector &) -{ - return {}; -} - -void Service::HandleNotSupportBundleNames(const vector &, vector &, bool) {} - -void Service::SetBundleIncDataInfo(const std::vector &, std::vector &) {} - -void Service::CancelTask(std::string bundleName, wptr ptr) {} - -void SetUserIdAndRestoreType(RestoreTypeEnum restoreType, int32_t userId) {} - -void Service::CallOnBundleEndByScenario(const std::string &bundleName, BackupRestoreScenario scenario, ErrCode errCode) -{ -} - -void Service::SetUserIdAndRestoreType(RestoreTypeEnum restoreType, int32_t userId) {} - -ErrCode Service::GetBackupDataSize(bool isPreciseScan, const std::vector &bundleNameList) -{ - return BError(BError::Codes::OK); -} - -void Service::GetDataSizeStepByStep(bool isPreciseScan, vector bundleNameList, string &scanning) {} - -void Service::GetPresumablySize(vector bundleNameList, string &scanning) {} - -void Service::GetPrecisesSize(vector bundleNameList, string &scanning) {} - -void Service::WriteToList(BJsonUtil::BundleDataSize bundleDataSize) {} - -void Service::DeleteFromList(size_t scannedSize) {} - -void Service::WriteScannedInfoToList(const string &bundleName, int64_t dataSize, int64_t incDataSize) {} - -void Service::SendScannedInfo(const string &scannendInfos, sptr session) {} - -void Service::CyclicSendScannedInfo(bool isPreciseScan, vector bundleNameList) {} - -bool Service::GetScanningInfo(wptr obj, size_t scannedSize, string &scanning) -{ - return true; -} - -void Service::SetScanningInfo(string &scanning, string name) {} -} // namespace OHOS::FileManagement::Backup -- Gitee From d337ef651c177cb358aef196c20dfb6a2a505e30 Mon Sep 17 00:00:00 2001 From: BrainL Date: Sun, 25 May 2025 20:22:58 +0800 Subject: [PATCH 06/29] fixed ut. Signed-off-by: BrainL Change-Id: Ie5385f13878e64efc50e6e0240b4dbda2749e16a --- .../native/backup_ext/include/ext_extension.h | 2 +- .../native/backup_ext/src/ext_extension.cpp | 18 ++---------------- .../backup_ext/src/sub_ext_extension.cpp | 8 ++++---- services/backup_sa/IExtension.idl | 2 +- .../src/module_ipc/service_incremental.cpp | 12 ++++++------ .../include/svc_extension_proxy_mock.h | 4 ++-- .../module_ipc/svc_extension_proxy_mock.cpp | 5 +++-- .../backup_impl/include/ext_extension_mock.h | 5 +++-- .../module_ipc/service_incremental_test.cpp | 8 ++++---- .../backup_sa/module_ipc/sub_service_test.cpp | 4 ++-- 10 files changed, 28 insertions(+), 40 deletions(-) diff --git a/frameworks/native/backup_ext/include/ext_extension.h b/frameworks/native/backup_ext/include/ext_extension.h index 312b23036..1a0086f2e 100644 --- a/frameworks/native/backup_ext/include/ext_extension.h +++ b/frameworks/native/backup_ext/include/ext_extension.h @@ -51,7 +51,7 @@ public: ErrCode PublishFile(const std::string &fileName) override; ErrCode HandleBackup(bool isClearData) override; ErrCode HandleRestore(bool isClearData) override; - ErrCode GetIncrementalFileHandle(const std::string &fileName, int &fd, int &reportFd, int &errCode) override; + ErrCode GetIncrementalFileHandle(const std::string &fileName, int &fd, int &reportFd, int32_t &fdErrCode) override; ErrCode PublishIncrementalFile(const std::string &fileName) override; ErrCode HandleIncrementalBackup(int incrementalFd, int manifestFd) override; ErrCode IncrementalOnBackup(bool isClearData) override; diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index ef1f18d10..72010a892 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -389,11 +389,11 @@ tuple BackupExtExtension::GetIncreFileHandleForNorm } ErrCode BackupExtExtension::GetIncrementalFileHandle(const std::string &fileName, - int &fd, int &reportFd, int &errCode) + int &fd, int &reportFd, int32_t &fdErrCode) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); auto [errCode, fdval, reportFdVal] = GetIncrementalFileHandle(fileName); - errCode = errCode; + fdErrCode = errCode; fd = dup(fdval.Get()); reportFd = dup(reportFdVal.Get()); return ERR_OK; @@ -2084,20 +2084,6 @@ ErrCode BackupExtExtension::IncrementalOnBackup(bool isClearData) return ERR_OK; } -ErrCode BackupExtExtension::GetIncrementalBackupFileHandle(int &fd, int &reportFd) -{ - auto [fd, reportFd] = GetIncrementalBackupFileHandle(); - fd = dup(fd.Get()); - reportFd = dup(reportFd.Get()); - return BError(BError::Codes::OK).GetCode(); -} - -tuple BackupExtExtension::GetIncrementalBackupFileHandle() -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - return {UniqueFd(-1), UniqueFd(-1)}; -} - static void WriteFile(const string &filename, const vector &srcFiles) { fstream f; diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index f54990c69..d9c7b07ec 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -1668,11 +1668,11 @@ void BackupExtExtension::PreDealExcludes(std::vector &excludes) excludes.resize(j); } -ErrCode BackupExtExtension::GetIncrementalBackupFileHandle(UniqueFdGroup& fdGroup) +ErrCode BackupExtExtension::GetIncrementalBackupFileHandle((int &fd, int &reportFd) { - auto [fd, reportFd] = GetIncrementalBackupFileHandle(); - fdGroup.fd = fd.Release(); - fdGroup.reportFd = reportFd.Release(); + auto [fdval, reportFdval] = GetIncrementalBackupFileHandle(); + fd = dup(fdval.Get()); + reportFd = dup(reportFd.Get()); return BError(BError::Codes::OK).GetCode(); } diff --git a/services/backup_sa/IExtension.idl b/services/backup_sa/IExtension.idl index 1d9b70b3a..c9c88cd95 100644 --- a/services/backup_sa/IExtension.idl +++ b/services/backup_sa/IExtension.idl @@ -20,7 +20,7 @@ interface OHOS.FileManagement.Backup.IExtension{ [ipccode 4] void PublishFile([in] String fileName); [ipccode 5] void HandleRestore([in] boolean isClearData); [ipccode 6] void GetIncrementalFileHandle([in] String fileName, - [out] FileDescriptor fd, [out] FileDescriptor reportFd, [out] int errCode); + [out] FileDescriptor fd, [out] FileDescriptor reportFd, [out] int fdErrCode); [ipccode 7] void PublishIncrementalFile([in] String fileName); [ipccode 8] void HandleIncrementalBackup([in] FileDescriptor incrementalFd, [in] FileDescriptor manifestFd); [ipccode 9] void IncrementalOnBackup([in] boolean isClearData); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 0c90e37e5..2215a7110 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -762,9 +762,9 @@ ErrCode Service::SendIncrementalFileHandle(const std::string &bundleName, const HILOGE("GetIncrementalFileHandle failed, bundleName:%{public}s", bundleName.c_str()); return BError(BError::Codes::SA_INVAL_ARG); } - int fdVal = -1; - int reportFdVal = -1; - int errCode = -1; + int fdVal = BConstants::INVALID_FD_NUM; + int reportFdVal = BConstants::INVALID_FD_NUM; + int errCode = BConstants::INVALID_FD_NUM; proxy->GetIncrementalFileHandle(fileName, fdVal, reportFdVal, errCode); UniqueFd fd(fdVal); UniqueFd reportFd(reportFdVal); @@ -831,9 +831,9 @@ bool Service::IncrementalBackup(const string &bundleName) } ErrCode Service::HelpToAppIncrementalFileReady(const string &bundleName, const string &fileName, sptr proxy) { - int fdVal = -1; - int reportFdVal = -1; - int errCode = -1; + int fdVal = BConstants::INVALID_FD_NUM; + int reportFdVal = BConstants::INVALID_FD_NUM; + int errCode = BConstants::INVALID_FD_NUM; proxy->GetIncrementalFileHandle(fileName, fdVal, reportFdVal, errCode); UniqueFd fd(fdVal); UniqueFd reportFd(reportFdVal); diff --git a/tests/mock/module_ipc/include/svc_extension_proxy_mock.h b/tests/mock/module_ipc/include/svc_extension_proxy_mock.h index 429f8b618..912fb53c7 100644 --- a/tests/mock/module_ipc/include/svc_extension_proxy_mock.h +++ b/tests/mock/module_ipc/include/svc_extension_proxy_mock.h @@ -30,11 +30,11 @@ MOCK_METHOD(ErrCode, HandleClear, ()); MOCK_METHOD(ErrCode, HandleBackup, (bool)); MOCK_METHOD(ErrCode, PublishFile, (const std::string &)); MOCK_METHOD(ErrCode, HandleRestore, (bool)); -MOCK_METHOD(ErrCode, GetIncrementalFileHandle, (const std::string &, UniqueFdGroup &)); +MOCK_METHOD(ErrCode, GetIncrementalFileHandle, (const std::string &, int &, int &, int32_t &)); MOCK_METHOD(ErrCode, PublishIncrementalFile, (const std::string &)); MOCK_METHOD(ErrCode, HandleIncrementalBackup, (int32_t, int32_t)); MOCK_METHOD(ErrCode, IncrementalOnBackup, (bool)); -MOCK_METHOD(ErrCode, GetIncrementalBackupFileHandle, (UniqueFdGroup &)); +MOCK_METHOD(ErrCode, GetIncrementalBackupFileHandle, (int &, int &)); MOCK_METHOD(ErrCode, GetBackupInfo, (std::string &)); MOCK_METHOD(ErrCode, UpdateFdSendRate, (const std::string &, int32_t)); MOCK_METHOD(ErrCode, User0OnBackup, ()); diff --git a/tests/mock/module_ipc/svc_extension_proxy_mock.cpp b/tests/mock/module_ipc/svc_extension_proxy_mock.cpp index d9e0e8c94..e73ee49e1 100644 --- a/tests/mock/module_ipc/svc_extension_proxy_mock.cpp +++ b/tests/mock/module_ipc/svc_extension_proxy_mock.cpp @@ -48,7 +48,8 @@ ErrCode ExtensionProxy::GetBackupInfo(std::string &result) return 0; } -ErrCode ExtensionProxy::GetIncrementalFileHandle(const string &fileName, UniqueFdGroup &fdGroup) +ErrCode ExtensionProxy::GetIncrementalFileHandle(const string &fileName, + int &fd, int &reportFd, int32_t &fdErrCode) { return 0; } @@ -78,7 +79,7 @@ ErrCode ExtensionProxy::User0OnBackup() return 0; } -ErrCode ExtensionProxy::GetIncrementalBackupFileHandle(UniqueFdGroup &fdGroup) +ErrCode ExtensionProxy::GetIncrementalBackupFileHandle(int &fd, int &reportFd) { return 0; } diff --git a/tests/unittests/backup_api/backup_impl/include/ext_extension_mock.h b/tests/unittests/backup_api/backup_impl/include/ext_extension_mock.h index 34aaef2ae..495583473 100644 --- a/tests/unittests/backup_api/backup_impl/include/ext_extension_mock.h +++ b/tests/unittests/backup_api/backup_impl/include/ext_extension_mock.h @@ -111,7 +111,8 @@ public: return BError(BError::Codes::OK); }; - ErrCode GetIncrementalFileHandle(const std::string &fileName, UniqueFdGroup &fdGroup) override + ErrCode GetIncrementalFileHandle(const std::string &fileName, + int &fd, int &reportFd, int32_t &fdErrCode) override { return BError(BError::Codes::OK); } @@ -139,7 +140,7 @@ public: return BError(BError::Codes::OK); }; - ErrCode GetIncrementalBackupFileHandle(UniqueFdGroup &fdGroup) override + ErrCode GetIncrementalBackupFileHandle(int &fd, int &reportFd) override { return BError(BError::Codes::OK); }; 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 708919917..5813e2ea9 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -1354,7 +1354,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::RUNNING)); EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverseType::Scenario::BACKUP)); EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy)); EXPECT_CALL(*srProxy, IncrementalBackupOnFileReady(_, _, _, _, _)).WillOnce(Return(0)); @@ -1369,7 +1369,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::RUNNING)); EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverseType::Scenario::RESTORE)); EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy)); EXPECT_CALL(*srProxy, IncrementalRestoreOnFileReady(_, _, _, _, _)).WillOnce(Return(0)); @@ -1488,7 +1488,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0100, EXPECT_CALL(*srProxy, IncrementalRestoreOnBundleStarted(_, _)).WillOnce(Return(0)); EXPECT_CALL(*session, GetOldBackupVersion()).WillOnce(Return("")); EXPECT_CALL(*session, GetExtFileNameRequest(_)).WillOnce(Return(fileNameVec)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*srProxy, IncrementalRestoreOnFileReady(_, _, _, _, _)).WillOnce(Return(0)); EXPECT_TRUE(service->IncrementalBackup(bundleName)); } catch (...) { @@ -1525,7 +1525,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0200, EXPECT_CALL(*srProxy, IncrementalRestoreOnBundleStarted(_, _)).WillOnce(Return(0)); EXPECT_CALL(*session, GetOldBackupVersion()).WillOnce(Return("1.0.0")); EXPECT_CALL(*session, GetExtFileNameRequest(_)).WillOnce(Return(fileNameVec)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*srProxy, IncrementalRestoreOnFileReady(_, _, _, _, _)).WillOnce(Return(0)); EXPECT_TRUE(service->IncrementalBackup(bundleName)); diff --git a/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp b/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp index bb02a82c8..06c29f388 100644 --- a/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp @@ -300,7 +300,7 @@ HWTEST_F(ServiceTest, SUB_Service_GetFileHandle_0100, TestSize.Level1) EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::RUNNING)); EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy)); EXPECT_CALL(*srProxy, RestoreOnFileReady(_, _, _, _)).WillOnce(Return(0)); auto ret = service->GetFileHandle(bundleName, fileName); @@ -313,7 +313,7 @@ HWTEST_F(ServiceTest, SUB_Service_GetFileHandle_0100, TestSize.Level1) EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::RUNNING)); EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); - EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _)).WillOnce(Return(0)); + EXPECT_CALL(*svcProxy, GetIncrementalFileHandle(_, _, _, _)).WillOnce(Return(0)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); -- Gitee From 0b736600f5ff95a8c8f5739d3ad941e5e5ffa9fb Mon Sep 17 00:00:00 2001 From: BrainL Date: Sun, 25 May 2025 20:33:37 +0800 Subject: [PATCH 07/29] fixed ut Signed-off-by: BrainL Change-Id: I340920e6ee8e1bdd54511909dd3470ee43cd84d4 --- frameworks/native/backup_ext/src/sub_ext_extension.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index d9c7b07ec..81ac52519 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -1679,6 +1679,6 @@ ErrCode BackupExtExtension::GetIncrementalBackupFileHandle((int &fd, int &report tuple BackupExtExtension::GetIncrementalBackupFileHandle() { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - return {UniqueFd(-1), UniqueFd(-1)}; + return {UniqueFd(BConstants::INVALID_FD_NUM), UniqueFd(BConstants::INVALID_FD_NUM)}; } } // namespace OHOS::FileManagement::Backup -- Gitee From 865ad4a767f1144c196f2e19cdfee6f0b329daac Mon Sep 17 00:00:00 2001 From: BrainL Date: Sun, 25 May 2025 21:43:07 +0800 Subject: [PATCH 08/29] fixedcode Signed-off-by: BrainL Change-Id: Idc5d28621b72ce9592c98c7447d05828cf42d97e --- frameworks/native/backup_ext/src/sub_ext_extension.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index 81ac52519..b771262fe 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -1668,11 +1668,11 @@ void BackupExtExtension::PreDealExcludes(std::vector &excludes) excludes.resize(j); } -ErrCode BackupExtExtension::GetIncrementalBackupFileHandle((int &fd, int &reportFd) +ErrCode BackupExtExtension::GetIncrementalBackupFileHandle(int &fd, int &reportFd) { auto [fdval, reportFdval] = GetIncrementalBackupFileHandle(); fd = dup(fdval.Get()); - reportFd = dup(reportFd.Get()); + reportFd = dup(reportFdval.Get()); return BError(BError::Codes::OK).GetCode(); } -- Gitee From 16da2e4ecc54605c10c7b84262f8b99176699144 Mon Sep 17 00:00:00 2001 From: Wannabe Date: Tue, 27 May 2025 18:17:40 +0800 Subject: [PATCH 09/29] During the cloning process, repair the scanning small file anomaly. Signed-off-by: Wannabe --- utils/include/b_utils/scan_file_singleton.h | 2 +- utils/src/b_filesystem/b_dir.cpp | 14 ++++++++------ utils/src/b_utils/scan_file_singleton.cpp | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/utils/include/b_utils/scan_file_singleton.h b/utils/include/b_utils/scan_file_singleton.h index 6fde188d8..a3174279b 100644 --- a/utils/include/b_utils/scan_file_singleton.h +++ b/utils/include/b_utils/scan_file_singleton.h @@ -58,7 +58,7 @@ private: std::map smallFiles_; std::mutex mutexLock_; std::condition_variable waitForFilesAddCv_; - bool isCalculateCompeleted_ = false; + bool isCalculateCompleted_ = false; uint32_t includeSize_ = 0; uint32_t excludeSize_ = 0; }; diff --git a/utils/src/b_filesystem/b_dir.cpp b/utils/src/b_filesystem/b_dir.cpp index b1da1f0e6..3cefa2276 100644 --- a/utils/src/b_filesystem/b_dir.cpp +++ b/utils/src/b_filesystem/b_dir.cpp @@ -63,6 +63,12 @@ static bool IsEmptyDirectory(const string &path) return isEmpty; } +static void InsertSmallFiles(std::map &smallFiles, std::string fileName, size_t size) +{ + ScanFileSingleton::GetInstance().AddSmallFile(fileName, size); + smallFiles.emplace(make_pair(fileName, size)); +} + static tuple, map> GetFile(const string &path, off_t size = -1) { map files; @@ -77,7 +83,9 @@ static tuple, map> GetFile(con } if (sta.st_size <= size) { smallFiles.emplace(make_pair(path, sta.st_size)); + InsertSmallFiles(smallFiles, path, sta.st_size); } else { + ScanFileSingleton::GetInstance().AddBigFile(path, sta); files.try_emplace(path, sta); } return {BError(BError::Codes::OK).GetCode(), files, smallFiles}; @@ -94,12 +102,6 @@ static uint32_t CheckOverLongPath(const string &path) return len; } -static void InsertSmallFiles(std::map &smallFiles, std::string fileName, size_t size) -{ - ScanFileSingleton::GetInstance().AddSmallFile(fileName, size); - smallFiles.emplace(make_pair(fileName, size)); -} - static tuple, map> GetDirFilesDetail(const string &path, bool recursion, off_t size = -1) diff --git a/utils/src/b_utils/scan_file_singleton.cpp b/utils/src/b_utils/scan_file_singleton.cpp index 86fd425ca..8761a4cc3 100644 --- a/utils/src/b_utils/scan_file_singleton.cpp +++ b/utils/src/b_utils/scan_file_singleton.cpp @@ -25,7 +25,7 @@ ScanFileSingleton& ScanFileSingleton::GetInstance() ScanFileSingleton::~ScanFileSingleton() { - isCalculateCompeleted_ = false; + isCalculateCompleted_ = false; } void ScanFileSingleton::AddBigFile(const std::string& key, const struct stat& value) @@ -55,13 +55,13 @@ std::map ScanFileSingleton::GetAllBigFiles() bool ScanFileSingleton::GetCompeletedFlag() { std::lock_guard lock(mutexLock_); - return isCalculateCompeleted_; + return isCalculateCompleted_; } void ScanFileSingleton::SetCompeletedFlag(bool value) { std::lock_guard lock(mutexLock_); - isCalculateCompeleted_ = value; + isCalculateCompleted_ = value; if (value) { waitForFilesAddCv_.notify_all(); } @@ -101,7 +101,7 @@ void ScanFileSingleton::WaitForFiles() { HILOGI("calculate is uncompleted, need to wait"); std::unique_lock lock(mutexLock_); - waitForFilesAddCv_.wait(lock, [this] {return !bigFileQueue_.empty() || isCalculateCompeleted_; }); + waitForFilesAddCv_.wait(lock, [this] {return !bigFileQueue_.empty() || isCalculateCompleted_; }); } } // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee From afb87eac0cc9ac9e205d0acb6ceec2b88400c0f4 Mon Sep 17 00:00:00 2001 From: GengYinzong Date: Tue, 27 May 2025 18:45:22 -0700 Subject: [PATCH 10/29] fix Signed-off-by: GengYinzong --- .../innerkits/native/file_share/src/file_permission.cpp | 2 +- interfaces/kits/js/file_share/grant_permissions.cpp | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/interfaces/innerkits/native/file_share/src/file_permission.cpp b/interfaces/innerkits/native/file_share/src/file_permission.cpp index ca15f6a4f..5cf2d45fd 100644 --- a/interfaces/innerkits/native/file_share/src/file_permission.cpp +++ b/interfaces/innerkits/native/file_share/src/file_permission.cpp @@ -340,7 +340,7 @@ int32_t FilePermission::GrantPermission(const vector &uriPolicies #ifdef SANDBOX_MANAGER if (uriPolicies.size() == 0 || uriPolicies.size() > MAX_ARRAY_SIZE) { LOGE("The number of result codes exceeds the maximum"); - return FileManagement::LibN::E_PARAMS; + return EPERM; } vector pathPolicies = GetPathPolicyInfoFromUriPolicyInfo(uriPolicies, errorResults, false); if (pathPolicies.size() == 0) { diff --git a/interfaces/kits/js/file_share/grant_permissions.cpp b/interfaces/kits/js/file_share/grant_permissions.cpp index 742232580..123355014 100644 --- a/interfaces/kits/js/file_share/grant_permissions.cpp +++ b/interfaces/kits/js/file_share/grant_permissions.cpp @@ -529,11 +529,8 @@ napi_value GrantDecUriPermission(napi_env env, FileManagement::LibN::NFuncArg &f shared_ptr arg = make_shared(); if (arg == nullptr) { - LOGE("Make_shared is failed"); - std::tuple errInfo = - std::make_tuple(E_UNKNOWN_ERROR, "Out of memory, execute make_shared function failed"); - ErrParam errorParam = [errInfo]() { return errInfo; }; - NError(errorParam).ThrowErr(env); + LOGE("PolicyInfoResultArgs make_shared is failed"); + NError(E_NOMEM).ThrowErr(env); return nullptr; } auto cbExec = [uriPolicies, targetBundleName, appCloneIndex {move(appCloneIndex)}, arg]() -> NError { -- Gitee From 7a648c06843764f8fcae0d9685787c71a6201af9 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Wed, 28 May 2025 16:08:07 +0800 Subject: [PATCH 11/29] cfi check Signed-off-by: wangpeng --- interfaces/kits/cj/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/interfaces/kits/cj/BUILD.gn b/interfaces/kits/cj/BUILD.gn index 1e2d4d25a..d1c761ea9 100644 --- a/interfaces/kits/cj/BUILD.gn +++ b/interfaces/kits/cj/BUILD.gn @@ -16,6 +16,7 @@ import("//foundation/filemanagement/app_file_service/app_file_service.gni") import("//foundation/filemanagement/app_file_service/backup.gni") ohos_shared_library("cj_file_fileuri_ffi") { + branch_protector_ret = "pac_ret" sanitize = { integer_overflow = true ubsan = true -- Gitee From d3a13a20b28a6b05b61419ee14b89102db4060f7 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 28 May 2025 16:41:10 +0800 Subject: [PATCH 12/29] =?UTF-8?q?idl=E5=8C=96=E5=BC=82=E5=B8=B8=E7=B3=BBer?= =?UTF-8?q?rMsg=E8=BF=94=E5=9B=9E=E7=BB=93=E6=9E=9C=E5=AF=B9=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL Change-Id: Icaaf4a7c55489b80fd68ca1424f4254b58fd44af --- .../src/b_incremental_backup_session.cpp | 2 +- .../src/b_incremental_restore_session.cpp | 2 +- .../backup_kit_inner/src/b_session_backup.cpp | 2 +- services/backup_sa/IService.idl | 10 ++-- .../backup_sa/include/module_ipc/service.h | 11 ++-- .../src/module_ipc/service_incremental.cpp | 9 +++- .../backup_sa/src/module_ipc/sub_service.cpp | 15 ++++-- .../backup_kit_inner/service_proxy_mock.cpp | 16 ++++-- tests/mock/module_ipc/service_mock.cpp | 12 +++-- .../module_client/service_client_test.cpp | 12 ++--- .../module_ipc/service_incremental_test.cpp | 38 +++++++------- .../module_ipc/service_other_test.cpp | 3 +- .../backup_sa/module_ipc/service_test.cpp | 4 +- .../module_ipc/service_throw_test.cpp | 51 ++++++++++--------- .../session/b_incremental_session_test.cpp | 4 +- .../backup_sa/session/service_proxy_mock.cpp | 12 +++-- .../backup_sa/session/service_proxy_mock.h | 10 ++-- 17 files changed, 131 insertions(+), 82 deletions(-) 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 69b84aa79..018099e08 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 @@ -71,7 +71,7 @@ unique_ptr BIncrementalBackupSession::Init(Callbacks HILOGI("Failed to get backup service"); return nullptr; } - errCode = proxy->InitIncrementalBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errMsg); + proxy->InitIncrementalBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { HILOGE("Failed to Backup because of %{public}d", errCode); AppRadar::Info info("", "", ""); 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 5c9864eef..131ff3a0c 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 @@ -73,7 +73,7 @@ unique_ptr BIncrementalRestoreSession::Init(Callback HILOGE("Init IncrementalRestoreSession failed, %{public}s", errMsg.c_str()); return nullptr; } - errCode = proxy->InitRestoreSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errMsg); + errCode = proxy->InitRestoreSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { HILOGE("Failed to Restore because of %{public}d", errCode); AppRadar::Info info ("", "", "create restore session failed"); 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 8378cf28a..cf6a3abca 100644 --- a/frameworks/native/backup_kit_inner/src/b_session_backup.cpp +++ b/frameworks/native/backup_kit_inner/src/b_session_backup.cpp @@ -71,7 +71,7 @@ unique_ptr BSessionBackup::Init(Callbacks callbacks, HILOGI("Failed to get backup service"); return nullptr; } - errCode = proxy->InitBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errMsg); + proxy->InitBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { HILOGE("Failed to Backup because of %{public}d", errCode); AppRadar::Info info("", "", ""); diff --git a/services/backup_sa/IService.idl b/services/backup_sa/IService.idl index d5cc82be5..8d03b1f91 100644 --- a/services/backup_sa/IService.idl +++ b/services/backup_sa/IService.idl @@ -20,9 +20,11 @@ sequenceable BackupFileInfo..OHOS.FileManagement.Backup.BFileInfo; sequenceable BackupIncrementalData..OHOS.FileManagement.Backup.BIncrementalData; interface OHOS.FileManagement.Backup.IService{ [ipccode 39] void InitRestoreSession([in] IServiceReverse reverseIpcRemoteObject); - [ipccode 1] void InitRestoreSessionWithErrMsg([in] IServiceReverse reverseIpcRemoteObject, [out] String errMsg); + [ipccode 1] void InitRestoreSessionWithErrMsg([in] IServiceReverse reverseIpcRemoteObject, + [out] int errCodeForMsg, [out] String errMsg); [ipccode 2] void InitBackupSession([in] IServiceReverse reverseIpcRemoteObject); - [ipccode 3] void InitBackupSessionWithErrMsg([in] IServiceReverse reverseIpcRemoteObject, [out] String errMsg); + [ipccode 3] void InitBackupSessionWithErrMsg([in] IServiceReverse reverseIpcRemoteObject, + [out] int errCodeForMsg, [out] String errMsg); [ipccode 4] void Start(); [ipccode 5] void GetLocalCapabilities([out] FileDescriptor fd); [ipccode 6] void GetLocalCapabilitiesForBundleInfos([out] FileDescriptor fd); @@ -53,14 +55,14 @@ interface OHOS.FileManagement.Backup.IService{ [ipccode 24] void GetLocalCapabilitiesIncremental([in] BIncrementalData[] bundleNames, [out] FileDescriptor fd); [ipccode 25] void InitIncrementalBackupSession([in] IServiceReverse reverseIpcRemoteObject); [ipccode 26] void InitIncrementalBackupSessionWithErrMsg([in] IServiceReverse reverseIpcRemoteObject, - [out] String errMsg); + [out] int errCodeForMsg, [out] String errMsg); [ipccode 27] void AppendBundlesIncrementalBackupSession([in] BIncrementalData[] bundlesToBackup); [ipccode 28] void AppendBundlesIncrementalBackupSessionWithBundleInfos([in] BIncrementalData[] bundlesToBackup, [in]String[] bundleInfos); [ipccode 29] void PublishIncrementalFile([in] BFileInfo fileInfo); [ipccode 30] void PublishSAIncrementalFile([in] BFileInfo fileInfo, [in] FileDescriptor fd); [ipccode 31] void AppIncrementalFileReady([in] String fileName, [in] FileDescriptor fd, [in] FileDescriptor manifestFd, - [in] int appIncrementalFileReadyErrCode); + [in] int appIncrementalFileReadyErrCode); [ipccode 32] void AppIncrementalDone([in] int appIncrementalDoneErrCode); [ipccode 33] void ReportAppProcessInfo([in] String processInfo, [in] BackupRestoreScenario scenario); [ipccode 34] void RefreshDataSize([in] long totalDataSize); diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index aa7913f2c..93084c83a 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -55,9 +55,10 @@ class Service : public SystemAbility, public ServiceStub, protected NoCopyable { public: ErrCode InitRestoreSession(const sptr& remote) override; ErrCode InitRestoreSessionWithErrMsg(const sptr& reverseIpcRemoteObject, - std::string& errMsg) override; + int32_t &errCodeForMsg, std::string& errMsg) override; ErrCode InitBackupSession(const sptr& remote) override; - ErrCode InitBackupSessionWithErrMsg(const sptr& remote, std::string &errMsg) override; + ErrCode InitBackupSessionWithErrMsg(const sptr& remote, + int32_t &errCodeForMsg, std::string &errMsg) override; ErrCode Start() override; ErrCode GetLocalCapabilities(int& fd) override; @@ -87,7 +88,8 @@ public: ErrCode GetLocalCapabilitiesIncremental(const std::vector& bundleNames, int& fd) override; ErrCode GetAppLocalListAndDoIncrementalBackup() override; ErrCode InitIncrementalBackupSession(const sptr& remote) override; - ErrCode InitIncrementalBackupSessionWithErrMsg(const sptr& remote, std::string &errMsg) override; + ErrCode InitIncrementalBackupSessionWithErrMsg(const sptr& remote, int32_t &errCodeForMsg, + std::string &errMsg) override; ErrCode AppendBundlesIncrementalBackupSession(const std::vector &bundlesToBackup) override; ErrCode AppendBundlesIncrementalBackupSessionWithBundleInfos(const std::vector& bundlesToBackup, const std::vector& bundleInfos) override; @@ -682,7 +684,8 @@ private: void SetScanningInfo(string &scanning, string name); ErrCode InitRestoreSession(const sptr& remote, std::string &errMsg); - + ErrCode InitBackupSession(const sptr& remote, std::string &errMsg); + ErrCode InitIncrementalBackupSession(const sptr& remote, std::string &errMsg); UniqueFd GetLocalCapabilities(); UniqueFd GetLocalCapabilitiesForBundleInfos(); ErrCode AppFileReady(const std::string &fileName, UniqueFd fd, int32_t errCode); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 2215a7110..e9d4dc5ab 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -338,7 +338,14 @@ ErrCode Service::InitIncrementalBackupSession(const sptr& remot return errCode; } -ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr& remote, std::string &errMsg) +ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr& remote, int32_t &errCodeForMsg, + std::string &errMsg) +{ + errCodeForMsg = InitIncrementalBackupSession(remote, errMsg); + return ERR_OK; +} + +ErrCode Service::InitIncrementalBackupSession(const sptr& remote, std::string &errMsg) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); totalStatistic_ = std::make_shared(BizScene::BACKUP, GetCallerName(), Mode::INCREMENTAL); diff --git a/services/backup_sa/src/module_ipc/sub_service.cpp b/services/backup_sa/src/module_ipc/sub_service.cpp index 71ba0c8ed..2ab287ec2 100644 --- a/services/backup_sa/src/module_ipc/sub_service.cpp +++ b/services/backup_sa/src/module_ipc/sub_service.cpp @@ -894,10 +894,12 @@ std::string Service::GetCallerName() return callerName; } -ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { HILOGI("Start InitRestoreSessionWithErrMsg,Msg :%{public}s", errMsg.c_str()); - return InitRestoreSession(remote, errMsg); + errCodeForMsg = InitRestoreSession(remote, errMsg); + return ERR_OK; } ErrCode Service::InitRestoreSession(const sptr& remote, std::string &errMsg) @@ -938,7 +940,14 @@ ErrCode Service::InitRestoreSession(const sptr& remote, std::st return ret; } -ErrCode Service::InitBackupSessionWithErrMsg(const sptr& remote, std::string &errMsg) +ErrCode Service::InitBackupSessionWithErrMsg(const sptr& remote, + int32_t &errCodeForMsg, std::string &errMsg) +{ + errCodeForMsg = InitBackupSession(remote, errMsg); + return ERR_OK; +} + +ErrCode Service::InitBackupSession(const sptr& remote, std::string &errMsg) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); totalStatistic_ = std::make_shared(BizScene::BACKUP, GetCallerName()); diff --git a/tests/mock/backup_kit_inner/service_proxy_mock.cpp b/tests/mock/backup_kit_inner/service_proxy_mock.cpp index d521ebec5..96fa0647a 100644 --- a/tests/mock/backup_kit_inner/service_proxy_mock.cpp +++ b/tests/mock/backup_kit_inner/service_proxy_mock.cpp @@ -39,10 +39,12 @@ int32_t ServiceProxy::InitRestoreSession(const sptr& remote) return 0; } -int32_t ServiceProxy::InitRestoreSessionWithErrMsg(const sptr& remote, std::string &errMsg) +int32_t ServiceProxy::InitRestoreSessionWithErrMsg(const sptr& remote, + int32_t &errCodeForMsg, std::string &errMsg) { if (!GetMockInitBackupOrRestoreSession()) { - return 1; + errCodeForMsg = 1; + return 0; } return 0; } @@ -55,10 +57,12 @@ int32_t ServiceProxy::InitBackupSession(const sptr& remote) return 0; } -int32_t ServiceProxy::InitBackupSessionWithErrMsg(const sptr& remote, std::string &errMsg) +int32_t ServiceProxy::InitBackupSessionWithErrMsg(const sptr& remote, + int32_t &errCodeForMsg, std::string &errMsg) { if (!GetMockInitBackupOrRestoreSession()) { - return 1; + errCodeForMsg = 1; + return 0; } return 0; } @@ -163,8 +167,10 @@ ErrCode ServiceProxy::InitIncrementalBackupSession(const sptr& return BError(BError::Codes::OK); } -ErrCode ServiceProxy::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode ServiceProxy::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } diff --git a/tests/mock/module_ipc/service_mock.cpp b/tests/mock/module_ipc/service_mock.cpp index 6a945c4ba..e94ff4c32 100644 --- a/tests/mock/module_ipc/service_mock.cpp +++ b/tests/mock/module_ipc/service_mock.cpp @@ -57,8 +57,10 @@ ErrCode Service::InitRestoreSession(const sptr &remote) return BError(BError::Codes::OK); } -ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &reverseIpcRemoteObject, std::string &errMsg) +ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &reverseIpcRemoteObject, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } @@ -67,8 +69,10 @@ ErrCode Service::InitBackupSession(const sptr &remote) return BError(BError::Codes::OK); } -ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } @@ -210,8 +214,10 @@ ErrCode Service::InitIncrementalBackupSession(const sptr &remot return BError(BError::Codes::OK); } -ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } diff --git a/tests/unittests/backup_sa/module_client/service_client_test.cpp b/tests/unittests/backup_sa/module_client/service_client_test.cpp index 0cecf86a5..9bbfc775c 100644 --- a/tests/unittests/backup_sa/module_client/service_client_test.cpp +++ b/tests/unittests/backup_sa/module_client/service_client_test.cpp @@ -330,11 +330,11 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize EXPECT_NE(ret, BError(BError::Codes::OK)); std::string errMsg = ""; std::string result = "err"; - ret = proxy->InitRestoreSessionWithErrMsg(srptr, errMsg); + proxy->InitRestoreSessionWithErrMsg(srptr, ret, errMsg); EXPECT_NE(ret, BError(BError::Codes::OK)); - ret = proxy->InitBackupSessionWithErrMsg(srptr, errMsg); + proxy->InitBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_NE(ret, BError(BError::Codes::OK)); - ret = proxy->InitIncrementalBackupSessionWithErrMsg(srptr, errMsg); + proxy->InitIncrementalBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_NE(ret, BError(BError::Codes::OK)); BSessionRestore::Callbacks callback; srptr = sptr(new ServiceReverse(callback)); @@ -345,13 +345,13 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize ret = proxy->InitIncrementalBackupSession(srptr); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); - ret = proxy->InitRestoreSessionWithErrMsg(srptr, errMsg); + proxy->InitRestoreSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); - ret = proxy->InitBackupSessionWithErrMsg(srptr, errMsg); + proxy->InitBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); - ret = proxy->InitIncrementalBackupSessionWithErrMsg(srptr, errMsg); + proxy->InitIncrementalBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); EXPECT_EQ(errMsg, ""); 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 5813e2ea9..1aabc192e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -36,9 +36,9 @@ public: virtual ErrCode GetLocalCapabilities(int& fd) = 0; virtual ErrCode VerifyCallerAndGetCallerName(std::string&) = 0; virtual ErrCode InitRestoreSession(const sptr&) = 0; - virtual ErrCode InitRestoreSessionWithErrMsg(const sptr&, std::string&) = 0; + virtual ErrCode InitRestoreSessionWithErrMsg(const sptr&, int32_t&, std::string&) = 0; virtual ErrCode InitBackupSession(const sptr&) = 0; - virtual ErrCode InitBackupSessionWithErrMsg(const sptr&, std::string&) = 0; + virtual ErrCode InitBackupSessionWithErrMsg(const sptr&, int32_t&, std::string&) = 0; virtual ErrCode Start() = 0; virtual ErrCode PublishFile(const BFileInfo&) = 0; virtual ErrCode AppFileReady(const std::string &, int, int32_t) = 0; @@ -90,9 +90,9 @@ public: MOCK_METHOD(ErrCode, GetLocalCapabilities, (int&)); MOCK_METHOD(ErrCode, VerifyCallerAndGetCallerName, (std::string&)); MOCK_METHOD(ErrCode, InitRestoreSession, (const sptr&)); - MOCK_METHOD(ErrCode, InitRestoreSessionWithErrMsg, (const sptr&, std::string&)); + MOCK_METHOD(ErrCode, InitRestoreSessionWithErrMsg, (const sptr&, int32_t &, std::string&)); MOCK_METHOD(ErrCode, InitBackupSession, (const sptr&)); - MOCK_METHOD(ErrCode, InitBackupSessionWithErrMsg, (const sptr&, std::string&)); + MOCK_METHOD(ErrCode, InitBackupSessionWithErrMsg, (const sptr&, int32_t &, std::string&)); MOCK_METHOD(ErrCode, Start, ()); MOCK_METHOD(ErrCode, PublishFile, (const BFileInfo&)); MOCK_METHOD(ErrCode, AppFileReady, (const string&, int, int32_t)); @@ -143,8 +143,10 @@ ErrCode Service::GetLocalCapabilitiesForBundleInfos(int &fd) { return BError(BError::Codes::OK); } -ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode Service::InitBackupSessionWithErrMsg(const sptr &remote, + int32_t& errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } @@ -165,9 +167,10 @@ ErrCode Service::InitRestoreSession(const sptr &remote) return BService::serviceMock->InitRestoreSession(remote); } -ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode Service::InitRestoreSessionWithErrMsg(const sptr &remote, + int32_t& errCodeForMsg, std::string &errMsg) { - return BService::serviceMock->InitRestoreSessionWithErrMsg(remote, errMsg); + return BService::serviceMock->InitRestoreSessionWithErrMsg(remote, errCodeForMsg, errMsg); } ErrCode Service::InitBackupSession(const sptr &remote) @@ -803,24 +806,25 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSes try { std::string errMsg; sptr reverseNUll = nullptr; + ErrCode errCode; EXPECT_CALL(*srvMock, VerifyCaller()).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode())); EXPECT_CALL(*srvMock, GetCallerName()).WillRepeatedly(Return("")); - EXPECT_EQ(service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg), - BError(BError::Codes::SA_INVAL_ARG).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_INVAL_ARG).GetCode()); auto session_ = service->session_; service->session_ = nullptr; EXPECT_CALL(*srvMock, VerifyCaller()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); - EXPECT_EQ(service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg), - BError(BError::Codes::SA_INVAL_ARG).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_INVAL_ARG).GetCode()); service->session_ = session_; EXPECT_CALL(*srvMock, VerifyCaller()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); EXPECT_CALL(*srvMock, GetUserIdDefault()).WillOnce(Return(0)); EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK))); - EXPECT_EQ(service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg), - BError(BError::Codes::OK).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode()); EXPECT_CALL(*srvMock, VerifyCaller()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); EXPECT_CALL(*srvMock, GetUserIdDefault()).WillOnce(Return(0)); @@ -829,15 +833,15 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSes EXPECT_CALL(*session, GetSessionCallerName()).WillOnce(Return("")); EXPECT_CALL(*session, GetSessionActiveTime()).WillOnce(Return("")); EXPECT_CALL(*jsonUtil, BuildInitSessionErrInfo(_, _, _)).WillOnce(Return("")); - EXPECT_EQ(service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg), - BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); EXPECT_CALL(*srvMock, VerifyCaller()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); EXPECT_CALL(*srvMock, GetUserIdDefault()).WillOnce(Return(0)); EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG))); - EXPECT_EQ(service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg), - BError(BError::Codes::SA_INVAL_ARG).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_INVAL_ARG).GetCode()); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ServiceIncrementalTest-an exception occurred by InitIncrementalBackupSession."; 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 733cbb46b..d5d36da0e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -86,8 +86,9 @@ ErrCode Service::InitIncrementalBackupSession(const sptr &) return BError(BError::Codes::OK); } -ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr&, std::string &) +ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr&, int32_t &errCodeForMsg, std::string &) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } diff --git a/tests/unittests/backup_sa/module_ipc/service_test.cpp b/tests/unittests/backup_sa/module_ipc/service_test.cpp index 1617f219b..43fc3037e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_test.cpp @@ -91,7 +91,7 @@ ErrCode ServiceTest::Init(IServiceReverseType::Scenario scenario) sptr srptr_=static_cast>(remote_); ret = servicePtr_->InitRestoreSession(srptr_); EXPECT_EQ(ret, BError(BError::Codes::OK)); - ret = servicePtr_->InitRestoreSessionWithErrMsg(srptr_, errMsg); + servicePtr_->InitRestoreSessionWithErrMsg(srptr_, ret, errMsg); EXPECT_EQ(ret, BError(BError::Codes::OK)); ret = servicePtr_->AppendBundlesRestoreSession(move(fd), bundleNames, detailInfos); EXPECT_EQ(ret, BError(BError::Codes::OK)); @@ -101,7 +101,7 @@ ErrCode ServiceTest::Init(IServiceReverseType::Scenario scenario) sptr srptr_ = static_cast>(remote_); ret = servicePtr_->InitBackupSession(srptr_); EXPECT_EQ(ret, BError(BError::Codes::OK)); - ret = servicePtr_->InitBackupSessionWithErrMsg(srptr_, errMsg); + servicePtr_->InitBackupSessionWithErrMsg(srptr_, ret, errMsg); EXPECT_EQ(ret, BError(BError::Codes::OK)); ret = servicePtr_->AppendBundlesBackupSession(bundleNames); EXPECT_EQ(ret, BError(BError::Codes::OK)); diff --git a/tests/unittests/backup_sa/module_ipc/service_throw_test.cpp b/tests/unittests/backup_sa/module_ipc/service_throw_test.cpp index fa28d59b9..8fa22a9a9 100644 --- a/tests/unittests/backup_sa/module_ipc/service_throw_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_throw_test.cpp @@ -175,29 +175,30 @@ HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitRestoreSession_0200, testing::e EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); sptr reverseNUll = nullptr; - auto ret = service->InitRestoreSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + ErrCode errCode; + service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT))); - ret = service->InitRestoreSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT))); - ret = service->InitRestoreSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); + service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK))); - ret = service->InitRestoreSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode()); + service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode()); GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitRestoreSession_0200"; } @@ -257,29 +258,30 @@ HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitBackupSession_0200, testing::ex EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); sptr reverseNUll = nullptr; - auto ret = service->InitBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + ErrCode errCode; + service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT))); - ret = service->InitBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT))); - ret = service->InitBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); + service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK))); - ret = service->InitBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode()); + service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode()); GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitBackupSession_0200"; } @@ -990,29 +992,30 @@ HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitIncrementalBackupSession_0200, EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); sptr reverseNUll = nullptr; - auto ret = service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + ErrCode errCode; + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT))); - ret = service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT))); - ret = service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode()); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK))); - ret = service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errMsg); - EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode()); + service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg); + EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode()); GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitIncrementalBackupSession_0200"; } diff --git a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp index 47852f950..6eb912083 100644 --- a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp +++ b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp @@ -786,7 +786,7 @@ HWTEST_F(IncrementalSessionTest, SUB_b_incremental_session_test_2400, testing::e auto err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); - EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _)).WillOnce(Return(-1)).WillOnce(Return(0)); + EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _, _)).WillOnce(Return(-1)).WillOnce(Return(0)); ServiceClient::serviceProxy_ = proxy; err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); @@ -820,7 +820,7 @@ HWTEST_F(IncrementalSessionTest, SUB_b_incremental_session_test_2500, testing::e auto err = restoreSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); - EXPECT_CALL(*proxy, InitRestoreSessionWithErrMsg(_, _)).WillOnce(Return(-1)).WillOnce(Return(0)); + EXPECT_CALL(*proxy, InitRestoreSessionWithErrMsg(_, _, _)).WillOnce(Return(-1)).WillOnce(Return(0)); ServiceClient::serviceProxy_ = proxy; err = restoreSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); diff --git a/tests/unittests/backup_sa/session/service_proxy_mock.cpp b/tests/unittests/backup_sa/session/service_proxy_mock.cpp index 2c0faa543..c2050aa24 100644 --- a/tests/unittests/backup_sa/session/service_proxy_mock.cpp +++ b/tests/unittests/backup_sa/session/service_proxy_mock.cpp @@ -63,13 +63,17 @@ int32_t ServiceProxy::InitRestoreSession(const sptr &remote) return 1; } -int32_t ServiceProxy::InitRestoreSessionWithErrMsg(const sptr &remote, std::string &errMsg) +int32_t ServiceProxy::InitRestoreSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = 0; return 0; } -int32_t ServiceProxy::InitBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +int32_t ServiceProxy::InitBackupSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = 0; return 0; } @@ -179,8 +183,10 @@ ErrCode ServiceProxy::InitIncrementalBackupSession(const sptr & return BError(BError::Codes::OK); } -ErrCode ServiceProxy::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, std::string &errMsg) +ErrCode ServiceProxy::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg) { + errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); } diff --git a/tests/unittests/backup_sa/session/service_proxy_mock.h b/tests/unittests/backup_sa/session/service_proxy_mock.h index d1ef64f11..3ee48b1ab 100644 --- a/tests/unittests/backup_sa/session/service_proxy_mock.h +++ b/tests/unittests/backup_sa/session/service_proxy_mock.h @@ -28,9 +28,11 @@ public: public: MOCK_METHOD1(InitRestoreSession, ErrCode(const sptr &remote)); - MOCK_METHOD2(InitRestoreSessionWithErrMsg, ErrCode(const sptr &remote, std::string &errMsg)); + MOCK_METHOD3(InitRestoreSessionWithErrMsg, ErrCode(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg)); MOCK_METHOD1(InitBackupSession, ErrCode(const sptr &remote)); - MOCK_METHOD2(InitBackupSessionWithErrMsg, ErrCode(const sptr &remote, std::string &errMsg)); + MOCK_METHOD3(InitBackupSessionWithErrMsg, ErrCode(const sptr &remote, + int32_t &errCodeForMsg, std::string &errMsg)); MOCK_METHOD0(Start, ErrCode()); MOCK_METHOD0(AsObject, sptr()); MOCK_METHOD1(GetLocalCapabilitiesForBundleInfos, ErrCode(int32_t &)); @@ -47,8 +49,8 @@ public: MOCK_METHOD2(Cancel, ErrCode(const std::string &bundleName, int32_t &result)); MOCK_METHOD2(GetLocalCapabilitiesIncremental, ErrCode(const std::vector &bundleNames, int &fd)); MOCK_METHOD1(InitIncrementalBackupSession, ErrCode(const sptr &remote)); - MOCK_METHOD2(InitIncrementalBackupSessionWithErrMsg, - ErrCode(const sptr &remote, std::string &errMsg)); + MOCK_METHOD3(InitIncrementalBackupSessionWithErrMsg, + ErrCode(const sptr &remote, int32_t &errCodeForMsg, std::string &errMsg)); MOCK_METHOD1(AppendBundlesIncrementalBackupSession, ErrCode(const std::vector &bundlesToBackup)); MOCK_METHOD2(AppendBundlesIncrementalBackupSessionWithBundleInfos, ErrCode(const std::vector &bundlesToBackup, const std::vector &infos)); -- Gitee From 11951e788a5345324f9238949935141204f40f96 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 28 May 2025 16:55:52 +0800 Subject: [PATCH 13/29] fixed codecheck. Signed-off-by: BrainL Change-Id: I5ac2e61a79719b1569e9d6a63d5d205112b04492 --- tests/unittests/backup_sa/module_ipc/service_other_test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 d5d36da0e..01e289711 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -86,7 +86,8 @@ ErrCode Service::InitIncrementalBackupSession(const sptr &) return BError(BError::Codes::OK); } -ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr&, int32_t &errCodeForMsg, std::string &) +ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr&, + int32_t &errCodeForMsg, std::string &) { errCodeForMsg = BError(BError::Codes::OK); return BError(BError::Codes::OK); -- Gitee From 776dfd17e8ba89b8cf6fbdfbd6147f3c6aa06cd4 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 28 May 2025 19:38:10 +0800 Subject: [PATCH 14/29] fixed ut Signed-off-by: BrainL Change-Id: Ie809febd808ab305c0326981b9968470d81f27f5 --- .../backup_sa/module_client/service_client_test.cpp | 6 +++--- .../backup_sa/session/b_incremental_session_test.cpp | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/unittests/backup_sa/module_client/service_client_test.cpp b/tests/unittests/backup_sa/module_client/service_client_test.cpp index 9bbfc775c..3779c0e5e 100644 --- a/tests/unittests/backup_sa/module_client/service_client_test.cpp +++ b/tests/unittests/backup_sa/module_client/service_client_test.cpp @@ -347,13 +347,13 @@ HWTEST_F(ServiceClientTest, SUB_service_client_test_1200, testing::ext::TestSize proxy->InitRestoreSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); - EXPECT_EQ(errMsg, ""); + EXPECT_NE(errMsg, ""); proxy->InitBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); - EXPECT_EQ(errMsg, ""); + EXPECT_NE(errMsg, ""); proxy->InitIncrementalBackupSessionWithErrMsg(srptr, ret, errMsg); EXPECT_EQ(ret, BError(BError::BackupErrorCode::E_CONFLICT)); - EXPECT_EQ(errMsg, ""); + EXPECT_NE(errMsg, ""); GTEST_LOG_(INFO) << "ServiceClientTest-end SUB_service_client_test_1200"; } diff --git a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp index 6eb912083..c9b4af5f2 100644 --- a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp +++ b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp @@ -786,11 +786,9 @@ HWTEST_F(IncrementalSessionTest, SUB_b_incremental_session_test_2400, testing::e auto err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); - EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _, _)).WillOnce(Return(-1)).WillOnce(Return(0)); + EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _, _)).WillOnce(Return(0)); ServiceClient::serviceProxy_ = proxy; err = backupSession->Init(callbacks, errMsg, errCode); - EXPECT_EQ(err, nullptr); - err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_NE(err, nullptr); } catch (...) { EXPECT_TRUE(false); -- Gitee From 1edad360cfe6b2a69008d278d98c0d3a44fb4340 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 28 May 2025 19:47:03 +0800 Subject: [PATCH 15/29] fixed ut mock Signed-off-by: BrainL Change-Id: Ia0bf4258781dcc3cdf9d66c003bd7847e4c4d8c3 --- .../backup_sa/session/b_incremental_session_test.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp index c9b4af5f2..80014ab2c 100644 --- a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp +++ b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp @@ -786,9 +786,13 @@ HWTEST_F(IncrementalSessionTest, SUB_b_incremental_session_test_2400, testing::e auto err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); - EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*proxy, InitIncrementalBackupSessionWithErrMsg(_, _, _)) + .WillOnce(DoAll(SetArgReferee<1>(-1), Return(0))) + .WillOnce(DoAll(SetArgReferee<1>(0), Return(0))); ServiceClient::serviceProxy_ = proxy; err = backupSession->Init(callbacks, errMsg, errCode); + EXPECT_EQ(err, nullptr); + err = backupSession->Init(callbacks, errMsg, errCode); EXPECT_NE(err, nullptr); } catch (...) { EXPECT_TRUE(false); -- Gitee From 799df8c2920245c90a06c3874e3201e1af4ddb89 Mon Sep 17 00:00:00 2001 From: chensihan Date: Thu, 29 May 2025 15:42:24 +0800 Subject: [PATCH 16/29] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=B2=BB=E7=90=86=20Si?= =?UTF-8?q?gned-off-by:=20chensihan=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfaces/innerkits/native/file_uri/src/file_uri.cpp | 1 + utils/include/b_hilog/filemgmt_libhilog.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/interfaces/innerkits/native/file_uri/src/file_uri.cpp b/interfaces/innerkits/native/file_uri/src/file_uri.cpp index 655e6dcb4..d13f58ab0 100644 --- a/interfaces/innerkits/native/file_uri/src/file_uri.cpp +++ b/interfaces/innerkits/native/file_uri/src/file_uri.cpp @@ -143,6 +143,7 @@ string FileUri::GetRealPath() realPath = pathShare + MODE_R + bundleName + sandboxPath; } } + LOGD("GetRealPath return path is ,%{private}s", realPath.c_str()); return realPath; } diff --git a/utils/include/b_hilog/filemgmt_libhilog.h b/utils/include/b_hilog/filemgmt_libhilog.h index 9e882f46b..eed8d94d5 100644 --- a/utils/include/b_hilog/filemgmt_libhilog.h +++ b/utils/include/b_hilog/filemgmt_libhilog.h @@ -22,7 +22,7 @@ namespace OHOS { #ifndef LOG_DOMAIN -#define LOG_DOMAIN 0xD001600 +#define LOG_DOMAIN 0xD004303 #endif #ifndef LOG_TAG -- Gitee From 375314b5c503b9b025db80715774971fba128792 Mon Sep 17 00:00:00 2001 From: BrainL Date: Thu, 29 May 2025 18:17:32 +0800 Subject: [PATCH 17/29] fixed restore and ut. Signed-off-by: BrainL Change-Id: I22b4f75fb7076d30ddbcb52b2948acd184abab8f --- .../backup_kit_inner/src/b_incremental_backup_session.cpp | 2 +- .../backup_kit_inner/src/b_incremental_restore_session.cpp | 4 ++-- frameworks/native/backup_kit_inner/src/b_session_backup.cpp | 2 +- services/backup_sa/src/module_ipc/service_incremental.cpp | 2 ++ services/backup_sa/src/module_ipc/sub_service.cpp | 5 ++++- .../backup_sa/session/b_incremental_session_test.cpp | 4 +++- 6 files changed, 13 insertions(+), 6 deletions(-) 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 018099e08..a3f98f0b6 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 @@ -73,7 +73,7 @@ unique_ptr BIncrementalBackupSession::Init(Callbacks } proxy->InitIncrementalBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { - HILOGE("Failed to Backup because of %{public}d", errCode); + HILOGE("Failed to Backup because of %{public}d, %{public}s", errCode, errMsg.c_str()); AppRadar::Info info("", "", ""); AppRadar::GetInstance().RecordBackupFuncRes(info, "BIncrementalBackupSession::Init", AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_CREATE_BACKUP_SESSION_FAIL, errCode); 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 131ff3a0c..2216b47d4 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 @@ -73,9 +73,9 @@ unique_ptr BIncrementalRestoreSession::Init(Callback HILOGE("Init IncrementalRestoreSession failed, %{public}s", errMsg.c_str()); return nullptr; } - errCode = proxy->InitRestoreSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); + proxy->InitRestoreSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { - HILOGE("Failed to Restore because of %{public}d", errCode); + HILOGE("Failed to Restore because of %{public}d, %{public}s", errCode, errMsg.c_str()); AppRadar::Info info ("", "", "create restore session failed"); AppRadar::GetInstance().RecordRestoreFuncRes(info, "BIncrementalRestoreSession::Init", AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_CREATE_RESTORE_SESSION_FAIL, errCode); 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 cf6a3abca..1a7a1ba57 100644 --- a/frameworks/native/backup_kit_inner/src/b_session_backup.cpp +++ b/frameworks/native/backup_kit_inner/src/b_session_backup.cpp @@ -73,7 +73,7 @@ unique_ptr BSessionBackup::Init(Callbacks callbacks, } proxy->InitBackupSessionWithErrMsg(sptr(new ServiceReverse(callbacks)), errCode, errMsg); if (errCode != ERR_OK) { - HILOGE("Failed to Backup because of %{public}d", errCode); + HILOGE("Failed to Backup because of %{public}d, %{public}s", errCode, errMsg.c_str()); AppRadar::Info info("", "", ""); AppRadar::GetInstance().RecordBackupFuncRes(info, "BSessionBackup::Init", AppRadar::GetInstance().GetUserId(), BizStageBackup::BIZ_STAGE_CREATE_BACKUP_SESSION_FAIL, errCode); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index e9d4dc5ab..279c1babb 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -342,6 +342,8 @@ ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remote, int32_t &errCodeForMsg, std::string &errMsg) { - HILOGI("Start InitRestoreSessionWithErrMsg,Msg :%{public}s", errMsg.c_str()); errCodeForMsg = InitRestoreSession(remote, errMsg); + HILOGI("Start InitRestoreSessionWithErrMsg, errCode:%{public}d, Msg :%{public}s", + errCodeForMsg, errMsg.c_str()); return ERR_OK; } @@ -944,6 +945,8 @@ ErrCode Service::InitBackupSessionWithErrMsg(const sptr& remote int32_t &errCodeForMsg, std::string &errMsg) { errCodeForMsg = InitBackupSession(remote, errMsg); + HILOGI("Start InitBackupSessionWithErrMsg, errCode:%{public}d, Msg :%{public}s", + errCodeForMsg, errMsg.c_str()); return ERR_OK; } diff --git a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp index 80014ab2c..4e93edd35 100644 --- a/tests/unittests/backup_sa/session/b_incremental_session_test.cpp +++ b/tests/unittests/backup_sa/session/b_incremental_session_test.cpp @@ -822,7 +822,9 @@ HWTEST_F(IncrementalSessionTest, SUB_b_incremental_session_test_2500, testing::e auto err = restoreSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); - EXPECT_CALL(*proxy, InitRestoreSessionWithErrMsg(_, _, _)).WillOnce(Return(-1)).WillOnce(Return(0)); + EXPECT_CALL(*proxy, InitRestoreSessionWithErrMsg(_, _, _)) + .WillOnce(DoAll(SetArgReferee<1>(-1), Return(0))) + .WillOnce(DoAll(SetArgReferee<1>(0), Return(0))); ServiceClient::serviceProxy_ = proxy; err = restoreSession->Init(callbacks, errMsg, errCode); EXPECT_EQ(err, nullptr); -- Gitee From bf436a98a7a8f56020fd387327553fbf4b958325 Mon Sep 17 00:00:00 2001 From: BrainL Date: Thu, 29 May 2025 20:24:07 +0800 Subject: [PATCH 18/29] fixed codecheck Signed-off-by: BrainL Change-Id: I6ac6e8ade4a22a8c1c1cdf05eba3681f9241a985 --- services/backup_sa/src/module_ipc/service_incremental.cpp | 3 ++- services/backup_sa/src/module_ipc/sub_service.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 279c1babb..3cce4d40d 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -343,7 +343,8 @@ ErrCode Service::InitIncrementalBackupSessionWithErrMsg(const sptr &remot { errCodeForMsg = InitRestoreSession(remote, errMsg); HILOGI("Start InitRestoreSessionWithErrMsg, errCode:%{public}d, Msg :%{public}s", - errCodeForMsg, errMsg.c_str()); + errCodeForMsg, + errMsg.c_str()); return ERR_OK; } @@ -946,7 +947,8 @@ ErrCode Service::InitBackupSessionWithErrMsg(const sptr& remote { errCodeForMsg = InitBackupSession(remote, errMsg); HILOGI("Start InitBackupSessionWithErrMsg, errCode:%{public}d, Msg :%{public}s", - errCodeForMsg, errMsg.c_str()); + errCodeForMsg, + errMsg.c_str()); return ERR_OK; } -- Gitee From 8394534a5cc73794d82389d358f66de430357034 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Thu, 29 May 2025 17:52:28 +0800 Subject: [PATCH 19/29] add fuzz Signed-off-by: wangpeng --- .../backupext_fuzzer/backupext_fuzzer.cpp | 17 ++++++++ .../servicereverse_fuzzer.cpp | 43 ++++++++++++++----- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp index 33f5a4c93..2d7559fca 100644 --- a/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp +++ b/test/fuzztest/backupext_fuzzer/backupext_fuzzer.cpp @@ -280,6 +280,22 @@ bool CmdGetIncrementalBackupFileHandleFuzzTest(shared_ptr ex extension->OnRemoteRequest(code, msg, reply, option); return true; } + +bool OnRemoteRequestFuzzTest(shared_ptr extension, const uint8_t *data, size_t size) +{ + uint32_t codeMax = 15; + for (uint32_t code = 1; code < codeMax; code++) { + MessageParcel datas; + MessageParcel reply; + MessageOption option; + + datas.WriteInterfaceToken(ExtensionStub::GetDescriptor()); + datas.WriteBuffer(reinterpret_cast(data), size); + datas.RewindRead(0); + extension->OnRemoteRequest(code, datas, reply, option); + } + return true; +} } // namespace OHOS /* Fuzzer entry point */ @@ -314,6 +330,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::CmdHandleIncrementalBackupFuzzTest(extension, data, size); OHOS::CmdIncrementalOnBackupFuzzTest(extension, data, size); OHOS::CmdGetIncrementalBackupFileHandleFuzzTest(extension, data, size); + OHOS::OnRemoteRequestFuzzTest(extension, data, size); } catch (OHOS::FileManagement::Backup::BError &err) { // Only filter BError errors, Other results are not expected. } diff --git a/test/fuzztest/servicereverse_fuzzer/servicereverse_fuzzer.cpp b/test/fuzztest/servicereverse_fuzzer/servicereverse_fuzzer.cpp index fe1d613a2..09767b6ee 100644 --- a/test/fuzztest/servicereverse_fuzzer/servicereverse_fuzzer.cpp +++ b/test/fuzztest/servicereverse_fuzzer/servicereverse_fuzzer.cpp @@ -654,6 +654,32 @@ bool IncrementalRestoreOnProcessInfoFuzzTest(sptr service, const } return true; } + +bool OnRemoteRequestFuzzTest(sptr service, const uint8_t *data, size_t size) +{ + uint32_t codeMax = 26; + for (uint32_t code = 1; code < codeMax; code++) { + MessageParcel datas; + MessageParcel reply; + MessageOption option; + + datas.WriteInterfaceToken(ServiceReverseStub::GetDescriptor()); + datas.WriteBuffer(reinterpret_cast(data), size); + datas.RewindRead(0); + service->OnRemoteRequest(code, datas, reply, option); + } + { + MessageParcel datas; + MessageParcel reply; + MessageOption option; + datas.WriteInterfaceToken(ServiceReverseStub::GetDescriptor()); + datas.WriteBuffer(reinterpret_cast(data), size); + datas.RewindRead(0); + service->OnRemoteRequest(static_cast(IServiceReverseIpcCode::COMMAND_BACKUP_ON_BUNDLE_STARTED), + datas, reply, option); + } + return true; +} } // namespace OHOS /* Fuzzer entry point */ @@ -661,22 +687,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { OHOS::FileManagement::Backup::BSessionBackup::Callbacks backupCallbacks; OHOS::sptr backupService(new OHOS::FileManagement::Backup::ServiceReverse(backupCallbacks)); - if (backupService == nullptr) { - return 0; - } OHOS::FileManagement::Backup::BSessionRestore::Callbacks restoreCallbacks; OHOS::sptr restoreService(new OHOS::FileManagement::Backup::ServiceReverse(restoreCallbacks)); - if (restoreService == nullptr) { - return 0; - } OHOS::FileManagement::Backup::BIncrementalBackupSession::Callbacks incrementalBackupCallbacks; OHOS::sptr incrementalBackupService(new OHOS::FileManagement::Backup::ServiceReverse(incrementalBackupCallbacks)); - if (incrementalBackupService == nullptr) { - return 0; - } OHOS::FileManagement::Backup::BIncrementalRestoreSession::Callbacks incrementalRestoreCallbacks; OHOS::sptr incrementalRestoreService(new OHOS::FileManagement::Backup::ServiceReverse(incrementalRestoreCallbacks)); - if (incrementalRestoreService == nullptr) { + if (!backupService || !restoreService || !incrementalBackupService || !incrementalRestoreService) { + printf("service handler is nullptr"); return 0; } @@ -687,6 +705,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::BackupOnAllBundlesFinishedFuzzTest(backupService, data, size); OHOS::BackupOnProcessInfoFuzzTest(backupService, data, size); OHOS::BackupOnScanningInfoFuzzTest(backupService, data, size); + OHOS::OnRemoteRequestFuzzTest(backupService, data, size); OHOS::RestoreOnBundleStartedFuzzTest(restoreService, data, size); OHOS::RestoreOnBundleFinishedFuzzTest(restoreService, data, size); @@ -694,6 +713,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::RestoreOnFileReadyFuzzTest(restoreService, data, size); OHOS::RestoreOnResultReportFuzzTest(restoreService, data, size); OHOS::RestoreOnProcessInfoFuzzTest(restoreService, data, size); + OHOS::OnRemoteRequestFuzzTest(restoreService, data, size); OHOS::IncrementalBackupOnFileReadyFuzzTest(incrementalBackupService, data, size); OHOS::IncrementalBackupOnBundleStartedFuzzTest(incrementalBackupService, data, size); @@ -702,6 +722,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::IncrementalBackupOnAllBundlesFinishedFuzzTest(incrementalBackupService, data, size); OHOS::IncrementalBackupOnProcessInfoFuzzTest(incrementalBackupService, data, size); OHOS::IncrementalBackupOnScanningInfoFuzzTest(incrementalBackupService, data, size); + OHOS::OnRemoteRequestFuzzTest(incrementalBackupService, data, size); OHOS::IncrementalRestoreOnBundleStartedFuzzTest(incrementalRestoreService, data, size); OHOS::IncrementalRestoreOnBundleFinishedFuzzTest(incrementalRestoreService, data, size); @@ -709,5 +730,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::IncrementalRestoreOnFileReadyFuzzTest(incrementalRestoreService, data, size); OHOS::IncrementalRestoreOnResultReportFuzzTest(incrementalRestoreService, data, size); OHOS::IncrementalRestoreOnProcessInfoFuzzTest(incrementalRestoreService, data, size); + OHOS::OnRemoteRequestFuzzTest(incrementalRestoreService, data, size); + return 0; } \ No newline at end of file -- Gitee From c2872c78bd4275328b28013898179391110868a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E4=BD=B3=E7=82=9C?= Date: Tue, 3 Jun 2025 15:01:37 +0800 Subject: [PATCH 20/29] =?UTF-8?q?C:/Program=20Files/Git/=E7=9A=84=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E9=80=BB=E8=BE=91=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 石佳炜 --- interfaces/common/src/common_func.cpp | 2 +- interfaces/common/src/sandbox_helper.cpp | 7 ++----- interfaces/innerkits/native/file_uri/src/file_uri.cpp | 6 +++--- test/unittest/remote_file_share/remote_file_share_test.cpp | 4 ++-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/interfaces/common/src/common_func.cpp b/interfaces/common/src/common_func.cpp index ac37cffbd..1218cf70e 100644 --- a/interfaces/common/src/common_func.cpp +++ b/interfaces/common/src/common_func.cpp @@ -111,7 +111,7 @@ static void NormalizePath(string &path) string CommonFunc::GetUriFromPath(const string &path) { if (!SandboxHelper::IsValidPath(path)) { - LOGE("path is ValidPath, The path contains '/./' or '../'characters"); + LOGE("path is ValidPath, The path contains '../' characters"); return ""; } if (path.find(FILE_SCHEME_PREFIX) == 0) { diff --git a/interfaces/common/src/sandbox_helper.cpp b/interfaces/common/src/sandbox_helper.cpp index 854ddcab0..6c274917b 100644 --- a/interfaces/common/src/sandbox_helper.cpp +++ b/interfaces/common/src/sandbox_helper.cpp @@ -376,7 +376,7 @@ int32_t SandboxHelper::GetPhysicalPath(const std::string &fileUri, const std::st std::string &physicalPath) { if (!IsValidPath(fileUri)) { - LOGE("fileUri is ValidUri, The fileUri contains '/./' or '../'characters"); + LOGE("fileUri is ValidUri, The fileUri contains '../' characters"); return -EINVAL; } Uri uri(fileUri); @@ -416,7 +416,7 @@ int32_t SandboxHelper::GetBackupPhysicalPath(const std::string &fileUri, const s std::string &physicalPath) { if (!IsValidPath(fileUri)) { - LOGE("fileUri is ValidUri, The fileUri contains '/./' or '../'characters"); + LOGE("fileUri is ValidUri, The fileUri contains '../' characters"); return -EINVAL; } Uri uri(fileUri); @@ -454,9 +454,6 @@ int32_t SandboxHelper::GetBackupPhysicalPath(const std::string &fileUri, const s bool SandboxHelper::IsValidPath(const std::string &filePath) { - if (filePath.find("/./") != std::string::npos) { - return false; - } size_t pos = filePath.find(PATH_INVALID_FLAG1); while (pos != string::npos) { if (pos == 0 || filePath[pos - 1] == BACKSLASH) { diff --git a/interfaces/innerkits/native/file_uri/src/file_uri.cpp b/interfaces/innerkits/native/file_uri/src/file_uri.cpp index d13f58ab0..b7674f81e 100644 --- a/interfaces/innerkits/native/file_uri/src/file_uri.cpp +++ b/interfaces/innerkits/native/file_uri/src/file_uri.cpp @@ -151,7 +151,7 @@ string FileUri::GetRealPathBySA(const std::string &targetBundleName) { string sandboxPath = DecodeBySA(uri_.GetPath()); if (sandboxPath.empty() || !SandboxHelper::IsValidPath(sandboxPath)) { - LOGE("path is ValidPath, The path contains '/./' or '../'characters"); + LOGE("path is ValidPath, The path contains '../' characters"); return ""; } string realPath = sandboxPath; @@ -174,7 +174,7 @@ string FileUri::GetFullDirectoryUri() { string uri = uri_.ToString(); if (!SandboxHelper::IsValidPath(uri)) { - LOGE("uri is ValidUri, The uri contains '/./' or '../'characters"); + LOGE("uri is ValidUri, The uri contains '../' characters"); return ""; } struct stat fileInfo; @@ -213,7 +213,7 @@ bool FileUri::CheckUriFormat(const std::string &uri) return false; } if (!SandboxHelper::IsValidPath(uri)) { - LOGE("uri is ValidPath, The uri contains '/./' or '../'characters"); + LOGE("uri is ValidPath, The uri contains '../' characters"); return false; } return true; 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 5df49b322..9a4a76941 100644 --- a/test/unittest/remote_file_share/remote_file_share_test.cpp +++ b/test/unittest/remote_file_share/remote_file_share_test.cpp @@ -252,7 +252,7 @@ namespace { HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0007, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0007"; - const string uriStr = "file://com.demo.a/./data/storage/el2/base/remote_file_share_test.txt"; + const string uriStr = "file://com.demo.a/../data/storage/el2/base/remote_file_share_test.txt"; const int userId = 100; HmdfsUriInfo hui; int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); @@ -732,7 +732,7 @@ namespace { HWTEST_F(RemoteFileShareTest, remote_file_share_test_0017, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "RemoteFileShareTest-begin remote_file_share_test_0017"; - vector uriList = {"file://docs/storage/Users/currentUser/./Document/1.txt"}; + vector uriList = {"file://docs/storage/Users/currentUser/../Document/1.txt"}; const string networkId = "100"; const string deviceId = "001"; vector resultList; -- Gitee From 3c62a2961987a62146728c6b8533dff7413d25b6 Mon Sep 17 00:00:00 2001 From: linan24 Date: Mon, 26 May 2025 21:32:16 +0800 Subject: [PATCH 21/29] fix stability issue Signed-off-by: linan24 --- .../backup_kit_inner/src/service_client.cpp | 1 + .../backup_sa/include/module_ipc/service.h | 2 + .../src/module_ipc/service_incremental.cpp | 41 +++++++++++++------ .../module_ipc/service_incremental_test.cpp | 22 +++++++--- 4 files changed, 48 insertions(+), 18 deletions(-) diff --git a/frameworks/native/backup_kit_inner/src/service_client.cpp b/frameworks/native/backup_kit_inner/src/service_client.cpp index f4af54168..0fbf3f9d1 100644 --- a/frameworks/native/backup_kit_inner/src/service_client.cpp +++ b/frameworks/native/backup_kit_inner/src/service_client.cpp @@ -42,6 +42,7 @@ bool ServiceClient::CheckServiceProxy() sptr ServiceClient::GetServiceProxyPointer() { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); + unique_lock lock(proxyMutex_); return serviceProxy_; } diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index aa7913f2c..9398f2d2c 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -649,6 +649,8 @@ private: void CancelTask(std::string bundleName, wptr ptr); + bool CancelSessionClean(sptr session, std::string bundleName); + void SetUserIdAndRestoreType(RestoreTypeEnum restoreType, int32_t userId); ErrCode VerifySendRateParam(); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 2215a7110..6d8469981 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -966,6 +966,34 @@ void Service::SetBundleIncDataInfo(const std::vector& bundlesT } } +bool Service::CancelSessionClean(sptr session, std::string bundleName) +{ + if (session == nullptr) { + HILOGE("Session is nullptr"); + return false; + } + auto connectionWptr = session->GetExtConnection(bundleName); + if (connectionWptr == nullptr) { + HILOGE("connectionWptr is null."); + return false; + } + auto backUpConnection = connectionWptr.promote(); + if (backUpConnection == nullptr) { + HILOGE("Promote backUpConnection ptr is null."); + return false; + } + auto proxy = backUpConnection->GetBackupExtProxy(); + if (!proxy) { + HILOGE("Extension backup Proxy is empty."); + return false; + } + proxy->HandleClear(); + session->StopFwkTimer(bundleName); + session->StopExtTimer(bundleName); + backUpConnection->DisconnectBackupExtAbility(); + return true; +} + void Service::CancelTask(std::string bundleName, wptr ptr) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); @@ -987,20 +1015,9 @@ void Service::CancelTask(std::string bundleName, wptr ptr) } do { std::lock_guard lock(mutexPtr->callbackMutex); - auto backUpConnection = session->GetExtConnection(bundleName); - if (backUpConnection == nullptr) { - HILOGE("Promote backUpConnection ptr is null."); - break; - } - auto proxy = backUpConnection->GetBackupExtProxy(); - if (!proxy) { - HILOGE("Extension backup Proxy is empty."); + if (!CancelSessionClean(session, bundleName)) { break; } - proxy->HandleClear(); - session->StopFwkTimer(bundleName); - session->StopExtTimer(bundleName); - backUpConnection->DisconnectBackupExtAbility(); thisPtr->ClearSessionAndSchedInfo(bundleName); IServiceReverseType::Scenario scenario = session->GetScenario(); if ((scenario == IServiceReverseType::Scenario::BACKUP && session->GetIsIncrementalBackup()) || 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 5813e2ea9..fdb43da06 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -1764,12 +1764,17 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0000, TestSiz service->CancelTask("", service); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + std::string bundleName = "123"; + auto callDied = [](const string &&bundleName, bool isCleanCalled) {}; + auto callConnected = [](const string &&bundleName) {}; + auto connectPtr = sptr(new SvcBackupConnection(callDied, callConnected, bundleName)); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); service->CancelTask("", service); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); @@ -1779,7 +1784,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0000, TestSiz service->CancelTask("", service); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); @@ -1809,7 +1814,12 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0100, TestSiz { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_CancelTask_0100"; try { - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + std::string bundleName = "123"; + auto callDied = [](const string &&bundleName, bool isCleanCalled) {}; + auto callConnected = [](const string &&bundleName) {}; + auto connectPtr = sptr(new SvcBackupConnection(callDied, callConnected, bundleName)); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); @@ -1821,7 +1831,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0100, TestSiz service->CancelTask("", service); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); @@ -1832,7 +1842,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0100, TestSiz service->CancelTask("", service); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)).WillOnce(Return(nullptr)); + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(wptr(connectPtr))).WillOnce(Return(nullptr)); EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); -- Gitee From da86a7eac47187f7cdfe912efe520bd2c004df01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E4=BD=B3=E7=82=9C?= Date: Tue, 3 Jun 2025 15:01:37 +0800 Subject: [PATCH 22/29] =?UTF-8?q?=E6=97=A0=E7=94=A8=E7=9A=84=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 石佳炜 --- interfaces/common/src/common_func.cpp | 2 +- interfaces/common/src/sandbox_helper.cpp | 7 ++----- .../native/file_uri/src/file_uri.cpp | 6 +++--- .../remote_file_share_test.cpp | 4 ++-- utils/src/b_filesystem/b_dir.cpp | 21 +++++++++++++++++-- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/interfaces/common/src/common_func.cpp b/interfaces/common/src/common_func.cpp index ac37cffbd..1218cf70e 100644 --- a/interfaces/common/src/common_func.cpp +++ b/interfaces/common/src/common_func.cpp @@ -111,7 +111,7 @@ static void NormalizePath(string &path) string CommonFunc::GetUriFromPath(const string &path) { if (!SandboxHelper::IsValidPath(path)) { - LOGE("path is ValidPath, The path contains '/./' or '../'characters"); + LOGE("path is ValidPath, The path contains '../' characters"); return ""; } if (path.find(FILE_SCHEME_PREFIX) == 0) { diff --git a/interfaces/common/src/sandbox_helper.cpp b/interfaces/common/src/sandbox_helper.cpp index 854ddcab0..6c274917b 100644 --- a/interfaces/common/src/sandbox_helper.cpp +++ b/interfaces/common/src/sandbox_helper.cpp @@ -376,7 +376,7 @@ int32_t SandboxHelper::GetPhysicalPath(const std::string &fileUri, const std::st std::string &physicalPath) { if (!IsValidPath(fileUri)) { - LOGE("fileUri is ValidUri, The fileUri contains '/./' or '../'characters"); + LOGE("fileUri is ValidUri, The fileUri contains '../' characters"); return -EINVAL; } Uri uri(fileUri); @@ -416,7 +416,7 @@ int32_t SandboxHelper::GetBackupPhysicalPath(const std::string &fileUri, const s std::string &physicalPath) { if (!IsValidPath(fileUri)) { - LOGE("fileUri is ValidUri, The fileUri contains '/./' or '../'characters"); + LOGE("fileUri is ValidUri, The fileUri contains '../' characters"); return -EINVAL; } Uri uri(fileUri); @@ -454,9 +454,6 @@ int32_t SandboxHelper::GetBackupPhysicalPath(const std::string &fileUri, const s bool SandboxHelper::IsValidPath(const std::string &filePath) { - if (filePath.find("/./") != std::string::npos) { - return false; - } size_t pos = filePath.find(PATH_INVALID_FLAG1); while (pos != string::npos) { if (pos == 0 || filePath[pos - 1] == BACKSLASH) { diff --git a/interfaces/innerkits/native/file_uri/src/file_uri.cpp b/interfaces/innerkits/native/file_uri/src/file_uri.cpp index d13f58ab0..b7674f81e 100644 --- a/interfaces/innerkits/native/file_uri/src/file_uri.cpp +++ b/interfaces/innerkits/native/file_uri/src/file_uri.cpp @@ -151,7 +151,7 @@ string FileUri::GetRealPathBySA(const std::string &targetBundleName) { string sandboxPath = DecodeBySA(uri_.GetPath()); if (sandboxPath.empty() || !SandboxHelper::IsValidPath(sandboxPath)) { - LOGE("path is ValidPath, The path contains '/./' or '../'characters"); + LOGE("path is ValidPath, The path contains '../' characters"); return ""; } string realPath = sandboxPath; @@ -174,7 +174,7 @@ string FileUri::GetFullDirectoryUri() { string uri = uri_.ToString(); if (!SandboxHelper::IsValidPath(uri)) { - LOGE("uri is ValidUri, The uri contains '/./' or '../'characters"); + LOGE("uri is ValidUri, The uri contains '../' characters"); return ""; } struct stat fileInfo; @@ -213,7 +213,7 @@ bool FileUri::CheckUriFormat(const std::string &uri) return false; } if (!SandboxHelper::IsValidPath(uri)) { - LOGE("uri is ValidPath, The uri contains '/./' or '../'characters"); + LOGE("uri is ValidPath, The uri contains '../' characters"); return false; } return true; 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 5df49b322..9a4a76941 100644 --- a/test/unittest/remote_file_share/remote_file_share_test.cpp +++ b/test/unittest/remote_file_share/remote_file_share_test.cpp @@ -252,7 +252,7 @@ namespace { HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0007, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0007"; - const string uriStr = "file://com.demo.a/./data/storage/el2/base/remote_file_share_test.txt"; + const string uriStr = "file://com.demo.a/../data/storage/el2/base/remote_file_share_test.txt"; const int userId = 100; HmdfsUriInfo hui; int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); @@ -732,7 +732,7 @@ namespace { HWTEST_F(RemoteFileShareTest, remote_file_share_test_0017, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "RemoteFileShareTest-begin remote_file_share_test_0017"; - vector uriList = {"file://docs/storage/Users/currentUser/./Document/1.txt"}; + vector uriList = {"file://docs/storage/Users/currentUser/../Document/1.txt"}; const string networkId = "100"; const string deviceId = "001"; vector resultList; diff --git a/utils/src/b_filesystem/b_dir.cpp b/utils/src/b_filesystem/b_dir.cpp index 3cefa2276..14747e4f0 100644 --- a/utils/src/b_filesystem/b_dir.cpp +++ b/utils/src/b_filesystem/b_dir.cpp @@ -34,7 +34,6 @@ #include "directory_ex.h" #include "errors.h" #include "filemgmt_libhilog.h" -#include "sandbox_helper.h" #include "b_utils/scan_file_singleton.h" namespace OHOS::FileManagement::Backup { @@ -43,6 +42,9 @@ const int32_t PATH_MAX_LEN = 4096; const size_t TOP_ELE = 0; const std::string APP_DATA_DIR = BConstants::PATH_PUBLIC_HOME + BConstants::PATH_APP_DATA + BConstants::FILE_SEPARATOR_CHAR; +const std::string PATH_INVALID_FLAG1 = "../"; +const std::string PATH_INVALID_FLAG2 = "/.."; +const uint32_t PATH_INVALID_FLAG_LEN = 3; static bool IsEmptyDirectory(const string &path) { @@ -528,7 +530,22 @@ vector BDir::GetDirs(const vector &paths) bool BDir::IsFilePathValid(const std::string &filePath) { - return AppFileService::SandboxHelper::IsValidPath(filePath); + size_t pos = filePath.find(PATH_INVALID_FLAG1); + while (pos != string::npos) { + if (pos == 0 || filePath[pos - 1] == BConstants::FILE_SEPARATOR_CHAR) { + HILOGE("Relative path is not allowed, path contain ../, path = %{private}s", + GetAnonyString(filePath).c_str()); + return false; + } + pos = filePath.find(PATH_INVALID_FLAG1, pos + PATH_INVALID_FLAG_LEN); + } + pos = filePath.rfind(PATH_INVALID_FLAG2); + if ((pos != string::npos) && (filePath.size() - pos == PATH_INVALID_FLAG_LEN)) { + HILOGE("Relative path is not allowed, path tail is /.., path = %{private}s", + GetAnonyString(filePath).c_str()); + return false; + } + return true; } bool BDir::CheckAndRmSoftLink(const std::string &filePath) -- Gitee From 7317d314fe232ac1d538690fab6ade62b8c4cc13 Mon Sep 17 00:00:00 2001 From: huhui Date: Fri, 6 Jun 2025 14:02:05 +0800 Subject: [PATCH 23/29] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=B4=E6=B5=8B?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huhui --- services/backup_sa/src/module_ipc/svc_session_manager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 4293b6dc6..81d3b3d5d 100644 --- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp @@ -1210,6 +1210,7 @@ bool SvcSessionManager::CleanAndCheckIfNeedWait(ErrCode &ret, std::vector lock(lock_); for (auto it = impl_.backupExtNameMap.begin(); it != impl_.backupExtNameMap.end();) { + HILOGI("BundleName: %{public}s, schedAction: %{public}d", it->first.c_str(), it->second.schedAction); if (it->second.schedAction == BConstants::ServiceSchedAction::WAIT) { it = impl_.backupExtNameMap.erase(it); } else if (it->second.schedAction == BConstants::ServiceSchedAction::START || @@ -1221,14 +1222,14 @@ bool SvcSessionManager::CleanAndCheckIfNeedWait(ErrCode &ret, std::vectorsecond.backUpConnection; if (backUpConnection == nullptr) { - HILOGE("Clear session error, backUpConnection is empty"); + HILOGE("Clear session error, backUpConnection is empty, bundleName: %{public}s", it->first.c_str()); it = impl_.backupExtNameMap.erase(it); continue; } auto proxy = backUpConnection->GetBackupExtProxy(); // start action if (proxy == nullptr) { - HILOGE("Clear session error, backUpConnection is empty"); + HILOGE("Clear session error, BackupExtProxy is empty, bundleName: %{public}s", it->first.c_str()); backUpConnection->DisconnectBackupExtAbility(); it = impl_.backupExtNameMap.erase(it); continue; @@ -1244,6 +1245,7 @@ bool SvcSessionManager::CleanAndCheckIfNeedWait(ErrCode &ret, std::vectorDisconnectBackupExtAbility(); + HILOGI("Disconnect extensionAbility, bundleName: %{public}s", it->first.c_str()); it = impl_.backupExtNameMap.erase(it); } else { ++it; -- Gitee From 4f2e0f0bacbe237f2c3b38c0f4125f1fb6606e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B8=8A?= Date: Sat, 7 Jun 2025 14:58:48 +0800 Subject: [PATCH 24/29] optimzie dfx:1.fix full restore not report bug 2.fix errcode bug 3.fix stat type wrong problem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘渊 --- .../native/backup_ext/src/ext_extension.cpp | 3 +-- .../backup_ext/src/sub_ext_extension.cpp | 9 ++++--- .../backup_sa/include/module_ipc/service.h | 4 +-- services/backup_sa/src/module_ipc/service.cpp | 20 ++++++++------ .../src/module_ipc/service_incremental.cpp | 24 ++++++++++------- .../backup_sa/src/module_ipc/sub_service.cpp | 27 ++++++++++++------- .../backup_utils/b_radar/b_radar_test.cpp | 6 +++++ utils/include/b_radar/radar_app_statistic.h | 6 ++--- utils/include/b_radar/radar_const.h | 19 ++++++++++--- utils/include/b_radar/radar_total_statistic.h | 8 +++--- utils/src/b_radar/radar_app_statistic.cpp | 12 ++++----- utils/src/b_radar/radar_total_statistic.cpp | 15 ++++++----- 12 files changed, 95 insertions(+), 58 deletions(-) diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index 72010a892..7535be226 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -2177,8 +2177,7 @@ ErrCode BackupExtExtension::IncrementalBigFileReady(TarMap &pkgInfo, int manifestFdval = open(file.data(), O_RDONLY); ret = proxy->AppIncrementalFileReady(item.first, fdval, manifestFdval, errCode); if (SUCCEEDED(ret)) { - HILOGI("IncrementalBigFileReady: The application is packaged successfully, package name is %{public}s", - item.first.c_str()); + HILOGI("IncreBigFileReady: The app is packaged success, package name is %{public}s", item.first.c_str()); RemoveFile(file); } else { HILOGE("IncrementalBigFileReady interface fails to be invoked: %{public}d", ret); diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index b771262fe..66480bd1d 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -230,6 +230,7 @@ std::function BackupExtExtension::OnRestoreCallback( } else { std::string errInfo; BJsonUtil::BuildExtensionErrInfo(errInfo, errCode, errMsg); + extensionPtr->ReportAppStatistic("OnRestoreCallback", errCode); extensionPtr->AppResultReport(errInfo, BackupRestoreScenario::FULL_RESTORE, errCode); } extensionPtr->DoClear(); @@ -269,6 +270,7 @@ std::function BackupExtExtension::OnRestoreExCallbac if (errCode == ERR_OK) { if (restoreRetInfo.size()) { HILOGI("Will notify restore result report"); + extensionPtr->ReportAppStatistic("OnRestoreExCallback1", errCode); extensionPtr->AppResultReport(restoreRetInfo, BackupRestoreScenario::FULL_RESTORE); } return; @@ -279,6 +281,7 @@ std::function BackupExtExtension::OnRestoreExCallbac } else { std::string errInfo; BJsonUtil::BuildExtensionErrInfo(errInfo, errCode, restoreRetInfo); + extensionPtr->ReportAppStatistic("OnRestoreExCallback2", errCode); extensionPtr->AppResultReport(errInfo, BackupRestoreScenario::FULL_RESTORE, errCode); extensionPtr->DoClear(); } @@ -333,7 +336,7 @@ std::function BackupExtExtension::IncreOnRestoreExCa extensionPtr->extension_->InvokeAppExtMethod(errCode, restoreRetInfo); if (errCode == ERR_OK) { if (restoreRetInfo.size()) { - extensionPtr->ReportAppStatistic("IncreOnRestoreExCallback", errCode); + extensionPtr->ReportAppStatistic("IncreOnRestoreExCallback1", errCode); extensionPtr->AppResultReport(restoreRetInfo, BackupRestoreScenario::INCREMENTAL_RESTORE); } return; @@ -344,7 +347,7 @@ std::function BackupExtExtension::IncreOnRestoreExCa } else { std::string errInfo; BJsonUtil::BuildExtensionErrInfo(errInfo, errCode, restoreRetInfo); - extensionPtr->ReportAppStatistic("IncreOnRestoreExCallback", errCode); + extensionPtr->ReportAppStatistic("IncreOnRestoreExCallback2", errCode); extensionPtr->AppResultReport(errInfo, BackupRestoreScenario::INCREMENTAL_RESTORE, errCode); extensionPtr->DoClear(); } @@ -743,7 +746,7 @@ void BackupExtExtension::StartOnProcessTimeOutTimer(wptr obj } if (extPtr->onProcessTimeoutCnt_.load() >= BConstants::APP_ON_PROCESS_TIMEOUT_MAX_COUNT || extPtr->isFirstCallOnProcess_.load()) { - HILOGE("The extension invokes the onProcess for more than three times or the first invoking of the" + HILOGE("The extension invokes the onProcess for more than three times or the first invoking of the " "onProcess times out, timeoutCnt:%{public}d", extPtr->onProcessTimeoutCnt_.load()); std::unique_lock lock(extPtr->onProcessLock_); extPtr->stopCallJsOnProcess_.store(true); diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index 193698546..6f92ac6ae 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -739,7 +739,6 @@ private: } } } - private: static sptr instance_; static std::mutex instanceLock_; @@ -775,7 +774,8 @@ private: std::atomic isScannedEnd_ {false}; std::atomic onScanning_ {false}; std::shared_ptr totalStatistic_ = nullptr; - std::shared_ptr saStatistic_ = nullptr; + std::shared_mutex statMapMutex_; + std::map> saStatisticMap_; public: std::map> backupExtMutexMap_; std::map failedBundles_; diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index dfe4d5d53..fd3842601 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -473,7 +473,7 @@ ErrCode Service::InitRestoreSession(const sptr &remote) ErrCode ret = VerifyCaller(); if (ret != ERR_OK) { HILOGE("Init restore session failed, verify caller failed"); - totalStatistic_->Report("InitRestoreSession", ret, MODULE_INIT); + totalStatistic_->Report("InitRestoreSession", MODULE_INIT, ret); return ret; } ret = session_->Active({ @@ -491,7 +491,7 @@ ErrCode Service::InitRestoreSession(const sptr &remote) ClearFileReadyRadarReport(); return ret; } - totalStatistic_->Report("InitRestoreSession", ret, MODULE_INIT); + totalStatistic_->Report("InitRestoreSession", MODULE_INIT, ret); if (ret == BError(BError::Codes::SA_SESSION_CONFLICT)) { HILOGE("Active restore session error, Already have a session"); return ret; @@ -508,7 +508,7 @@ ErrCode Service::InitBackupSession(const sptr &remote) ErrCode ret = VerifyCaller(); if (ret != ERR_OK) { HILOGE("Init full backup session fail, verify caller failed"); - totalStatistic_->Report("InitBackupSession", ret, MODULE_INIT); + totalStatistic_->Report("InitBackupSession", MODULE_INIT, ret); return ret; } int32_t oldSize = StorageMgrAdapter::UpdateMemPara(BConstants::BACKUP_VFS_CACHE_PRESSURE); @@ -529,7 +529,7 @@ ErrCode Service::InitBackupSession(const sptr &remote) ClearFileReadyRadarReport(); return ret; } - totalStatistic_->Report("InitBackupSession", ret, MODULE_INIT); + totalStatistic_->Report("InitBackupSession", MODULE_INIT, ret); if (ret == BError(BError::Codes::SA_SESSION_CONFLICT)) { HILOGE("Active backup session error, Already have a session"); return ret; @@ -625,7 +625,6 @@ vector Service::GetRestoreBundleNames(UniqueFd fd, }; restoreBundleInfos.emplace_back(info); } - HILOGI("restoreBundleInfos size is:%{public}zu", restoreInfos.size()); return restoreBundleInfos; } @@ -990,10 +989,12 @@ ErrCode Service::ServiceResultReport(const std::string& restoreRetInfo, BackupRe } SendEndAppGalleryNotify(callerName); if (sennario == BackupRestoreScenario::FULL_RESTORE) { + UpdateHandleCnt(errCode); HandleCurBundleEndWork(callerName, sennario); session_->GetServiceReverseProxy()->RestoreOnResultReport(restoreRetInfo, callerName, errCode); OnAllBundlesFinished(BError(BError::Codes::OK)); } else if (sennario == BackupRestoreScenario::INCREMENTAL_RESTORE) { + UpdateHandleCnt(errCode); HandleCurBundleEndWork(callerName, sennario); session_->GetServiceReverseProxy()->IncrementalRestoreOnResultReport(restoreRetInfo, callerName, errCode); OnAllBundlesFinished(BError(BError::Codes::OK)); @@ -1818,9 +1819,11 @@ ErrCode Service::BackupSA(std::string bundleName) { HILOGI("BackupSA begin %{public}s", bundleName.c_str()); if (totalStatistic_ != nullptr) { - saStatistic_ = std::make_shared(bundleName, totalStatistic_->GetUniqId(), - totalStatistic_->GetBizScene()); - saStatistic_->doBackupSpend_.Start(); + std::unique_lock mapLock(statMapMutex_); + std::shared_ptr saStatistic = std::make_shared(bundleName, + totalStatistic_->GetUniqId(), totalStatistic_->GetBizScene()); + saStatistic->doBackupSpend_.Start(); + saStatisticMap_[bundleName] = saStatistic; } IServiceReverseType::Scenario scenario = session_->GetScenario(); auto backUpConnection = session_->GetSAExtConnection(bundleName); @@ -1918,6 +1921,7 @@ ErrCode Service::SADone(ErrCode errCode, std::string bundleName) void Service::NotifyCallerCurAppDone(ErrCode errCode, const std::string &callerName) { + UpdateHandleCnt(errCode); IServiceReverseType::Scenario scenario = session_->GetScenario(); if (scenario == IServiceReverseType::Scenario::BACKUP) { HILOGI("will notify clone data, scenario is Backup"); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 4c5db0ee5..738f41821 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -307,7 +307,7 @@ ErrCode Service::InitIncrementalBackupSession(const sptr& remot ErrCode errCode = VerifyCaller(); if (errCode != ERR_OK) { HILOGE("Init incremental backup session fail, Verify caller failed, errCode:%{public}d", errCode); - totalStatistic_->Report("InitIncrementalBackupSession", errCode, MODULE_INIT); + totalStatistic_->Report("InitIncrementalBackupSession", MODULE_INIT, errCode); return errCode; } if (session_ == nullptr) { @@ -328,7 +328,7 @@ ErrCode Service::InitIncrementalBackupSession(const sptr& remot ClearFileReadyRadarReport(); return errCode; } - totalStatistic_->Report("InitIncrementalBackupSession", errCode, MODULE_INIT); + totalStatistic_->Report("InitIncrementalBackupSession", MODULE_INIT, errCode); if (errCode == BError(BError::Codes::SA_SESSION_CONFLICT)) { HILOGE("Active restore session error, Already have a session"); return errCode; @@ -355,7 +355,7 @@ ErrCode Service::InitIncrementalBackupSession(const sptr& remot ErrCode errCode = VerifyCaller(); if (errCode != ERR_OK) { HILOGE("Init incremental backup session fail, Verify caller failed, errCode:%{public}d", errCode); - totalStatistic_->Report("InitIncrementalBackupSessionWithErrMsg", errCode, MODULE_INIT); + totalStatistic_->Report("InitIncrementalBackupSessionWithErrMsg", MODULE_INIT, errCode); return errCode; } if (session_ == nullptr) { @@ -376,7 +376,7 @@ ErrCode Service::InitIncrementalBackupSession(const sptr& remot ClearFileReadyRadarReport(); return errCode; } - totalStatistic_->Report("InitIncrementalBackupSessionWithErrMsg", errCode, MODULE_INIT); + totalStatistic_->Report("InitIncrementalBackupSessionWithErrMsg", MODULE_INIT, errCode); if (errCode == BError(BError::Codes::SA_SESSION_CONFLICT)) { errMsg = BJsonUtil::BuildInitSessionErrInfo(session_->GetSessionUserId(), session_->GetSessionCallerName(), @@ -563,9 +563,11 @@ ErrCode Service::PublishSAIncrementalFile(const BFileInfo &fileInfo, UniqueFd fd { std::string bundleName = fileInfo.owner; if (totalStatistic_ != nullptr) { - saStatistic_ = std::make_shared(bundleName, totalStatistic_->GetUniqId(), - totalStatistic_->GetBizScene()); - saStatistic_->doRestoreStart_ = TimeUtils::GetTimeMS(); + std::unique_lock mapLock(statMapMutex_); + std::shared_ptr saStatistic = std::make_shared(bundleName, + totalStatistic_->GetUniqId(), totalStatistic_->GetBizScene()); + saStatistic->doRestoreStart_ = TimeUtils::GetTimeMS(); + saStatisticMap_[bundleName] = saStatistic; } ErrCode errCode = VerifyCaller(); if (errCode != ERR_OK) { @@ -855,9 +857,11 @@ ErrCode Service::IncrementalBackupSA(std::string bundleName) { HILOGI("IncrementalBackupSA begin %{public}s", bundleName.c_str()); if (totalStatistic_ != nullptr) { - saStatistic_ = std::make_shared(bundleName, totalStatistic_->GetUniqId(), - totalStatistic_->GetBizScene()); - saStatistic_->doBackupSpend_.Start(); + std::unique_lock mapLock(statMapMutex_); + std::shared_ptr saStatistic = std::make_shared(bundleName, + totalStatistic_->GetUniqId(), totalStatistic_->GetBizScene()); + saStatistic->doBackupSpend_.Start(); + saStatisticMap_[bundleName] = saStatistic; } IServiceReverseType::Scenario scenario = session_->GetScenario(); auto backUpConnection = session_->GetSAExtConnection(bundleName); diff --git a/services/backup_sa/src/module_ipc/sub_service.cpp b/services/backup_sa/src/module_ipc/sub_service.cpp index 33ad9905a..20ffa365a 100644 --- a/services/backup_sa/src/module_ipc/sub_service.cpp +++ b/services/backup_sa/src/module_ipc/sub_service.cpp @@ -630,13 +630,20 @@ void Service::SaStatReport(const string &bundleName, const string &func, RadarEr err.errMsg_.c_str()); return; } - if (saStatistic_ == nullptr) { - saStatistic_ = std::make_shared(bundleName, totalStatistic_->GetUniqId(), - totalStatistic_->GetBizScene()); + + std::shared_ptr saStatistic = nullptr; + { + std::shared_lock mapLock(statMapMutex_); + if (saStatisticMap_.count(bundleName) > 0) { + saStatistic = saStatisticMap_[bundleName]; + saStatistic->doBackupSpend_.End(); + saStatistic->doRestoreSpend_ = TimeUtils::GetSpendMS(saStatistic->doRestoreStart_); + } else { + saStatistic = std::make_shared(bundleName, totalStatistic_->GetUniqId(), + totalStatistic_->GetBizScene()); + } } - saStatistic_->doBackupSpend_.End(); - saStatistic_->doRestoreSpend_ = TimeUtils::GetSpendMS(saStatistic_->doRestoreStart_); - saStatistic_->ReportSA(func, err); + saStatistic->ReportSA(func, err); } void Service::ExtConnectDied(const string &callName) @@ -911,7 +918,7 @@ ErrCode Service::InitRestoreSession(const sptr& remote, std::st ErrCode ret = VerifyCaller(); if (ret != ERR_OK) { HILOGE("Init restore session failed, verify caller failed"); - totalStatistic_->Report("InitRestoreSession", ret, MODULE_INIT); + totalStatistic_->Report("InitRestoreSession", MODULE_INIT, ret); return ret; } ret = session_->Active({ @@ -929,7 +936,7 @@ ErrCode Service::InitRestoreSession(const sptr& remote, std::st ClearFileReadyRadarReport(); return ret; } - totalStatistic_->Report("InitRestoreSession", ret, MODULE_INIT); + totalStatistic_->Report("InitRestoreSession", MODULE_INIT, ret); if (ret == BError(BError::Codes::SA_SESSION_CONFLICT)) { errMsg = BJsonUtil::BuildInitSessionErrInfo(session_->GetSessionUserId(), session_->GetSessionCallerName(), @@ -959,7 +966,7 @@ ErrCode Service::InitBackupSession(const sptr& remote, std::str ErrCode ret = VerifyCaller(); if (ret != ERR_OK) { HILOGE("Init full backup session fail, verify caller failed"); - totalStatistic_->Report("InitBackupSessionWithErrMsg", ret, MODULE_INIT); + totalStatistic_->Report("InitBackupSessionWithErrMsg", MODULE_INIT, ret); return ret; } int32_t oldSize = StorageMgrAdapter::UpdateMemPara(BConstants::BACKUP_VFS_CACHE_PRESSURE); @@ -980,7 +987,7 @@ ErrCode Service::InitBackupSession(const sptr& remote, std::str ClearFileReadyRadarReport(); return ret; } - totalStatistic_->Report("InitBackupSessionWithErrMsg", ret, MODULE_INIT); + totalStatistic_->Report("InitBackupSessionWithErrMsg", MODULE_INIT, ret); if (ret == BError(BError::Codes::SA_SESSION_CONFLICT)) { errMsg = BJsonUtil::BuildInitSessionErrInfo(session_->GetSessionUserId(), session_->GetSessionCallerName(), diff --git a/tests/unittests/backup_utils/b_radar/b_radar_test.cpp b/tests/unittests/backup_utils/b_radar/b_radar_test.cpp index 173a0d9b4..82833f0a7 100644 --- a/tests/unittests/backup_utils/b_radar/b_radar_test.cpp +++ b/tests/unittests/backup_utils/b_radar/b_radar_test.cpp @@ -79,6 +79,12 @@ HWTEST_F(BRadarTest, RadarErrorCode_0100, testing::ext::TestSize.Level1) RadarError err2(MODULE_ABILITY_MGR_SVC, BError(BError::Codes::OK)); EXPECT_EQ(err2.GenCode(), 0); EXPECT_EQ(err2.moduleId_, MODULE_ABILITY_MGR_SVC); + RadarError err3(MODULE_INIT, 139000041); + EXPECT_EQ(err3.error_, 13941); + RadarError err4(MODULE_INIT, 1390000043); + EXPECT_EQ(err4.error_, 13943); + EXPECT_EQ(0, err4.TransferErrCode(0)); + EXPECT_EQ(3099, err4.TransferErrCode(300000099)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "BRadarTest-an exception occurred."; diff --git a/utils/include/b_radar/radar_app_statistic.h b/utils/include/b_radar/radar_app_statistic.h index 8bd071ada..9a84969ff 100644 --- a/utils/include/b_radar/radar_app_statistic.h +++ b/utils/include/b_radar/radar_app_statistic.h @@ -43,7 +43,7 @@ enum FileType : uint8_t { }; const std::unordered_map FileTypeDef = { - {"txt", TXT}, {"log", TXT}, {"json", TXT}, {"xml", TXT}, + {"txt", TXT}, {"log", TXT}, {"json", TXT}, {"xml", TXT}, {"db", TXT}, {"db-compare", TXT}, {"jpg", PIC}, {"jpeg", PIC}, {"png", PIC}, {"bmp", PIC}, {"gif", PIC}, {"svg", PIC}, {"webp", PIC}, {"tif", PIC}, {"raw", PIC}, {"wav", AUDIO}, {"flac", AUDIO}, {"wma", AUDIO}, {"acc", AUDIO}, {"mp3", AUDIO}, {"ogg", AUDIO}, {"opus", AUDIO}, @@ -124,9 +124,9 @@ public: Duration onBackupexSpend_ = {0, 0}; Duration scanFileSpend_ = {0, 0}; int64_t sendRateZeroStart_ = 0; - uint32_t sendRateZeroSpendUS_ = 0; + uint64_t sendRateZeroSpendUS_ = 0; uint32_t tarSpend_ = 0; - uint32_t hashSpendUS_ = 0; + uint64_t hashSpendUS_ = 0; Duration doBackupSpend_ = {0, 0}; Duration onRestoreSpend_ = {0, 0}; diff --git a/utils/include/b_radar/radar_const.h b/utils/include/b_radar/radar_const.h index 4d6767baf..9415e8d2a 100644 --- a/utils/include/b_radar/radar_const.h +++ b/utils/include/b_radar/radar_const.h @@ -87,7 +87,11 @@ struct RadarError { RadarError(BError errCode) { UpdateByBError(errCode); } RadarError(uint32_t moduleId, BError errCode) : moduleId_(moduleId) { UpdateByBError(errCode); } RadarError(uint32_t moduleId) : moduleId_(moduleId) {} - RadarError(uint32_t moduleId, uint16_t error) : moduleId_(moduleId), error_(error) {} + RadarError(uint32_t moduleId, uint32_t error) : moduleId_(moduleId) + { + error_ = TransferErrCode(error); + } + int32_t GenCode() { if (error_ == 0) { @@ -100,15 +104,22 @@ struct RadarError { { int32_t code = errCode.GetCode(); errMsg_ = errCode.ToString(); + error_ = TransferErrCode(code); + } + + int16_t TransferErrCode(int32_t code) + { if (code == 0) { - error_ = 0; - return; + return 0; + } + if (code < 0) { + code = -code; } int32_t errBase = code / DIVIDE_BASE; while (errBase > TRANSFER_BOUND) { errBase /= ADDITION_DIVIDE_BASE; } - error_ = static_cast(errBase + code % MOD_BASE); + return static_cast(errBase + code % MOD_BASE); } uint32_t moduleId_ = MODULE_UNKNOWN; diff --git a/utils/include/b_radar/radar_total_statistic.h b/utils/include/b_radar/radar_total_statistic.h index 372868c0c..22d4824d7 100644 --- a/utils/include/b_radar/radar_total_statistic.h +++ b/utils/include/b_radar/radar_total_statistic.h @@ -17,6 +17,7 @@ #define OHOS_FILEMGMT_BACKUP_RADAR_TOTAL_STATISTIC_H #include +#include #include "radar_const.h" #include "b_error/b_error.h" @@ -37,7 +38,7 @@ public: ~RadarTotalStatistic() = default; void Report(const std::string &func, int32_t error, std::string errMsg = ""); - void Report(const std::string &func, uint32_t moduleId, uint16_t moduleErr); + void Report(const std::string &func, uint32_t moduleId, uint32_t moduleErr); void Report(const std::string &func, BError errCode, uint32_t moduleId = MODULE_UNKNOWN); BizScene GetBizScene() { return bizScene_; } int64_t GetUniqId() { return uniqId_; } @@ -47,8 +48,9 @@ private: std::string hostPkg_ = ""; Mode mode_ = Mode::FULL; int64_t uniqId_ = 0; - std::atomic lastSuccCnt_ = 0; - std::atomic lastFailCnt_ = 0; + std::mutex lastCntMutex_; + uint32_t lastSuccCnt_ = 0; + uint32_t lastFailCnt_ = 0; }; } // namespace OHOS::FileManagement::Backup #endif // OHOS_FILEMGMT_BACKUP_RADAR_TOTAL_STATISTIC_H diff --git a/utils/src/b_radar/radar_app_statistic.cpp b/utils/src/b_radar/radar_app_statistic.cpp index 4d73a0ce8..9d37a82db 100644 --- a/utils/src/b_radar/radar_app_statistic.cpp +++ b/utils/src/b_radar/radar_app_statistic.cpp @@ -79,11 +79,11 @@ void RadarAppStatistic::ReportBackup(const std::string &func, int32_t errorCode, DOMAIN, BACKUP_RESTORE_APP_STATISTIC, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, + APP_CALLER, appCaller_, ORG_PKG, DOMAIN_NAME, FUNC, func, CONCURRENT_ID, uniqId_, BIZ_SCENE, static_cast(BizScene::BACKUP), - APP_CALLER, appCaller_, FILE_SIZE_DIST, fileSizeDist_.ToJsonString(), FILE_TYPE_DIST, fileTypeDist_.ToJsonString(), SMALL_FILE_COUNT, smallFileCount_, @@ -99,9 +99,9 @@ void RadarAppStatistic::ReportBackup(const std::string &func, int32_t errorCode, ON_BACKUP_SPEND, onBackupSpend_.GetSpan(), ON_BACKUPEX_SPEND, onBackupexSpend_.GetSpan(), TAR_SPEND, tarSpend_, - HASH_SPEND, hashSpendUS_ / MS_TO_US, + HASH_SPEND, static_cast(hashSpendUS_ / MS_TO_US), SCAN_FILE_SPEND, scanFileSpend_.GetSpan(), - SEND_RATE_ZERO_SPAN, sendRateZeroSpendUS_ / MS_TO_US, + SEND_RATE_ZERO_SPAN, static_cast(sendRateZeroSpendUS_ / MS_TO_US), DO_BACKUP_SPEND, doBackupSpend_.GetSpan(), ERROR_MSG, errMsg, ERROR_CODE, errorCode, @@ -121,11 +121,11 @@ void RadarAppStatistic::ReportRestore(const std::string &func, int32_t errorCode DOMAIN, BACKUP_RESTORE_APP_STATISTIC, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, + APP_CALLER, appCaller_, ORG_PKG, DOMAIN_NAME, FUNC, func, CONCURRENT_ID, uniqId_, BIZ_SCENE, static_cast(BizScene::RESTORE), - APP_CALLER, appCaller_, BIG_FILE_COUNT, bigFileCount_, BIG_FILE_SIZE, bigFileSize_, TAR_FILE_COUNT, tarFileCount_, @@ -167,11 +167,11 @@ void RadarAppStatistic::ReportError(const std::string &func, RadarError error) DOMAIN, BACKUP_RESTORE_APP_STATISTIC, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, + APP_CALLER, appCaller_, ORG_PKG, DOMAIN_NAME, FUNC, func, CONCURRENT_ID, uniqId_, BIZ_SCENE, static_cast(bizScene_), - APP_CALLER, appCaller_, ERROR_MSG, error.errMsg_, ERROR_CODE, error.GenCode(), BIZ_STAGE, DEFAULT_STAGE, @@ -184,11 +184,11 @@ void RadarAppStatistic::ReportSA(const std::string &func, RadarError error) DOMAIN, BACKUP_RESTORE_APP_STATISTIC, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, + APP_CALLER, appCaller_, ORG_PKG, DOMAIN_NAME, FUNC, func, CONCURRENT_ID, uniqId_, BIZ_SCENE, static_cast(bizScene_), - APP_CALLER, appCaller_, DO_BACKUP_SPEND, doBackupSpend_.GetSpan(), DO_RESTORE_SPEND, doRestoreSpend_, ERROR_MSG, error.errMsg_, diff --git a/utils/src/b_radar/radar_total_statistic.cpp b/utils/src/b_radar/radar_total_statistic.cpp index 1fbd74c91..ca143af9a 100644 --- a/utils/src/b_radar/radar_total_statistic.cpp +++ b/utils/src/b_radar/radar_total_statistic.cpp @@ -28,31 +28,32 @@ RadarTotalStatistic::RadarTotalStatistic(BizScene bizScene, std::string callerNa void RadarTotalStatistic::Report(const std::string &func, int32_t error, std::string errMsg) { + std::lock_guard lastCntLock(lastCntMutex_); uint32_t succCount = succBundleCount_.load(); uint32_t failCount = failBundleCount_.load(); HiSysEventWrite( DOMAIN, BACKUP_RESTORE_STATISTIC, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, + GET_BUNDLE_INFO_SPEND, getBundleInfoSpend_.GetSpan(), + TOTAL_SPEND, totalSpendTime_.GetSpan(), + SUCC_BUNDLE_CNT, succCount - lastSuccCnt_, + FAIL_BUNDLE_CNT, failCount - lastFailCnt_, ORG_PKG, DOMAIN_NAME, FUNC, func, CONCURRENT_ID, uniqId_, BIZ_SCENE, static_cast(bizScene_), HOST_PKG, hostPkg_, MODE, static_cast(mode_), - FAIL_BUNDLE_CNT, failCount - lastFailCnt_.load(), - SUCC_BUNDLE_CNT, succCount - lastSuccCnt_.load(), - GET_BUNDLE_INFO_SPEND, getBundleInfoSpend_.GetSpan(), - TOTAL_SPEND, totalSpendTime_.GetSpan(), ERROR_MSG, errMsg, ERROR_CODE, error, BIZ_STAGE, DEFAULT_STAGE, STAGE_RES, error == 0 ? STAGE_RES_SUCCESS : STAGE_RES_FAIL); - lastSuccCnt_.store(succCount); - lastFailCnt_.store(failCount); + lastSuccCnt_ = succCount; + lastFailCnt_ = failCount; } -void RadarTotalStatistic::Report(const std::string &func, uint32_t moduleId, uint16_t moduleErr) +void RadarTotalStatistic::Report(const std::string &func, uint32_t moduleId, uint32_t moduleErr) { RadarError err(moduleId, moduleErr); Report(func, err.GenCode()); -- Gitee From 128cef2bf6138fd5c5b6608e5c77c15aca985a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B8=8A?= Date: Sat, 7 Jun 2025 15:22:14 +0800 Subject: [PATCH 25/29] fix codestyle problem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘渊 --- .../native/backup_ext/src/ext_extension.cpp | 40 ------------------- .../backup_ext/src/sub_ext_extension.cpp | 40 +++++++++++++++++++ utils/include/b_radar/radar_const.h | 2 +- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index 7535be226..ab892c212 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -2044,46 +2044,6 @@ void BackupExtExtension::FillFileInfos(UniqueFd incrementalFd, allFiles.size(), smallFiles.size(), bigFiles.size()); } -ErrCode BackupExtExtension::HandleIncrementalBackup(int incrementalFd, int manifestFd) -{ - HILOGI("Start HandleIncrementalBackup. incrementalFd:%{public}d, manifestFd:%{public}d", incrementalFd, manifestFd); - UniqueFd incrementalFdUnique(dup(incrementalFd)); - UniqueFd manifestFdUnique(dup(manifestFd)); - ErrCode ret = HandleIncrementalBackup(std::move(incrementalFdUnique), std::move(manifestFdUnique)); - close(incrementalFd); - close(manifestFd); - return ret; -} - -ErrCode BackupExtExtension::HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - try { - HILOGI("Start HandleIncrementalBackup"); - if (!IfAllowToBackupRestore()) { - return BError(BError::Codes::EXT_FORBID_BACKUP_RESTORE, "Application does not allow backup or restore") - .GetCode(); - } - AsyncTaskDoIncrementalBackup(move(incrementalFd), move(manifestFd)); - return ERR_OK; - } catch (...) { - HILOGE("Failed to handle incremental backup"); - return BError(BError::Codes::EXT_INVAL_ARG).GetCode(); - } -} - -ErrCode BackupExtExtension::IncrementalOnBackup(bool isClearData) -{ - HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); - SetClearDataFlag(isClearData); - if (!IfAllowToBackupRestore()) { - return BError(BError::Codes::EXT_FORBID_BACKUP_RESTORE, "Application does not allow backup or restore") - .GetCode(); - } - AsyncTaskOnIncrementalBackup(); - return ERR_OK; -} - static void WriteFile(const string &filename, const vector &srcFiles) { fstream f; diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index 66480bd1d..e1e38e153 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -62,6 +62,46 @@ namespace OHOS::FileManagement::Backup { const uint32_t MAX_FD_GROUP_USE_TIME = 1000; // 每组打开最大时间1000ms +ErrCode BackupExtExtension::HandleIncrementalBackup(int incrementalFd, int manifestFd) +{ + HILOGI("Start HandleIncrementalBackup. incrementalFd:%{public}d, manifestFd:%{public}d", incrementalFd, manifestFd); + UniqueFd incrementalFdUnique(dup(incrementalFd)); + UniqueFd manifestFdUnique(dup(manifestFd)); + ErrCode ret = HandleIncrementalBackup(std::move(incrementalFdUnique), std::move(manifestFdUnique)); + close(incrementalFd); + close(manifestFd); + return ret; +} + +ErrCode BackupExtExtension::HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) +{ + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); + try { + HILOGI("Start HandleIncrementalBackup"); + if (!IfAllowToBackupRestore()) { + return BError(BError::Codes::EXT_FORBID_BACKUP_RESTORE, "Application does not allow backup or restore") + .GetCode(); + } + AsyncTaskDoIncrementalBackup(move(incrementalFd), move(manifestFd)); + return ERR_OK; + } catch (...) { + HILOGE("Failed to handle incremental backup"); + return BError(BError::Codes::EXT_INVAL_ARG).GetCode(); + } +} + +ErrCode BackupExtExtension::IncrementalOnBackup(bool isClearData) +{ + HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); + SetClearDataFlag(isClearData); + if (!IfAllowToBackupRestore()) { + return BError(BError::Codes::EXT_FORBID_BACKUP_RESTORE, "Application does not allow backup or restore") + .GetCode(); + } + AsyncTaskOnIncrementalBackup(); + return ERR_OK; +} + void BackupExtExtension::WaitToSendFd(std::chrono::system_clock::time_point &startTime, int &fdSendNum) { HILOGD("WaitToSendFd Begin"); diff --git a/utils/include/b_radar/radar_const.h b/utils/include/b_radar/radar_const.h index 9415e8d2a..f4c730c44 100644 --- a/utils/include/b_radar/radar_const.h +++ b/utils/include/b_radar/radar_const.h @@ -87,7 +87,7 @@ struct RadarError { RadarError(BError errCode) { UpdateByBError(errCode); } RadarError(uint32_t moduleId, BError errCode) : moduleId_(moduleId) { UpdateByBError(errCode); } RadarError(uint32_t moduleId) : moduleId_(moduleId) {} - RadarError(uint32_t moduleId, uint32_t error) : moduleId_(moduleId) + RadarError(uint32_t moduleId, uint32_t error) : moduleId_(moduleId) { error_ = TransferErrCode(error); } -- Gitee From 01b0b6d72f30de00a0b3073cacff8ff3d220c97b Mon Sep 17 00:00:00 2001 From: YinZong Date: Sat, 7 Jun 2025 11:05:57 +0000 Subject: [PATCH 26/29] update interfaces/innerkits/native/file_share/src/file_permission.cpp. Signed-off-by: YinZong --- interfaces/innerkits/native/file_share/src/file_permission.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interfaces/innerkits/native/file_share/src/file_permission.cpp b/interfaces/innerkits/native/file_share/src/file_permission.cpp index 5cf2d45fd..790e6d5ef 100644 --- a/interfaces/innerkits/native/file_share/src/file_permission.cpp +++ b/interfaces/innerkits/native/file_share/src/file_permission.cpp @@ -357,6 +357,9 @@ int32_t FilePermission::GrantPermission(const vector &uriPolicies if (errorCode == EPERM) { ParseErrorResults(resultCodes, pathPolicies, errorResults); } +#else + LOGW("Sandbox manager bundle not exist, device not support."); + return FileManagement::LibN::E_DEVICENOTSUPPORT; #endif return errorCode; } -- Gitee From 91898a4a4acc85391330f0f93cf4a671619c8a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B8=8A?= Date: Sat, 7 Jun 2025 21:08:54 +0800 Subject: [PATCH 27/29] fix uint32_t overflow bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘渊 --- frameworks/native/backup_ext/src/ext_extension.cpp | 4 ++-- tests/unittests/backup_utils/b_radar/b_radar_test.cpp | 3 ++- utils/include/b_utils/b_time.h | 2 +- utils/src/b_utils/b_time.cpp | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index ab892c212..cb619e84d 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -746,7 +746,7 @@ void BackupExtExtension::DoPacket(const map &srcFiles, TarMap &t auto startTime = std::chrono::system_clock::now(); int fdNum = 0; auto reportCb = ReportErrFileByProc(wptr {this}, curScenario_); - uint32_t totalTarUs = 0; + uint64_t totalTarUs = 0; for (const auto &small : srcFiles) { totalSize += small.second; fileCount += 1; @@ -784,7 +784,7 @@ void BackupExtExtension::DoPacket(const map &srcFiles, TarMap &t packFiles.clear(); RefreshTimeInfo(startTime, fdNum); } - appStatistic_->tarSpend_ = totalTarUs / MS_TO_US; + appStatistic_->tarSpend_ = static_cast(totalTarUs / MS_TO_US); } int BackupExtExtension::DoBackup(TarMap &bigFileInfo, TarMap &fileBackupedInfo, map &smallFiles, diff --git a/tests/unittests/backup_utils/b_radar/b_radar_test.cpp b/tests/unittests/backup_utils/b_radar/b_radar_test.cpp index 82833f0a7..17947b793 100644 --- a/tests/unittests/backup_utils/b_radar/b_radar_test.cpp +++ b/tests/unittests/backup_utils/b_radar/b_radar_test.cpp @@ -84,7 +84,8 @@ HWTEST_F(BRadarTest, RadarErrorCode_0100, testing::ext::TestSize.Level1) RadarError err4(MODULE_INIT, 1390000043); EXPECT_EQ(err4.error_, 13943); EXPECT_EQ(0, err4.TransferErrCode(0)); - EXPECT_EQ(3099, err4.TransferErrCode(300000099)); + EXPECT_EQ(1, err4.TransferErrCode(-1)); + EXPECT_EQ(30099, err4.TransferErrCode(300000099)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "BRadarTest-an exception occurred."; diff --git a/utils/include/b_utils/b_time.h b/utils/include/b_utils/b_time.h index e5726f797..8a995bdf4 100644 --- a/utils/include/b_utils/b_time.h +++ b/utils/include/b_utils/b_time.h @@ -29,7 +29,7 @@ public: static int64_t GetTimeUS(); static uint32_t GetSpendSecond(int64_t startSecond); static uint32_t GetSpendMS(int64_t startMS); - static uint32_t GetSpendUS(int64_t startUS); + static uint64_t GetSpendUS(int64_t startUS); static std::string GetCurrentTime(); }; } // namespace OHOS::FileManagement::TimeUtils diff --git a/utils/src/b_utils/b_time.cpp b/utils/src/b_utils/b_time.cpp index fcdbbb1bb..adaa98796 100644 --- a/utils/src/b_utils/b_time.cpp +++ b/utils/src/b_utils/b_time.cpp @@ -66,7 +66,7 @@ uint32_t TimeUtils::GetSpendMS(int64_t startTime) return static_cast(endTime - startTime); } -uint32_t TimeUtils::GetSpendUS(int64_t startTime) +uint64_t TimeUtils::GetSpendUS(int64_t startTime) { if (startTime == 0) { return 0; @@ -75,7 +75,7 @@ uint32_t TimeUtils::GetSpendUS(int64_t startTime) if (endTime < startTime) { return 0; } - return static_cast(endTime - startTime); + return endTime - startTime; } std::string TimeUtils::GetCurrentTime() -- Gitee From c86c09392dba8881f0f9ba74b8fa45207884be85 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Mon, 9 Jun 2025 16:54:25 +0800 Subject: [PATCH 28/29] modify warnings Signed-off-by: wangpeng --- frameworks/native/backup_ext/src/ext_extension.cpp | 5 +++-- frameworks/native/backup_ext/src/sub_ext_extension.cpp | 6 +++--- services/backup_sa/src/module_ipc/service_incremental.cpp | 2 +- utils/src/b_filesystem/b_dir.cpp | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index cb619e84d..8f67b82de 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -486,6 +486,7 @@ ErrCode BackupExtExtension::IndexFileReady(const TarMap &pkgInfo, sptr "The application is packaged successfully but the AppFileReady interface fails to be invoked: " "%{public}d", ret); + close(fdval); } HILOGI("End notify Appfile Ready"); return ret; @@ -856,13 +857,13 @@ tuple BackupExtExtension::CalculateDataSize(const B HILOGD("bigfile size = %{public}" PRId64 "", fileSize); totalSize += fileSize; } - appStatistic_->bigFileSize_ = totalSize; + appStatistic_->bigFileSize_ = static_cast(totalSize); HILOGI("bigfile size = %{public}" PRId64 "", totalSize); for (const auto &item : smallFiles) { UpdateFileStat(item.first, item.second); totalSize += static_cast(item.second); } - appStatistic_->smallFileSize_ = totalSize - appStatistic_->bigFileSize_; + appStatistic_->smallFileSize_ = static_cast(totalSize - appStatistic_->bigFileSize_); HILOGI("scanning end, Datasize = %{public}" PRId64 "", totalSize); return {ERR_OK, static_cast(includes.size()), static_cast(excludes.size())}; } diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index e1e38e153..ed31e9d1d 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -1094,9 +1094,9 @@ TarMap BackupExtExtension::GetIncrmentBigInfos(const vectorbigFileSize_ += sta.st_size; + appStatistic_->bigFileSize_ += static_cast(sta.st_size); UpdateFileStat(item.filePath, sta.st_size); - uint64_t hashStart = TimeUtils::GetTimeUS(); + uint64_t hashStart = static_cast(TimeUtils::GetTimeUS()); string md5Name = getStringHash(bigFiles, item.filePath); appStatistic_->hashSpendUS_ += TimeUtils::GetSpendUS(hashStart); if (!md5Name.empty()) { @@ -1250,7 +1250,7 @@ void BackupExtExtension::IncrementalPacket(const vector & int fdNum = 0; string partName = GetIncrmentPartName(); auto reportCb = ReportErrFileByProc(wptr {this}, curScenario_); - uint64_t tarStart = TimeUtils::GetTimeMS(); + uint64_t tarStart = static_cast(TimeUtils::GetTimeMS()); for (const auto &small : infos) { appStatistic_->smallFileSize_ += small.size; UpdateFileStat(small.filePath, small.size); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index 738f41821..2490928f7 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -566,7 +566,7 @@ ErrCode Service::PublishSAIncrementalFile(const BFileInfo &fileInfo, UniqueFd fd std::unique_lock mapLock(statMapMutex_); std::shared_ptr saStatistic = std::make_shared(bundleName, totalStatistic_->GetUniqId(), totalStatistic_->GetBizScene()); - saStatistic->doRestoreStart_ = TimeUtils::GetTimeMS(); + saStatistic->doRestoreStart_ = static_cast(TimeUtils::GetTimeMS()); saStatisticMap_[bundleName] = saStatistic; } ErrCode errCode = VerifyCaller(); diff --git a/utils/src/b_filesystem/b_dir.cpp b/utils/src/b_filesystem/b_dir.cpp index 3cefa2276..a725c3f09 100644 --- a/utils/src/b_filesystem/b_dir.cpp +++ b/utils/src/b_filesystem/b_dir.cpp @@ -267,7 +267,8 @@ static set ExpandPathWildcard(const vector &vec, bool onlyPath) } } - set expandPath, filteredPath; + set expandPath; + set filteredPath; for (size_t i = 0; i < gl->gl_pathc; ++i) { std::string tmpPath = gl->gl_pathv[i]; auto pos = tmpPath.find(BConstants::FILE_SEPARATOR_CHAR); -- Gitee From a42208f5cb06aa58df545f62fdc01002aee660e1 Mon Sep 17 00:00:00 2001 From: Wannabe Date: Wed, 11 Jun 2025 16:52:17 +0800 Subject: [PATCH 29/29] fix ut fail Signed-off-by: Wannabe --- tests/unittests/backup_sa/module_ipc/service_other_test.cpp | 3 +++ 1 file changed, 3 insertions(+) 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 01e289711..7253e7c3a 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -1453,6 +1453,9 @@ HWTEST_F(ServiceTest, SUB_Service_LaunchBackupExtension_0200, TestSize.Level1) EXPECT_CALL(*session, UpdateDfxInfo(_, _)).WillOnce(Return()); EXPECT_CALL(*connect, ConnectBackupExtAbility(_, _, _)) .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode())); + EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); + EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); auto ret = service->LaunchBackupExtension(bundleName); EXPECT_EQ(ret, BError(BError::Codes::SA_BOOT_EXT_FAIL)); -- Gitee