From 3231a8d5bb005777dcab0998a44acbff261b1431 Mon Sep 17 00:00:00 2001 From: "Zhangyao(Maggie)" Date: Thu, 7 Nov 2024 16:14:41 +0800 Subject: [PATCH 1/2] move timer Signed-off-by: Zhangyao(Maggie) --- .../backup_sa/include/module_ipc/service.h | 1 + services/backup_sa/src/module_ipc/service.cpp | 18 ++++++----- .../src/module_sched/sched_scheduler.cpp | 1 + tests/mock/module_ipc/service_mock.cpp | 2 ++ .../module_ipc/service_incremental_test.cpp | 2 ++ .../module_ipc/service_other_test.cpp | 31 ++++++++++++++++--- .../backup_sa/module_ipc/sub_service_test.cpp | 18 ----------- .../module_ipc/svc_session_manager_test.cpp | 2 +- 8 files changed, 45 insertions(+), 30 deletions(-) diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index a093d680c..0a5c5a7aa 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 5b07f1b0a..9f671d000 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -1255,18 +1255,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 efcfb24d6..d0cf3cda4 100644 --- a/services/backup_sa/src/module_sched/sched_scheduler.cpp +++ b/services/backup_sa/src/module_sched/sched_scheduler.cpp @@ -114,6 +114,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 9c1fc72f2..4517b45c6 100644 --- a/tests/mock/module_ipc/service_mock.cpp +++ b/tests/mock/module_ipc/service_mock.cpp @@ -288,4 +288,6 @@ void Service::ClearFailedBundles() {} void Service::CreateDirIfNotExist(const std::string &path) { } + +void Service::StartRunningTimer(const std::string &bundleName) {} } // namespace OHOS::FileManagement::Backup 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 4cad2e71b..de7267705 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -242,6 +242,8 @@ void Service::ExtensionConnectFailRadarReport(const std::string &bundleName, con void Service::UpdateFailedBundles(const std::string &bundleName, BundleTaskInfo taskInfo) {} void Service::ClearFailedBundles() {} + +void Service::StartRunningTimer(const std::string &bundleName) {} } // namespace OHOS::FileManagement::Backup namespace OHOS::FileManagement::Backup { 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 83dc8310c..fe1c27350 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -270,6 +270,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); @@ -370,21 +371,42 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0200, TestSize.Level1) EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector(1))) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector())); - 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(); EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnStart."; + } + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0200"; +} +/** + * @tc.number: SUB_Service_OnStart_0300 + * @tc.name: SUB_Service_OnStart_0300 + * @tc.desc: 测试 OnStart + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceTest, SUB_Service_OnStart_0300, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_OnStart_0300"; + try { auto session_ = service->session_; service->session_ = nullptr; EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false)); EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector())) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector(1))); - 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(); @@ -394,8 +416,9 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0200, TestSize.Level1) EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector(1))) .WillOnce(Return(vector())); EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector(1))); - 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,7 +428,7 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0200, TestSize.Level1) EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnStart."; } - GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0200"; + GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0300"; } /** 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 419c05e07..e5e4ffcd7 100644 --- a/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/sub_service_test.cpp @@ -826,38 +826,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 b7c34633a..251e3a796 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); -- Gitee From eceb1d172595c029145745d67de6613e1f32eb54 Mon Sep 17 00:00:00 2001 From: "Zhangyao(Maggie)" Date: Thu, 7 Nov 2024 16:54:20 +0800 Subject: [PATCH 2/2] ut update Signed-off-by: Zhangyao(Maggie) --- tests/unittests/backup_sa/module_ipc/service_other_test.cpp | 1 + 1 file changed, 1 insertion(+) 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 fe1c27350..30064bc8c 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -418,6 +418,7 @@ HWTEST_F(ServiceTest, SUB_Service_OnStart_0300, TestSize.Level1) EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector(1))); 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))); -- Gitee