代码拉取完成,页面将自动刷新
同步操作将从 OpenHarmony/filemanagement_app_file_service 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/**
* @tc.number: b_jsonutil_BuildInitSessionErrInfo_0701
* @tc.name: b_jsonutil_BuildInitSessionErrInfo_0701
* @tc.desc: Test function of BuildInitSessionErrInfo interface.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 0
* @tc.require: I6F3GV
*/
HWTEST_F(BJsonUtilTest, b_jsonutil_BuildInitSessionErrInfo_0701, testing::ext::TestSize.Level0)
{
GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildInitSessionErrInfo_0701";
try {
int32_t userId = 0;
std::string callerName;
std::string activeTime;
int cjson = 0;
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
auto result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
EXPECT_EQ(result, "");
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
EXPECT_EQ(result, "");
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
EXPECT_EQ(result, "");
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
EXPECT_CALL(*cJsonMock, cJSON_CreateObject())
.WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)))
.WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true));
EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _))
.WillOnce(Return(nullptr))
.WillOnce(Return(nullptr))
.WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
EXPECT_EQ(result, "");
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred.";
}
GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildInitSessionErrInfo_0701";
}
/**
* @tc.number: b_jsonutil_WriteToStr_0801
* @tc.name: b_jsonutil_WriteToStr_0801
* @tc.desc: Test function of WriteToStr interface.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 0
* @tc.require: I6F3GV
*/
HWTEST_F(BJsonUtilTest, b_jsonutil_WriteToStr_0801, testing::ext::TestSize.Level0)
{
GTEST_LOG_(INFO) << "BJsonUtilTest-begin WriteToStr_0801";
try {
std::vector<BJsonUtil::BundleDataSize> bundleDataList;
size_t listSize = 0;
std::string scanning;
std::string jsonStr;
int cjson = 0;
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
auto result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
EXPECT_FALSE(result);
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
EXPECT_FALSE(result);
EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
EXPECT_FALSE(result);
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred.";
}
GTEST_LOG_(INFO) << "BJsonUtilTest-end WriteToStr_0801";
}
/**
* @tc.number: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100
* @tc.name: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100
* @tc.desc: Test function of BackupOnScanningInfo interface for SUCCESS.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100, testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100";
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
EXPECT_CALL(*mock_, SendRequest(_, _, _, _))
.Times(1)
.WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest));
EXPECT_TRUE(proxy_ != nullptr);
std::string scannedInfo;
proxy_->BackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(true);
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnScanningInfo.";
}
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100";
}
/**
* @tc.number: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101
* @tc.name: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101
* @tc.desc: Test function of BackupOnScanningInfo interface for FAILURE.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101,
testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101";
try {
std::string scannedInfo;
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false));
EXPECT_TRUE(proxy_ != nullptr);
proxy_->BackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
EXPECT_TRUE(proxy_ != nullptr);
proxy_->BackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1));
proxy_->BackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnScanningInfo.";
}
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101";
}
/**
* @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100
* @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100
* @tc.desc: Test function of IncrementalBackupOnScanningInfo interface for SUCCESS.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100, testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100";
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
EXPECT_CALL(*mock_, SendRequest(_, _, _, _))
.Times(1)
.WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest));
EXPECT_TRUE(proxy_ != nullptr);
std::string scannedInfo;
proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(true);
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnScanningInfo.";
}
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100";
}
/**
* @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101
* @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101
* @tc.desc: Test function of IncrementalBackupOnScanningInfo interface for FAILURE.
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101,
testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101";
try {
std::string scannedInfo;
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false));
EXPECT_TRUE(proxy_ != nullptr);
proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
EXPECT_TRUE(proxy_ != nullptr);
proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
try {
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1));
proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
EXPECT_TRUE(false);
} catch (BError &err) {
EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
}
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnScanningInfo.";
}
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101";
}
/**
* @tc.number: SUB_backup_sa_session_Exception_0100
* @tc.name: SUB_backup_sa_session_Exception_0100
* @tc.desc: 测试 Exception
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_Exception_0100, testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_Exception_0100";
try {
EXPECT_TRUE(sessionManagerPtr_ != nullptr);
sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID;
sessionManagerPtr_->impl_.backupExtNameMap.clear();
sessionManagerPtr_->SetExtFileNameRequest(BUNDLE_NAME, "");
EXPECT_TRUE(true);
sessionManagerPtr_->impl_.scenario = IServiceReverse::Scenario::RESTORE;
std::set<std::string> fileSet = sessionManagerPtr_->GetExtFileNameRequest(BUNDLE_NAME);
EXPECT_TRUE(fileSet.empty());
sessionManagerPtr_->SetBackupExtName(BUNDLE_NAME, "");
EXPECT_TRUE(true);
std::string extName = sessionManagerPtr_->GetBackupExtName(BUNDLE_NAME);
EXPECT_TRUE(extName.empty());
sessionManagerPtr_->SetBackupExtInfo(BUNDLE_NAME, "");
EXPECT_TRUE(true);
std::string extInfo = sessionManagerPtr_->GetBackupExtInfo(BUNDLE_NAME);
EXPECT_TRUE(extInfo.empty());
sessionManagerPtr_->SetBundleUserId(BUNDLE_NAME, 0);
EXPECT_TRUE(true);
int32_t id = sessionManagerPtr_->GetBundleUserId(BUNDLE_NAME);
EXPECT_EQ(id, sessionManagerPtr_->GetSessionUserId());
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by Exception.";
}
GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_Exception_0100";
}
/**
* @tc.number: SUB_backup_sa_session_Exception_0200
* @tc.name: SUB_backup_sa_session_Exception_0200
* @tc.desc: 测试 Exception
* @tc.size: MEDIUM
* @tc.type: FUNC
* @tc.level Level 1
* @tc.require: I6F3GV
*/
HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_Exception_0200, testing::ext::TestSize.Level1)
{
GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_Exception_0200";
try {
EXPECT_TRUE(sessionManagerPtr_ != nullptr);
sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID;
sessionManagerPtr_->impl_.backupExtNameMap.clear();
sessionManagerPtr_->SetBundleRestoreType(BUNDLE_NAME, RestoreTypeEnum::RESTORE_DATA_WAIT_SEND);
EXPECT_TRUE(true);
RestoreTypeEnum restoreType = sessionManagerPtr_->GetBundleRestoreType(BUNDLE_NAME);
EXPECT_EQ(restoreType, RestoreTypeEnum::RESTORE_DATA_WAIT_SEND);
sessionManagerPtr_->SetBundleVersionCode(BUNDLE_NAME, 0);
EXPECT_TRUE(true);
int64_t versionCode = sessionManagerPtr_->GetBundleVersionCode(BUNDLE_NAME);
EXPECT_EQ(versionCode, 0);
sessionManagerPtr_->SetBundleVersionName(BUNDLE_NAME, "");
EXPECT_TRUE(true);
std::string versionName = sessionManagerPtr_->GetBundleVersionName(BUNDLE_NAME);
EXPECT_TRUE(versionName.empty());
sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, true);
EXPECT_TRUE(true);
bool flag = sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME);
EXPECT_TRUE(flag);
} catch (...) {
EXPECT_TRUE(false);
GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by Exception.";
}
GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_Exception_0200";
}
diff --git a/tests/unittests/backup_sa/module_ipc/service_reverse_proxy_test.cpp b/tests/unittests/backup_sa/module_ipc/service_reverse_proxy_test.cpp
index 48853ff..c2abd10 100644
--- a/tests/unittests/backup_sa/module_ipc/service_reverse_proxy_test.cpp
+++ b/tests/unittests/backup_sa/module_ipc/service_reverse_proxy_test.cpp
@@ -2524,4 +2524,162 @@ HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalRestoreOnP
}
GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalRestoreOnProcessInfo_0101";
}
+
+/**
+ * @tc.number: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100
+ * @tc.name: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100
+ * @tc.desc: Test function of BackupOnScanningInfo interface for SUCCESS.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100, testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100";
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
+ EXPECT_CALL(*mock_, SendRequest(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest));
+ EXPECT_TRUE(proxy_ != nullptr);
+ std::string scannedInfo;
+ proxy_->BackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(true);
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnScanningInfo.";
+ }
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnScanningInfo_0100";
+}
+
+/**
+ * @tc.number: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101
+ * @tc.name: SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101
+ * @tc.desc: Test function of BackupOnScanningInfo interface for FAILURE.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101,
+ testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101";
+ try {
+ std::string scannedInfo;
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false));
+ EXPECT_TRUE(proxy_ != nullptr);
+ proxy_->BackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
+ EXPECT_TRUE(proxy_ != nullptr);
+ proxy_->BackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
+ EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1));
+ proxy_->BackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by BackupOnScanningInfo.";
+ }
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_BackupOnScanningInfo_0101";
+}
+
+/**
+ * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100
+ * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100
+ * @tc.desc: Test function of IncrementalBackupOnScanningInfo interface for SUCCESS.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100, testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100";
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
+ EXPECT_CALL(*mock_, SendRequest(_, _, _, _))
+ .Times(1)
+ .WillOnce(Invoke(mock_.GetRefPtr(), &ServiceReverseMock::InvokeSendRequest));
+ EXPECT_TRUE(proxy_ != nullptr);
+ std::string scannedInfo;
+ proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(true);
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnScanningInfo.";
+ }
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0100";
+}
+
+/**
+ * @tc.number: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101
+ * @tc.name: SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101
+ * @tc.desc: Test function of IncrementalBackupOnScanningInfo interface for FAILURE.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(ServiceReverseProxyTest, SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101,
+ testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-begin SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101";
+ try {
+ std::string scannedInfo;
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false));
+ EXPECT_TRUE(proxy_ != nullptr);
+ proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
+ EXPECT_TRUE(proxy_ != nullptr);
+ proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+
+ try {
+ EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
+ EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(-1));
+ proxy_->IncrementalBackupOnScanningInfo(scannedInfo);
+ EXPECT_TRUE(false);
+ } catch (BError &err) {
+ EXPECT_EQ(err.GetRawCode(), BError::Codes::SA_BROKEN_IPC);
+ }
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-an exception occurred by IncrementalBackupOnScanningInfo.";
+ }
+ GTEST_LOG_(INFO) << "ServiceReverseProxyTest-end SUB_ServiceReverse_proxy_IncrementalBackupOnScanningInfo_0101";
+}
} // namespace OHOS::FileManagement::Backup
\ No newline at end of file
diff --git a/tests/unittests/backup_sa/module_ipc/svc_session_manager_test.cpp b/tests/unittests/backup_sa/module_ipc/svc_session_manager_test.cpp
index 54c6a50..00fb5bd 100644
--- a/tests/unittests/backup_sa/module_ipc/svc_session_manager_test.cpp
+++ b/tests/unittests/backup_sa/module_ipc/svc_session_manager_test.cpp
@@ -1996,5 +1996,100 @@ HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_SetImplRestoreType_0100, t
}
GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_SetImplRestoreType_0100";
}
+
+/**
+ * @tc.number: SUB_backup_sa_session_Exception_0100
+ * @tc.name: SUB_backup_sa_session_Exception_0100
+ * @tc.desc: 测试 Exception
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_Exception_0100, testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_Exception_0100";
+ try {
+ EXPECT_TRUE(sessionManagerPtr_ != nullptr);
+ sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID;
+ sessionManagerPtr_->impl_.backupExtNameMap.clear();
+
+ sessionManagerPtr_->SetExtFileNameRequest(BUNDLE_NAME, "");
+ EXPECT_TRUE(true);
+
+ sessionManagerPtr_->impl_.scenario = IServiceReverse::Scenario::RESTORE;
+ std::set<std::string> fileSet = sessionManagerPtr_->GetExtFileNameRequest(BUNDLE_NAME);
+ EXPECT_TRUE(fileSet.empty());
+
+ sessionManagerPtr_->SetBackupExtName(BUNDLE_NAME, "");
+ EXPECT_TRUE(true);
+
+ std::string extName = sessionManagerPtr_->GetBackupExtName(BUNDLE_NAME);
+ EXPECT_TRUE(extName.empty());
+
+ sessionManagerPtr_->SetBackupExtInfo(BUNDLE_NAME, "");
+ EXPECT_TRUE(true);
+
+ std::string extInfo = sessionManagerPtr_->GetBackupExtInfo(BUNDLE_NAME);
+ EXPECT_TRUE(extInfo.empty());
+
+ sessionManagerPtr_->SetBundleUserId(BUNDLE_NAME, 0);
+ EXPECT_TRUE(true);
+
+ int32_t id = sessionManagerPtr_->GetBundleUserId(BUNDLE_NAME);
+ EXPECT_EQ(id, sessionManagerPtr_->GetSessionUserId());
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by Exception.";
+ }
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_Exception_0100";
+}
+
+/**
+ * @tc.number: SUB_backup_sa_session_Exception_0200
+ * @tc.name: SUB_backup_sa_session_Exception_0200
+ * @tc.desc: 测试 Exception
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 1
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_Exception_0200, testing::ext::TestSize.Level1)
+{
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-begin SUB_backup_sa_session_Exception_0200";
+ try {
+ EXPECT_TRUE(sessionManagerPtr_ != nullptr);
+ sessionManagerPtr_->impl_.clientToken = CLIENT_TOKEN_ID;
+ sessionManagerPtr_->impl_.backupExtNameMap.clear();
+
+ sessionManagerPtr_->SetBundleRestoreType(BUNDLE_NAME, RestoreTypeEnum::RESTORE_DATA_WAIT_SEND);
+ EXPECT_TRUE(true);
+
+ RestoreTypeEnum restoreType = sessionManagerPtr_->GetBundleRestoreType(BUNDLE_NAME);
+ EXPECT_EQ(restoreType, RestoreTypeEnum::RESTORE_DATA_WAIT_SEND);
+
+ sessionManagerPtr_->SetBundleVersionCode(BUNDLE_NAME, 0);
+ EXPECT_TRUE(true);
+
+ int64_t versionCode = sessionManagerPtr_->GetBundleVersionCode(BUNDLE_NAME);
+ EXPECT_EQ(versionCode, 0);
+
+ sessionManagerPtr_->SetBundleVersionName(BUNDLE_NAME, "");
+ EXPECT_TRUE(true);
+
+ std::string versionName = sessionManagerPtr_->GetBundleVersionName(BUNDLE_NAME);
+ EXPECT_TRUE(versionName.empty());
+
+ sessionManagerPtr_->SetClearDataFlag(BUNDLE_NAME, true);
+ EXPECT_TRUE(true);
+
+ bool flag = sessionManagerPtr_->GetClearDataFlag(BUNDLE_NAME);
+ EXPECT_TRUE(flag);
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-an exception occurred by Exception.";
+ }
+ GTEST_LOG_(INFO) << "SvcSessionManagerTest-end SUB_backup_sa_session_Exception_0200";
+}
#include "svc_session_manager_ex_test.cpp"
} // namespace OHOS::FileManagement::Backup
\ No newline at end of file
diff --git a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp
index b33ae44..3974242 100644
--- a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp
+++ b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_other_test.cpp
@@ -301,4 +301,104 @@ HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleNameIndexInfo_0601, testing::ext::
}
GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildBundleNameIndexInfo_0601";
}
+
+/**
+ * @tc.number: b_jsonutil_BuildInitSessionErrInfo_0701
+ * @tc.name: b_jsonutil_BuildInitSessionErrInfo_0701
+ * @tc.desc: Test function of BuildInitSessionErrInfo interface.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 0
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(BJsonUtilTest, b_jsonutil_BuildInitSessionErrInfo_0701, testing::ext::TestSize.Level0)
+{
+ GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildInitSessionErrInfo_0701";
+ try {
+ int32_t userId = 0;
+ std::string callerName;
+ std::string activeTime;
+ int cjson = 0;
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
+ auto result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
+ EXPECT_EQ(result, "");
+
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
+ result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
+ EXPECT_EQ(result, "");
+
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
+ result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
+ EXPECT_EQ(result, "");
+
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject())
+ .WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)))
+ .WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true));
+ EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _))
+ .WillOnce(Return(nullptr))
+ .WillOnce(Return(nullptr))
+ .WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
+ result = BJsonUtil::BuildInitSessionErrInfo(userId, callerName, activeTime);
+ EXPECT_EQ(result, "");
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred.";
+ }
+ GTEST_LOG_(INFO) << "BJsonUtilTest-end BuildInitSessionErrInfo_0701";
+}
+
+/**
+ * @tc.number: b_jsonutil_WriteToStr_0801
+ * @tc.name: b_jsonutil_WriteToStr_0801
+ * @tc.desc: Test function of WriteToStr interface.
+ * @tc.size: MEDIUM
+ * @tc.type: FUNC
+ * @tc.level Level 0
+ * @tc.require: I6F3GV
+ */
+HWTEST_F(BJsonUtilTest, b_jsonutil_WriteToStr_0801, testing::ext::TestSize.Level0)
+{
+ GTEST_LOG_(INFO) << "BJsonUtilTest-begin WriteToStr_0801";
+ try {
+ std::vector<BJsonUtil::BundleDataSize> bundleDataList;
+ size_t listSize = 0;
+ std::string scanning;
+ std::string jsonStr;
+ int cjson = 0;
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
+ auto result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
+ EXPECT_FALSE(result);
+
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
+ result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
+ EXPECT_FALSE(result);
+
+ EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
+ EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
+ EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
+ EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
+ result = BJsonUtil::WriteToStr(bundleDataList, listSize, scanning, jsonStr);
+ EXPECT_FALSE(result);
+ } catch (...) {
+ EXPECT_TRUE(false);
+ GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred.";
+ }
+ GTEST_LOG_(INFO) << "BJsonUtilTest-end WriteToStr_0801";
+}
}
\ No newline at end of file
From cd6a8cc1aaa5bab31fcd09b2a7a3c5270e868766 Mon Sep 17 00:00:00 2001
From: c30054556 <[email protected]>
Date: Mon, 6 Jan 2025 09:56:00 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96getincrefilehandle?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
TicketNo: DTS0000000000000
Description: 优化getincrefilehandle
Team:gitee
Feature or Bugfix:
Binary Source: sync from gitee
PrivateCode(Yes/No):No
------ DO NOT MODIFY, AUTO-GENERATED! ------
Gitee-Issue: #IBA1W6
Time: "2024-12-13T10:08:11.830Z"
PR-Num: 1440
Gitee-PR: https://openharmony.gitee.com/openharmony/filemanagement_app_file_service/pulls/1440
Change-Id: I1734084480294a879c923285e6391f05e126920e
Reviewed-by: g00613291
Approved-by: z00800685
Merged-on: https://open.codehub.huawei.com/OpenSourceCenter_CR/openharmony/filemanagement_app_file_service/-/change_requests/1974
Merged-by: public hisicitools
---
.../native/backup_ext/include/ext_extension.h | 4 +-
.../native/backup_ext/src/ext_extension.cpp | 33 ++--------
.../backup_ext/src/ext_extension_stub.cpp | 10 ++-
.../backup_kit_inner/impl/i_extension.h | 2 +-
.../backup_sa/include/module_ipc/service.h | 2 +
.../include/module_ipc/svc_extension_proxy.h | 2 +-
.../src/module_ipc/service_incremental.cpp | 65 +++++++++++++++++--
.../svc_extension_incremental_proxy.cpp | 11 ++--
.../module_ipc/svc_extension_proxy_mock.cpp | 4 +-
.../backup_impl/include/ext_extension_mock.h | 4 +-
.../backup_ext/ext_extension_stub_test.cpp | 7 +-
.../module_ipc/svc_extension_proxy_test.cpp | 7 +-
12 files changed, 99 insertions(+), 52 deletions(-)
diff --git a/frameworks/native/backup_ext/include/ext_extension.h b/frameworks/native/backup_ext/include/ext_extension.h
index 8170835a..0a63a362 100644
--- a/frameworks/native/backup_ext/include/ext_extension.h
+++ b/frameworks/native/backup_ext/include/ext_extension.h
@@ -48,7 +48,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) override;
+ std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncrementalFileHandle(const std::string &fileName) override;
ErrCode PublishIncrementalFile(const std::string &fileName) override;
ErrCode HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) override;
ErrCode IncrementalOnBackup(bool isClearData) override;
@@ -286,7 +286,7 @@ private:
std::function<void(std::string, int)> ReportErrFileByProc(wptr<BackupExtExtension> obj,
BackupRestoreScenario scenario);
- ErrCode GetIncreFileHandleForNormalVersion(const std::string &fileName);
+ std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncreFileHandleForNormalVersion(const std::string &fileName);
void RestoreOneBigFile(const std::string &path, const ExtManageInfo &item, const bool appendTargetPath);
int DealIncreRestoreBigAndTarFile();
void ClearNoPermissionFiles(TarMap &pkgInfo, vector<std::string> &noPermissionFiles);
diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp
index 2b9dc0d8..7a395bef 100644
--- a/frameworks/native/backup_ext/src/ext_extension.cpp
+++ b/frameworks/native/backup_ext/src/ext_extension.cpp
@@ -281,7 +281,7 @@ static string GetReportFileName(const string &fileName)
return reportName;
}
-static ErrCode GetIncreFileHandleForSpecialVersion(const string &fileName)
+static tuple<ErrCode, UniqueFd, UniqueFd> GetIncreFileHandleForSpecialVersion(const string &fileName)
{
ErrCode errCode = ERR_OK;
UniqueFd fd = GetFileHandleForSpecialCloneCloud(fileName);
@@ -301,17 +301,7 @@ static ErrCode GetIncreFileHandleForSpecialVersion(const string &fileName)
HILOGE("Failed to open report file = %{private}s, err = %{public}d", reportName.c_str(), errno);
errCode = errno;
}
-
- auto proxy = ServiceProxy::GetInstance();
- if (proxy == nullptr) {
- HILOGE("Failed to get file handle for special version clone");
- return BError(BError::Codes::EXT_BROKEN_BACKUP_SA).GetCode();
- }
- auto ret = proxy->AppIncrementalFileReady(fileName, move(fd), move(reportFd), errCode);
- if (ret != ERR_OK) {
- HILOGE("Failed to AppIncrementalFileReady %{public}d", ret);
- }
- return ERR_OK;
+ return {errCode, move(fd), move(reportFd)};
}
static ErrCode GetIncrementalFileHandlePath(const string &fileName, const string &bundleName, std::string &tarName)
@@ -336,13 +326,9 @@ static ErrCode GetIncrementalFileHandlePath(const string &fileName, const string
return ERR_OK;
}
-ErrCode BackupExtExtension::GetIncreFileHandleForNormalVersion(const std::string &fileName)
+tuple<ErrCode, UniqueFd, UniqueFd> BackupExtExtension::GetIncreFileHandleForNormalVersion(const std::string &fileName)
{
HILOGI("extension: GetIncrementalFileHandle single to single Name:%{public}s", GetAnonyPath(fileName).c_str());
- auto proxy = ServiceProxy::GetInstance();
- if (proxy == nullptr) {
- throw BError(BError::Codes::EXT_BROKEN_IPC, string("Failed to AGetInstance"));
- }
std::string tarName;
int32_t errCode = ERR_OK;
UniqueFd fd(-1);
@@ -375,15 +361,10 @@ ErrCode BackupExtExtension::GetIncreFileHandleForNormalVersion(const std::string
break;
}
} while (0);
- HILOGI("extension: Will notify AppIncrementalFileReady");
- auto ret = proxy->AppIncrementalFileReady(fileName, move(fd), move(reportFd), errCode);
- if (ret != ERR_OK) {
- HILOGE("Failed to AppIncrementalFileReady %{public}d", ret);
- }
- return ERR_OK;
+ return {errCode, move(fd), move(reportFd)};
}
-ErrCode BackupExtExtension::GetIncrementalFileHandle(const string &fileName)
+tuple<ErrCode, UniqueFd, UniqueFd> BackupExtExtension::GetIncrementalFileHandle(const string &fileName)
{
HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__);
try {
@@ -403,7 +384,7 @@ ErrCode BackupExtExtension::GetIncrementalFileHandle(const string &fileName)
if (ret != ERR_OK) {
HILOGE("Failed to notify app incre done. err = %{public}d", ret);
}
- return BError(BError::Codes::EXT_INVAL_ARG).GetCode();
+ return {BError(BError::Codes::EXT_INVAL_ARG).GetCode(), UniqueFd(-1), UniqueFd(-1)};
}
if (extension_->SpecialVersionForCloneAndCloud()) {
return GetIncreFileHandleForSpecialVersion(fileName);
@@ -412,7 +393,7 @@ ErrCode BackupExtExtension::GetIncrementalFileHandle(const string &fileName)
} catch (...) {
HILOGE("Failed to get incremental file handle");
DoClear();
- return BError(BError::Codes::EXT_BROKEN_IPC).GetCode();
+ return {BError(BError::Codes::EXT_BROKEN_IPC).GetCode(), UniqueFd(-1), UniqueFd(-1)};
}
}
diff --git a/frameworks/native/backup_ext/src/ext_extension_stub.cpp b/frameworks/native/backup_ext/src/ext_extension_stub.cpp
index 9e7b4353..38f4ce2f 100644
--- a/frameworks/native/backup_ext/src/ext_extension_stub.cpp
+++ b/frameworks/native/backup_ext/src/ext_extension_stub.cpp
@@ -155,8 +155,14 @@ ErrCode ExtExtensionStub::CmdGetIncrementalFileHandle(MessageParcel &data, Messa
return BError(BError::Codes::EXT_INVAL_ARG, "Failed to receive fileName").GetCode();
}
- ErrCode res = GetIncrementalFileHandle(fileName);
- if (!reply.WriteInt32(res)) {
+ auto[errCode, fd, reportFd] = GetIncrementalFileHandle(fileName);
+ if (!reply.WriteInt32(errCode)) {
+ return BError(BError::Codes::EXT_BROKEN_IPC, "Failed to send out the file").GetCode();
+ }
+ if (!reply.WriteFileDescriptor(fd)) {
+ return BError(BError::Codes::EXT_BROKEN_IPC, "Failed to send out the file").GetCode();
+ }
+ if (!reply.WriteFileDescriptor(reportFd)) {
return BError(BError::Codes::EXT_BROKEN_IPC, "Failed to send out the file").GetCode();
}
return BError(BError::Codes::OK);
diff --git a/interfaces/inner_api/native/backup_kit_inner/impl/i_extension.h b/interfaces/inner_api/native/backup_kit_inner/impl/i_extension.h
index a20fb4cd..7ce72f1a 100644
--- a/interfaces/inner_api/native/backup_kit_inner/impl/i_extension.h
+++ b/interfaces/inner_api/native/backup_kit_inner/impl/i_extension.h
@@ -33,7 +33,7 @@ public:
virtual ErrCode HandleBackup(bool isClearData) = 0;
virtual ErrCode PublishFile(const std::string &fileName) = 0;
virtual ErrCode HandleRestore(bool isClearData) = 0;
- virtual ErrCode GetIncrementalFileHandle(const std::string &fileName) = 0;
+ virtual std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncrementalFileHandle(const std::string &fileName) = 0;
virtual ErrCode PublishIncrementalFile(const std::string &fileName) = 0;
virtual ErrCode HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) = 0;
virtual ErrCode IncrementalOnBackup(bool isClearData) = 0;
diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h
index ae540163..8c31cd02 100644
--- a/services/backup_sa/include/module_ipc/service.h
+++ b/services/backup_sa/include/module_ipc/service.h
@@ -301,6 +301,8 @@ public:
*/
void RemoveExtensionMutex(const BundleName &bundleName);
void StartRunningTimer(const std::string &bundleName);
+ ErrCode AppIncrementalFileReady(const std::string &bundleName, const std::string &fileName, UniqueFd fd,
+ UniqueFd manifestFd, int32_t errCode);
public:
explicit Service(int32_t saID, bool runOnCreate = false) : SystemAbility(saID, runOnCreate)
{
diff --git a/services/backup_sa/include/module_ipc/svc_extension_proxy.h b/services/backup_sa/include/module_ipc/svc_extension_proxy.h
index 4e5b9932..dd38f936 100644
--- a/services/backup_sa/include/module_ipc/svc_extension_proxy.h
+++ b/services/backup_sa/include/module_ipc/svc_extension_proxy.h
@@ -28,7 +28,7 @@ public:
ErrCode HandleBackup(bool isClearData) override;
ErrCode PublishFile(const std::string &fileName) override;
ErrCode HandleRestore(bool isClearData) override;
- ErrCode GetIncrementalFileHandle(const std::string &fileName) override;
+ std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncrementalFileHandle(const std::string &fileName) override;
ErrCode PublishIncrementalFile(const std::string &fileName) override;
ErrCode HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) override;
ErrCode IncrementalOnBackup(bool isClearData) override;
diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp
index 7538ba09..ce85c3be 100644
--- a/services/backup_sa/src/module_ipc/service_incremental.cpp
+++ b/services/backup_sa/src/module_ipc/service_incremental.cpp
@@ -481,6 +481,57 @@ ErrCode Service::PublishSAIncrementalFile(const BFileInfo &fileInfo, UniqueFd fd
return saConnection->CallRestoreSA(move(fd));
}
+ErrCode Service::AppIncrementalFileReady(const std::string &bundleName, const std::string &fileName, UniqueFd fd,
+ UniqueFd manifestFd, int32_t errCode)
+{
+ HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__);
+ try {
+ if (session_->GetScenario() == IServiceReverse::Scenario::RESTORE) {
+ session_->GetServiceReverseProxy()->IncrementalRestoreOnFileReady(bundleName, fileName, move(fd),
+ move(manifestFd), errCode);
+ FileReadyRadarReport(bundleName, fileName, errCode, IServiceReverse::Scenario::RESTORE);
+ return BError(BError::Codes::OK);
+ }
+ if (fileName == BConstants::EXT_BACKUP_MANAGE) {
+ fd = session_->OnBundleExtManageInfo(bundleName, move(fd));
+ }
+ HILOGD("reverse: Will notify IncrementalBackupOnFileReady");
+ session_->GetServiceReverseProxy()->IncrementalBackupOnFileReady(bundleName, fileName, move(fd),
+ move(manifestFd), errCode);
+ FileReadyRadarReport(bundleName, fileName, errCode, IServiceReverse::Scenario::BACKUP);
+ if (session_->OnBundleFileReady(bundleName, fileName)) {
+ auto backUpConnection = session_->GetExtConnection(bundleName);
+ auto proxy = backUpConnection->GetBackupExtProxy();
+ if (!proxy) {
+ throw BError(BError::Codes::SA_INVAL_ARG, "Extension backup Proxy is empty");
+ }
+ // 通知extension清空缓存
+ proxy->HandleClear();
+ // 清除Timer
+ session_->StopFwkTimer(bundleName);
+ session_->StopExtTimer(bundleName);
+ // 通知TOOL 备份完成
+ HILOGI("reverse: Will notify IncrementalBackupOnBundleFinished");
+ session_->GetServiceReverseProxy()->IncrementalBackupOnBundleFinished(BError(BError::Codes::OK),
+ bundleName);
+ BundleEndRadarReport(bundleName, BError(BError::Codes::OK), IServiceReverse::Scenario::BACKUP);
+ // 断开extension
+ backUpConnection->DisconnectBackupExtAbility();
+ ClearSessionAndSchedInfo(bundleName);
+ }
+ OnAllBundlesFinished(BError(BError::Codes::OK));
+ return BError(BError::Codes::OK);
+ } catch (const BError &e) {
+ return e.GetCode(); // 任意异常产生,终止监听该任务
+ } catch (const exception &e) {
+ HILOGI("Catched an unexpected low-level exception %{public}s", e.what());
+ return EPERM;
+ } catch (...) {
+ HILOGI("Unexpected exception");
+ return EPERM;
+ }
+}
+
ErrCode Service::AppIncrementalFileReady(const std::string &fileName, UniqueFd fd, UniqueFd manifestFd, int32_t errCode)
{
HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__);
@@ -599,12 +650,13 @@ ErrCode Service::GetIncrementalFileHandle(const std::string &bundleName, const s
HILOGE("GetIncrementalFileHandle error, Extension backup Proxy is empty");
return BError(BError::Codes::SA_INVAL_ARG);
}
- ErrCode res = proxy->GetIncrementalFileHandle(fileName);
- if (res != ERR_OK) {
- HILOGE("Failed to extension file handle");
+ auto[errCode, fd, reportFd] = proxy->GetIncrementalFileHandle(fileName);
+ auto err = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), errCode);
+ if (err != ERR_OK) {
+ HILOGE("Failed to send file handle");
AppRadar::Info info (bundleName, "", "");
AppRadar::GetInstance().RecordRestoreFuncRes(info, "Service::GetIncrementalFileHandle",
- GetUserIdDefault(), BizStageRestore::BIZ_STAGE_GET_FILE_HANDLE_FAIL, res);
+ GetUserIdDefault(), BizStageRestore::BIZ_STAGE_GET_FILE_HANDLE_FAIL, err);
}
} else {
SvcRestoreDepsManager::GetInstance().UpdateToRestoreBundleMap(bundleName, fileName);
@@ -650,9 +702,10 @@ bool Service::IncrementalBackup(const string &bundleName)
BundleBeginRadarReport(bundleName, ret, IServiceReverse::Scenario::RESTORE);
auto fileNameVec = session_->GetExtFileNameRequest(bundleName);
for (auto &fileName : fileNameVec) {
- ret = proxy->GetIncrementalFileHandle(fileName);
+ auto[errCode, fd, reportFd] = proxy->GetIncrementalFileHandle(fileName);
+ ret = AppIncrementalFileReady(bundleName, fileName, move(fd), move(reportFd), errCode);
if (ret) {
- HILOGE("Failed to extension file handle %{public}s", fileName.c_str());
+ HILOGE("Failed to send file handle %{public}s", GetAnonyString(fileName).c_str());
}
}
return true;
diff --git a/services/backup_sa/src/module_ipc/svc_extension_incremental_proxy.cpp b/services/backup_sa/src/module_ipc/svc_extension_incremental_proxy.cpp
index 03dbb4fe..c29b0e72 100644
--- a/services/backup_sa/src/module_ipc/svc_extension_incremental_proxy.cpp
+++ b/services/backup_sa/src/module_ipc/svc_extension_incremental_proxy.cpp
@@ -25,7 +25,7 @@
namespace OHOS::FileManagement::Backup {
using namespace std;
-ErrCode SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
+std::tuple<ErrCode, UniqueFd, UniqueFd> SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
{
HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__);
HILOGD("Start");
@@ -35,7 +35,7 @@ ErrCode SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
if (!data.WriteString(fileName)) {
BError(BError::Codes::SDK_INVAL_ARG, "Failed to send the fileName");
- return ErrCode(EPERM);
+ return {ErrCode(EPERM), UniqueFd(-1), UniqueFd(-1)};
}
MessageParcel reply;
@@ -44,11 +44,14 @@ ErrCode SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
data, reply, option);
if (ret != NO_ERROR) {
HILOGE("Received error %{public}d when doing IPC", ret);
- return ErrCode(ret);
+ return {ErrCode(ret), UniqueFd(-1), UniqueFd(-1)};
}
HILOGD("Successful");
- return reply.ReadInt32();
+ ErrCode err(reply.ReadInt32());
+ UniqueFd fd(reply.ReadFileDescriptor());
+ UniqueFd reportFd(reply.ReadFileDescriptor());
+ return {err, move(fd), move(reportFd)};
}
ErrCode SvcExtensionProxy::PublishIncrementalFile(const string &fileName)
diff --git a/tests/mock/module_ipc/svc_extension_proxy_mock.cpp b/tests/mock/module_ipc/svc_extension_proxy_mock.cpp
index bb000e09..a2534d89 100644
--- a/tests/mock/module_ipc/svc_extension_proxy_mock.cpp
+++ b/tests/mock/module_ipc/svc_extension_proxy_mock.cpp
@@ -48,9 +48,9 @@ ErrCode SvcExtensionProxy::GetBackupInfo(std::string &result)
return 0;
}
-ErrCode SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
+std::tuple<ErrCode, UniqueFd, UniqueFd> SvcExtensionProxy::GetIncrementalFileHandle(const string &fileName)
{
- return 0;
+ return {0, UniqueFd(-1), UniqueFd(-1)};
}
ErrCode SvcExtensionProxy::PublishIncrementalFile(const string &fileName)
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 b5070b41..3399bc31 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
@@ -104,9 +104,9 @@ public:
return BError(BError::Codes::OK);
};
- ErrCode GetIncrementalFileHandle(const std::string &fileName) override
+ std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncrementalFileHandle(const std::string &fileName) override
{
- return BError(BError::Codes::OK);
+ return {BError(BError::Codes::OK), UniqueFd(-1), UniqueFd(-1)};
};
ErrCode PublishIncrementalFile(const std::string &fileName) override
diff --git a/tests/unittests/backup_ext/ext_extension_stub_test.cpp b/tests/unittests/backup_ext/ext_extension_stub_test.cpp
index 8755506f..99a8bd55 100644
--- a/tests/unittests/backup_ext/ext_extension_stub_test.cpp
+++ b/tests/unittests/backup_ext/ext_extension_stub_test.cpp
@@ -31,7 +31,7 @@ public:
MOCK_METHOD(ErrCode, HandleBackup, (bool isClearData));
MOCK_METHOD(ErrCode, PublishFile, (const std::string &fileName));
MOCK_METHOD(ErrCode, HandleRestore, (bool isClearData));
- MOCK_METHOD(ErrCode, GetIncrementalFileHandle, (const std::string &fileName));
+ MOCK_METHOD((std::tuple<ErrCode, UniqueFd, UniqueFd>), GetIncrementalFileHandle, (const std::string &fileName));
MOCK_METHOD(ErrCode, PublishIncrementalFile, (const std::string &fileName));
MOCK_METHOD(ErrCode, HandleIncrementalBackup, (UniqueFd incrementalFd, UniqueFd manifestFd));
MOCK_METHOD(ErrCode, IncrementalOnBackup, (bool isClearData));
@@ -311,14 +311,15 @@ HWTEST_F(ExtExtensionStubTest, SUB_backup_ext_ExtExtensionStub_CmdGetIncremental
EXPECT_EQ(err, BError(BError::Codes::EXT_INVAL_ARG));
EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(true));
- EXPECT_CALL(*stub, GetIncrementalFileHandle(_)).WillOnce(Return(0));
+ EXPECT_CALL(*stub, GetIncrementalFileHandle(_)).WillOnce(Return(make_tuple(0, UniqueFd(-1), UniqueFd(-1))));
EXPECT_CALL(*messageParcelMock, WriteInt32(_)).WillOnce(Return(false));
err = stub->CmdGetIncrementalFileHandle(data, reply);
EXPECT_EQ(err, BError(BError::Codes::EXT_BROKEN_IPC));
EXPECT_CALL(*messageParcelMock, ReadString(_)).WillOnce(Return(true));
- EXPECT_CALL(*stub, GetIncrementalFileHandle(_)).WillOnce(Return(0));
+ EXPECT_CALL(*stub, GetIncrementalFileHandle(_)).WillOnce(Return(make_tuple(0, UniqueFd(-1), UniqueFd(-1))));
EXPECT_CALL(*messageParcelMock, WriteInt32(_)).WillOnce(Return(true));
+ EXPECT_CALL(*messageParcelMock, WriteFileDescriptor(_)).WillOnce(Return(true)).WillOnce(Return(true));
err = stub->CmdGetIncrementalFileHandle(data, reply);
EXPECT_EQ(err, BError(BError::Codes::OK));
} catch (...) {
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
index aa55e0dc..572c43f8 100644
--- a/tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp
+++ b/tests/unittests/backup_sa/module_ipc/svc_extension_proxy_test.cpp
@@ -368,20 +368,21 @@ HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetIncrementalFileHandle
EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
EXPECT_TRUE(proxy_ != nullptr);
- ErrCode ret = proxy_->GetIncrementalFileHandle(fileName);
+ 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));
- ret = proxy_->GetIncrementalFileHandle(fileName);
+ 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));
- ret = proxy_->GetIncrementalFileHandle(fileName);
+ 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);
--
2.45.2.huawei.7
diff --git a/interfaces/kits/js/backup/session_backup_n_exporter.cpp b/interfaces/kits/js/backup/session_backup_n_exporter.cpp
index fcb482f7..06afd433 100644
--- a/interfaces/kits/js/backup/session_backup_n_exporter.cpp
+++ b/interfaces/kits/js/backup/session_backup_n_exporter.cpp
@@ -39,10 +39,6 @@ struct BackupEntity {
static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &fileInfo, UniqueFd fd, int sysErrno)
{
- if (pCallbacks.expired()) {
- HILOGI("callbacks is unbound");
- return;
- }
auto callbacks = pCallbacks.lock();
if (!callbacks) {
HILOGI("callback function onFileReady has already been released");
@@ -53,15 +49,16 @@ static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &
return;
}
ErrCode errCode = BError::GetCodeByErrno(sysErrno);
- std::string errMsg = "system errno: " + to_string(sysErrno);
- std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, errMsg);
-
+ std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, "system errno: " + to_string(sysErrno));
+ HILOGI("callback function backup onFileReady begin errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), fileInfo.owner.c_str(), GetAnonyPath(fileInfo.fileName).c_str());
auto cbCompl = [bundleName {fileInfo.owner}, fileName {fileInfo.fileName},
fd {make_shared<UniqueFd>(fd.Release())}, errInfo](napi_env env, NError err) -> NVal {
if (err) {
return {env, err.GetNapiErr(env)};
}
- HILOGI("callback function backup onFileReady cbCompl errcode: %{public}d", std::get<0>(errInfo));
+ HILOGI("callback function backup onFileReady errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
NVal obj;
ErrParam errorParam = [ errInfo ]() {
return errInfo;
@@ -82,6 +79,8 @@ static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &
NVal::DeclareNapiProperty(BConstants::URI.c_str(), NVal::CreateUTF8String(env, fileName).val_),
NVal::DeclareNapiProperty(BConstants::FD.c_str(), NVal::CreateInt32(env, fd->Release()).val_)});
}
+ HILOGI("callback function backup onFileReady end errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
return {obj};
};
diff --git a/interfaces/kits/js/backup/session_incremental_backup_n_exporter.cpp b/interfaces/kits/js/backup/session_incremental_backup_n_exporter.cpp
index a983e927..793d2697 100644
--- a/interfaces/kits/js/backup/session_incremental_backup_n_exporter.cpp
+++ b/interfaces/kits/js/backup/session_incremental_backup_n_exporter.cpp
@@ -42,10 +42,6 @@ struct BackupEntity {
static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &fileInfo, UniqueFd fd,
UniqueFd manifestFd, int sysErrno)
{
- if (pCallbacks.expired()) {
- HILOGI("callbacks is unbound");
- return;
- }
auto callbacks = pCallbacks.lock();
if (!callbacks) {
HILOGI("callback function onFileReady has already been released");
@@ -56,9 +52,9 @@ static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &
return;
}
ErrCode errCode = BError::GetCodeByErrno(sysErrno);
- std::string errMsg = "system errno: " + to_string(sysErrno);
- std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, errMsg);
-
+ std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, "system errno: " + to_string(sysErrno));
+ HILOGI("callback function incre backup onFileReady begin errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), fileInfo.owner.c_str(), GetAnonyPath(fileInfo.fileName).c_str());
auto cbCompl = [bundleName {fileInfo.owner}, fileName {fileInfo.fileName},
fd {make_shared<UniqueFd>(fd.Release())},
manifestFd {make_shared<UniqueFd>(manifestFd.Release())},
@@ -66,7 +62,8 @@ static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &
if (err) {
return {env, err.GetNapiErr(env)};
}
- HILOGI("callback function incremental backup onFileReady cbCompl errcode: %{public}d", std::get<0>(errInfo));
+ HILOGI("callback function incre backup onFileReady errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
NVal obj;
ErrParam errorParam = [ errInfo ]() {
return errInfo;
@@ -88,6 +85,8 @@ static void OnFileReady(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &
NVal::DeclareNapiProperty(BConstants::MANIFEST_FD.c_str(),
NVal::CreateInt32(env, manifestFd->Release()).val_)});
}
+ HILOGI("callback function incre backup onFileReady end errCode:%{public}d, bundle:%{public}s, file:%{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
return {obj};
};
diff --git a/interfaces/kits/js/backup/session_restore_n_exporter.cpp b/interfaces/kits/js/backup/session_restore_n_exporter.cpp
index b39a7c26..7d802412 100644
--- a/interfaces/kits/js/backup/session_restore_n_exporter.cpp
+++ b/interfaces/kits/js/backup/session_restore_n_exporter.cpp
@@ -44,10 +44,6 @@ struct RestoreEntity {
static void OnFileReadySheet(weak_ptr<GeneralCallbacks> pCallbacks, const BFileInfo &fileInfo,
UniqueFd fd, UniqueFd manifestFd, int32_t sysErrno)
{
- if (pCallbacks.expired()) {
- HILOGI("callbacks is unbound");
- return;
- }
auto callbacks = pCallbacks.lock();
if (!callbacks) {
HILOGI("callback function onFileReady has already been released");
@@ -58,9 +54,9 @@ static void OnFileReadySheet(weak_ptr<GeneralCallbacks> pCallbacks, const BFileI
return;
}
ErrCode errCode = BError::GetCodeByErrno(sysErrno);
- std::string errMsg = "system errno: " + to_string(sysErrno);
- std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, errMsg);
-
+ std::tuple<uint32_t, std::string> errInfo = std::make_tuple(errCode, "system errno: " + to_string(sysErrno));
+ HILOGI("callback function restore onFileReadySheet begin errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), fileInfo.owner.c_str(), GetAnonyPath(fileInfo.fileName).c_str());
auto cbCompl = [bundleName {fileInfo.owner}, fileName {fileInfo.fileName},
fd {make_shared<UniqueFd>(fd.Release())},
manifestFd {make_shared<UniqueFd>(manifestFd.Release())},
@@ -68,7 +64,8 @@ static void OnFileReadySheet(weak_ptr<GeneralCallbacks> pCallbacks, const BFileI
if (err) {
return {env, err.GetNapiErr(env)};
}
- HILOGI("callback function restore OnFileReadySheet errCode: %{public}d", std::get<0>(errInfo));
+ HILOGI("callback function restore OnFileReadySheet errCode: %{public}d, bundle: %{public}s, file: %{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
NVal obj;
ErrParam errorParam = [ errInfo ]() {
return errInfo;
@@ -90,6 +87,8 @@ static void OnFileReadySheet(weak_ptr<GeneralCallbacks> pCallbacks, const BFileI
NVal::DeclareNapiProperty(BConstants::MANIFEST_FD.c_str(),
NVal::CreateInt32(env, manifestFd->Release()).val_)});
}
+ HILOGI("callback function restore onFileReadySheet end errCode:%{public}d, bundle:%{public}s, file:%{public}s",
+ std::get<0>(errInfo), bundleName.c_str(), GetAnonyPath(fileName).c_str());
return {obj};
};
# Copyright (c) 2022-2023 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.
import("//build/ohos.gni")
group("tgt_backup_extension") {
deps = [
"frameworks/native/backup_ext:backup_extension_ability_native",
"interfaces/api/js/napi/backup_ext:backupextensionability_napi",
"interfaces/api/js/napi/backup_ext_context:backupextensioncontext_napi",
]
}
group("tgt_backup_kit_inner") {
deps = [ "interfaces/inner_api/native/backup_kit_inner" ]
}
group("tgt_backup_sa") {
deps = [
"services:backup_para_etc",
"services:backup_sa_etc",
"services:backup_sa_profile",
"services/backup_sa",
]
}
group("tgt_backup_tests") {
testonly = true
deps = [
"tests/moduletests",
"tests/unittests",
]
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。