From c673f203fd134871343e4aa0949293b68b3864e7 Mon Sep 17 00:00:00 2001 From: zhaoleyi Date: Mon, 13 Nov 2023 10:46:59 +0800 Subject: [PATCH] quick fix 11-11 Signed-off-by: zhaoleyi Change-Id: Icd49af7489c0a3d7ede921edb47918b86f27cbb8 --- .../quick_fix/include/quick_fix_manager_client.h | 3 ++- .../quick_fix/include/quick_fix_manager_interface.h | 3 ++- .../quick_fix/include/quick_fix_manager_proxy.h | 3 ++- .../quick_fix/src/quick_fix_manager_client.cpp | 5 ++--- .../quick_fix/src/quick_fix_manager_proxy.cpp | 7 ++++++- .../quick_fix/src/quick_fix_manager_stub.cpp | 4 ++-- .../include/quick_fix_manager_apply_task.h | 4 ++-- .../quickfixmgr/include/quick_fix_manager_service.h | 3 ++- .../quickfixmgr/src/quick_fix_manager_apply_task.cpp | 11 ++++++----- .../quickfixmgr/src/quick_fix_manager_service.cpp | 5 ++--- .../mock/include/mock_quick_fix_manager_stub.h | 2 +- .../quick_fix_manager_client_test.cpp | 5 +++-- .../mock/mock_quick_fix_manager_service.cpp | 2 +- .../quick_fix_manager_stub_test.cpp | 5 +++-- 14 files changed, 36 insertions(+), 26 deletions(-) diff --git a/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h b/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h index b7bca985da2..baa5f422455 100644 --- a/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h +++ b/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h @@ -38,9 +38,10 @@ public: * @brief Apply quick fix. * * @param quickFixFiles quick fix files need to apply, this value should include file path and file name. + * @param isDebug this value is for the quick fix debug mode selection. * @return returns 0 on success, error code on failure. */ - int32_t ApplyQuickFix(const std::vector &quickFixFiles); + int32_t ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug = false); /** * @brief Get applyed quick fix info. diff --git a/interfaces/inner_api/quick_fix/include/quick_fix_manager_interface.h b/interfaces/inner_api/quick_fix/include/quick_fix_manager_interface.h index 12bf6184cf4..b2a7ba479eb 100644 --- a/interfaces/inner_api/quick_fix/include/quick_fix_manager_interface.h +++ b/interfaces/inner_api/quick_fix/include/quick_fix_manager_interface.h @@ -29,9 +29,10 @@ public: * @brief Apply quick fix. * * @param quickFixFiles quick fix files need to apply, this value should include file path and file name. + * @param isDebug this value is for the quick fix debug mode selection. * @return returns 0 on success, error code on failure. */ - virtual int32_t ApplyQuickFix(const std::vector &quickFixFiles) = 0; + virtual int32_t ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug = false) = 0; /** * @brief Get applyed quick fix info. diff --git a/interfaces/inner_api/quick_fix/include/quick_fix_manager_proxy.h b/interfaces/inner_api/quick_fix/include/quick_fix_manager_proxy.h index 20d7fa9229b..5942d464f5c 100644 --- a/interfaces/inner_api/quick_fix/include/quick_fix_manager_proxy.h +++ b/interfaces/inner_api/quick_fix/include/quick_fix_manager_proxy.h @@ -31,9 +31,10 @@ public: * @brief Apply quick fix. * * @param quickFixFiles quick fix files need to apply, this value should include file path and file name. + * @param isDebug this value is for the quick fix debug mode selection. * @return returns 0 on success, error code on failure. */ - int32_t ApplyQuickFix(const std::vector &quickFixFiles) override; + int32_t ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug = false) override; /** * @brief Get applyed quick fix info. diff --git a/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp b/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp index 510611f638e..504c4f5383a 100644 --- a/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp +++ b/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp @@ -30,7 +30,7 @@ namespace { const int LOAD_SA_TIMEOUT_MS = 4 * 1000; } // namespace -int32_t QuickFixManagerClient::ApplyQuickFix(const std::vector &quickFixFiles) +int32_t QuickFixManagerClient::ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); HILOG_DEBUG("function called."); @@ -40,8 +40,7 @@ int32_t QuickFixManagerClient::ApplyQuickFix(const std::vector &qui HILOG_ERROR("Get quick fix manager service failed."); return QUICK_FIX_CONNECT_FAILED; } - - return quickFixMgr->ApplyQuickFix(quickFixFiles); + return quickFixMgr->ApplyQuickFix(quickFixFiles, isDebug); } int32_t QuickFixManagerClient::GetApplyedQuickFixInfo(const std::string &bundleName, diff --git a/interfaces/inner_api/quick_fix/src/quick_fix_manager_proxy.cpp b/interfaces/inner_api/quick_fix/src/quick_fix_manager_proxy.cpp index b950a0c6085..e277529abbe 100644 --- a/interfaces/inner_api/quick_fix/src/quick_fix_manager_proxy.cpp +++ b/interfaces/inner_api/quick_fix/src/quick_fix_manager_proxy.cpp @@ -24,7 +24,7 @@ namespace OHOS { namespace AAFwk { -int32_t QuickFixManagerProxy::ApplyQuickFix(const std::vector &quickFixFiles) +int32_t QuickFixManagerProxy::ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); HILOG_DEBUG("function called."); @@ -54,6 +54,11 @@ int32_t QuickFixManagerProxy::ApplyQuickFix(const std::vector &quic return QUICK_FIX_WRITE_PARCEL_FAILED; } + if (!data.WriteBool(isDebug)) { + HILOG_ERROR("Write quick fix debug failed."); + return QUICK_FIX_WRITE_PARCEL_FAILED; + } + MessageParcel reply; MessageOption option(MessageOption::TF_SYNC); auto ret = SendTransactCmd(QuickFixMgrCmd::ON_APPLY_QUICK_FIX, data, reply, option); diff --git a/interfaces/inner_api/quick_fix/src/quick_fix_manager_stub.cpp b/interfaces/inner_api/quick_fix/src/quick_fix_manager_stub.cpp index 13e11141114..48b486030fe 100644 --- a/interfaces/inner_api/quick_fix/src/quick_fix_manager_stub.cpp +++ b/interfaces/inner_api/quick_fix/src/quick_fix_manager_stub.cpp @@ -61,8 +61,8 @@ int32_t QuickFixManagerStub::ApplyQuickFixInner(MessageParcel &data, MessageParc HILOG_ERROR("Read quick fix files failed."); return QUICK_FIX_READ_PARCEL_FAILED; } - - auto ret = ApplyQuickFix(hapQuickFixFiles); + bool isDebug = data.ReadBool(); + auto ret = ApplyQuickFix(hapQuickFixFiles, isDebug); reply.WriteInt32(ret); return QUICK_FIX_OK; } diff --git a/services/quickfixmgr/include/quick_fix_manager_apply_task.h b/services/quickfixmgr/include/quick_fix_manager_apply_task.h index 1d137161808..299f427bcb1 100644 --- a/services/quickfixmgr/include/quick_fix_manager_apply_task.h +++ b/services/quickfixmgr/include/quick_fix_manager_apply_task.h @@ -38,7 +38,7 @@ public: QUICK_FIX_REVOKE, }; - void Run(const std::vector &quickFixFiles); + void Run(const std::vector &quickFixFiles, bool isDebug = false); void HandlePatchDeployed(); void HandlePatchSwitched(); void HandlePatchDeleted(); @@ -64,7 +64,7 @@ public: void PostRevokeQuickFixDeleteTask(); void PostRevokeQuickFixProcessDiedTask(); private: - void PostDeployQuickFixTask(const std::vector &quickFixFiles); + void PostDeployQuickFixTask(const std::vector &quickFixFiles, bool isDebug = false); void PostTimeOutTask(); void PostNotifyLoadRepairPatchTask(); void PostNotifyUnloadRepairPatchTask(); diff --git a/services/quickfixmgr/include/quick_fix_manager_service.h b/services/quickfixmgr/include/quick_fix_manager_service.h index 2a3df8b9252..9d6898151ca 100644 --- a/services/quickfixmgr/include/quick_fix_manager_service.h +++ b/services/quickfixmgr/include/quick_fix_manager_service.h @@ -50,9 +50,10 @@ public: * @brief Apply quick fix. * * @param quickFixFiles Quick fix files need to apply, this value should include file path and file name. + * @param isDebug this value is for the quick fix debug mode selection. * @return Returns 0 on success, error code on failure. */ - int32_t ApplyQuickFix(const std::vector &quickFixFiles) override; + int32_t ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug = false) override; /** * @brief Get applyed quick fix info. diff --git a/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp b/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp index 8f8c20bdb68..27492be9b03 100644 --- a/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp +++ b/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp @@ -307,12 +307,12 @@ QuickFixManagerApplyTask::~QuickFixManagerApplyTask() HILOG_DEBUG("destroyed."); } -void QuickFixManagerApplyTask::Run(const std::vector &quickFixFiles) +void QuickFixManagerApplyTask::Run(const std::vector &quickFixFiles, bool isDebug) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); HILOG_INFO("Run apply task."); taskType_ = TaskType::QUICK_FIX_APPLY; - PostDeployQuickFixTask(quickFixFiles); + PostDeployQuickFixTask(quickFixFiles, isDebug); } void QuickFixManagerApplyTask::RunRevoke() @@ -385,12 +385,12 @@ void QuickFixManagerApplyTask::HandlePatchDeleted() RemoveSelf(); } -void QuickFixManagerApplyTask::PostDeployQuickFixTask(const std::vector &quickFixFiles) +void QuickFixManagerApplyTask::PostDeployQuickFixTask(const std::vector &quickFixFiles, bool isDebug) { sptr callback = new (std::nothrow) QuickFixManagerStatusCallback( shared_from_this()); std::weak_ptr thisWeakPtr(weak_from_this()); - auto deployTask = [thisWeakPtr, quickFixFiles, callback]() { + auto deployTask = [thisWeakPtr, quickFixFiles, callback, isDebug]() { auto applyTask = thisWeakPtr.lock(); if (applyTask == nullptr) { HILOG_ERROR("PostDeployQuickFixTask, Apply task is nullptr."); @@ -404,7 +404,8 @@ void QuickFixManagerApplyTask::PostDeployQuickFixTask(const std::vectorbundleQfMgr_->DeployQuickFix(quickFixFiles, callback); + HILOG_DEBUG("isDebug is %d", isDebug); + auto ret = applyTask->bundleQfMgr_->DeployQuickFix(quickFixFiles, callback, isDebug); if (ret != 0) { HILOG_ERROR("PostDeployQuickFixTask, Deploy quick fix failed with %{public}d.", ret); applyTask->NotifyApplyStatus(QUICK_FIX_DEPLOY_FAILED); diff --git a/services/quickfixmgr/src/quick_fix_manager_service.cpp b/services/quickfixmgr/src/quick_fix_manager_service.cpp index e248b37d08c..982c5a612d5 100644 --- a/services/quickfixmgr/src/quick_fix_manager_service.cpp +++ b/services/quickfixmgr/src/quick_fix_manager_service.cpp @@ -54,7 +54,7 @@ bool QuickFixManagerService::Init() return true; } -int32_t QuickFixManagerService::ApplyQuickFix(const std::vector &quickFixFiles) +int32_t QuickFixManagerService::ApplyQuickFix(const std::vector &quickFixFiles, bool isDebug) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); HILOG_DEBUG("function called."); @@ -77,10 +77,9 @@ int32_t QuickFixManagerService::ApplyQuickFix(const std::vector &qu HILOG_ERROR("App manager is nullptr."); return QUICK_FIX_CONNECT_FAILED; } - auto applyTask = std::make_shared(bundleQfMgr, appMgr, eventHandler_, this); AddApplyTask(applyTask); - applyTask->Run(quickFixFiles); + applyTask->Run(quickFixFiles, isDebug); HILOG_DEBUG("function finished."); return QUICK_FIX_OK; diff --git a/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h b/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h index d4f0220c614..b459885482a 100644 --- a/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h +++ b/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h @@ -24,7 +24,7 @@ namespace AAFwk { class MockQuickFixManagerStub : public QuickFixManagerStub { public: MOCK_METHOD4(SendRequest, int(uint32_t, MessageParcel&, MessageParcel&, MessageOption&)); - MOCK_METHOD1(ApplyQuickFix, int32_t(const std::vector&)); + MOCK_METHOD2(ApplyQuickFix, int32_t(const std::vector&, bool isDebug)); MOCK_METHOD2(GetApplyedQuickFixInfo, int32_t(const std::string&, ApplicationQuickFixInfo&)); MOCK_METHOD1(RevokeQuickFix, int32_t(const std::string &)); diff --git a/test/unittest/quick_fix/quick_fix_manager_client_test/quick_fix_manager_client_test.cpp b/test/unittest/quick_fix/quick_fix_manager_client_test/quick_fix_manager_client_test.cpp index 694b8e3eae5..02e1f02c533 100644 --- a/test/unittest/quick_fix/quick_fix_manager_client_test/quick_fix_manager_client_test.cpp +++ b/test/unittest/quick_fix/quick_fix_manager_client_test/quick_fix_manager_client_test.cpp @@ -67,10 +67,11 @@ HWTEST_F(QuickFixManagerClientTest, ApplyQuickFix_0100, TestSize.Level1) HILOG_INFO("%{public}s start", __func__); quickFixClient_->quickFixMgr_ = mockQuickFixMgrService_; - EXPECT_CALL(*mockQuickFixMgrService_, ApplyQuickFix(_)).Times(1); + EXPECT_CALL(*mockQuickFixMgrService_, ApplyQuickFix(_, _)).Times(1); std::vector quickfixFiles; - auto ret = quickFixClient_->ApplyQuickFix(quickfixFiles); + bool isDebug = false; + auto ret = quickFixClient_->ApplyQuickFix(quickfixFiles, isDebug); EXPECT_EQ(ret, QUICK_FIX_OK); HILOG_INFO("%{public}s end", __func__); diff --git a/test/unittest/quick_fix/quick_fix_manager_service_ability_test/mock/mock_quick_fix_manager_service.cpp b/test/unittest/quick_fix/quick_fix_manager_service_ability_test/mock/mock_quick_fix_manager_service.cpp index 21125eb3ead..af63c494490 100644 --- a/test/unittest/quick_fix/quick_fix_manager_service_ability_test/mock/mock_quick_fix_manager_service.cpp +++ b/test/unittest/quick_fix/quick_fix_manager_service_ability_test/mock/mock_quick_fix_manager_service.cpp @@ -58,7 +58,7 @@ bool QuickFixManagerService::Init() return g_mockInitState; } -int32_t QuickFixManagerService::ApplyQuickFix(const std::vector& quickFixFiles) +int32_t QuickFixManagerService::ApplyQuickFix(const std::vector& quickFixFiles, bool isDebug) { return 0; } diff --git a/test/unittest/quick_fix/quick_fix_manager_stub_test/quick_fix_manager_stub_test.cpp b/test/unittest/quick_fix/quick_fix_manager_stub_test/quick_fix_manager_stub_test.cpp index fbc14817d9a..6f3ce405b17 100644 --- a/test/unittest/quick_fix/quick_fix_manager_stub_test/quick_fix_manager_stub_test.cpp +++ b/test/unittest/quick_fix/quick_fix_manager_stub_test/quick_fix_manager_stub_test.cpp @@ -74,8 +74,9 @@ HWTEST_F(QuickFixManagerStubTest, ApplyQuickFix_0100, TestSize.Level1) quickFixFiles.push_back("/data/storage/el2/base/entry1.hqf"); quickFixFiles.push_back("/data/storage/el2/base/entry2.hqf"); data.WriteStringVector(quickFixFiles); - - EXPECT_CALL(*mockQuickFixMgrService_, ApplyQuickFix(_)).Times(1); + bool isDebug = false; + data.WriteBool(isDebug); + EXPECT_CALL(*mockQuickFixMgrService_, ApplyQuickFix(_, _)).Times(1); auto result = mockQuickFixMgrService_->OnRemoteRequest( IQuickFixManager::QuickFixMgrCmd::ON_APPLY_QUICK_FIX, data, reply, option); -- Gitee