diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index 7cf4f70060ed9cb011236dc9001f32b3eac2c51c..81aae7530c8a9bbcbdef16b8e23a6c06398518cc 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -300,6 +300,7 @@ public: * */ void RemoveExtensionMutex(const BundleName &bundleName); + void StartRunningTimer(const std::string &bundleName); public: explicit Service(int32_t saID, bool runOnCreate = false) : SystemAbility(saID, runOnCreate) { diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index caa9bd9c3b67aa68f31d391a173e98cde195abda..53c7c824b265cb46240b11402ddaf00ee9a416c4 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -1236,18 +1236,22 @@ void Service::NoticeClientFinish(const string &bundleName, ErrCode errCode) } } +void Service::StartRunningTimer(const std::string &bundleName) +{ + auto timeoutCallback = TimeOutCallback(wptr(this), bundleName); + auto scenario = session_->GetScenario(); + if (scenario == IServiceReverse::Scenario::BACKUP) { + session_->StartExtTimer(bundleName, timeoutCallback); + } else if (scenario == IServiceReverse::Scenario::RESTORE) { + session_->StartFwkTimer(bundleName, timeoutCallback); + } +} + void Service::ExtConnectDone(string bundleName) { HITRACE_METER_NAME(HITRACE_TAG_FILEMANAGEMENT, __PRETTY_FUNCTION__); try { HILOGE("begin %{public}s", bundleName.data()); - auto timeoutCallback = TimeOutCallback(wptr(this), bundleName); - auto scenario = session_->GetScenario(); - if (scenario == IServiceReverse::Scenario::BACKUP) { - session_->StartExtTimer(bundleName, timeoutCallback); - } else if (scenario == IServiceReverse::Scenario::RESTORE) { - session_->StartFwkTimer(bundleName, timeoutCallback); - } BConstants::ServiceSchedAction curSchedAction = session_->GetServiceSchedAction(bundleName); if (curSchedAction == BConstants::ServiceSchedAction::CLEAN) { diff --git a/services/backup_sa/src/module_sched/sched_scheduler.cpp b/services/backup_sa/src/module_sched/sched_scheduler.cpp index 09b7433141948677bb980c1662f3722617d7569c..bdcae3866942a3a6611554edd7add35be143f958 100644 --- a/services/backup_sa/src/module_sched/sched_scheduler.cpp +++ b/services/backup_sa/src/module_sched/sched_scheduler.cpp @@ -130,6 +130,7 @@ void SchedScheduler::ExecutingQueueTasks(const string &bundleName) lock.unlock(); //notify AppGallery to start restore if (reversePtr_ != nullptr) { + reversePtr_->StartRunningTimer(bundleName); reversePtr_->SendStartAppGalleryNotify(bundleName); reversePtr_->ExtStart(bundleName); } diff --git a/tests/mock/module_ipc/service_mock.cpp b/tests/mock/module_ipc/service_mock.cpp index f0abbf7ffb81fc1975eea9b6c27236f5dc384ad4..f7a4f876189181e35e525b41e8625cd79b212d6d 100644 --- a/tests/mock/module_ipc/service_mock.cpp +++ b/tests/mock/module_ipc/service_mock.cpp @@ -289,6 +289,7 @@ void Service::CreateDirIfNotExist(const std::string &path) { } +void Service::StartRunningTimer(const std::string &bundleName) {} std::vector Service::GetSupportBackupBundleNames(vector&, bool) { return {}; 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 237e5abb2f56f465494ea083b9be6bf093fae768..677feb583db0fdca9893fe240ec20c7b2101868d 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -244,6 +244,7 @@ void Service::UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo void Service::ClearFailedBundles() {} +void Service::StartRunningTimer(const std::string &bundleName) {} std::vector Service::GetSupportBackupBundleNames(vector&, bool) { return {}; 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 465955d96156441348749eeb64d7958937677d0c..141e4e3494917dd76e4dae5295d3378f84d7a05a 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -272,6 +272,7 @@ HWTEST_F(ServiceTest, SUB_Service_GetUserIdDefault_0000, TestSize.Level1) EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair(false, 0))); EXPECT_CALL(*skeleton, GetCallingUid()) + .WillOnce(Return(BConstants::SPAN_USERID_UID + BConstants::SPAN_USERID_UID)) .WillOnce(Return(BConstants::SPAN_USERID_UID + BConstants::SPAN_USERID_UID)); ret = GetUserIdDefault(); EXPECT_EQ(ret, 2); @@ -373,8 +374,9 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0200, TestSize.Level1) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector())); EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); - EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(true, DEBUG_ID + 1))) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK))); service->OnStart(); @@ -405,9 +407,9 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0300, TestSize.Level1) EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector())) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector(1))); - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); - EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(true, DEBUG_ID + 1))) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK))); service->OnStart(); @@ -417,9 +419,10 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0300, TestSize.Level1) EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector(1))) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector(1))); - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); - EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)); + EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)); EXPECT_CALL(*param, GetBackupDebugOverrideAccount()) + .WillOnce(Return(make_pair(true, DEBUG_ID + 1))) + .WillOnce(Return(make_pair(true, DEBUG_ID + 1))) .WillOnce(Return(make_pair(true, DEBUG_ID + 1))); EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK))); service->OnStart(); 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 95822dae993b7f80f3e85bc9bda45f576727d3c5..80f110bdba21b162581b1c7614e2eea6cbdb924d 100644 --- a/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp @@ -747,38 +747,20 @@ HWTEST_F(ServiceTest, SUB_Service_ExtConnectDone_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_ExtConnectDone_0000"; try { - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); - EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::WAIT)); - EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(true)); - service->ExtConnectDone(""); - EXPECT_TRUE(true); - - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP)); - EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::WAIT)); - EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(true)); - EXPECT_CALL(*session, StartExtTimer(_, _)).WillOnce(Return(false)); - service->ExtConnectDone(""); - EXPECT_TRUE(true); - - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::WAIT)); EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(true)); - EXPECT_CALL(*session, StartFwkTimer(_, _)).WillOnce(Return(false)); service->ExtConnectDone(""); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::CLEAN)); service->ExtConnectDone(""); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::START)); EXPECT_CALL(*cdConfig, FindClearBundleRecord(_)).WillOnce(Return(true)); service->ExtConnectDone(""); EXPECT_TRUE(true); - EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::START)); EXPECT_CALL(*cdConfig, FindClearBundleRecord(_)).WillOnce(Return(false)); EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(true)); 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 b7c34633a07937747fec6ca3c2cb68ebff00aa99..251e3a796f4f8d67daccaa9fccd0e05fe087103b 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 @@ -862,7 +862,7 @@ HWTEST_F(SvcSessionManagerTest, SUB_backup_sa_session_GetSchedBundleName_0100, t EXPECT_TRUE(sessionManagerPtr_ != nullptr); bool condition = sessionManagerPtr_->GetSchedBundleName(bundleName); EXPECT_EQ(bundleName, BUNDLE_NAME); - EXPECT_TRUE(condition); + EXPECT_FALSE(condition); GTEST_LOG_(INFO) << "SvcSessionManagerTest-GetSchedBundleName Branches"; sessionManagerPtr_->SetServiceSchedAction(BUNDLE_NAME, BConstants::ServiceSchedAction::START); condition = sessionManagerPtr_->GetSchedBundleName(bundleName);