From c93e3c791c0297b51f849a02c6c2a3facf8bdee2 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Wed, 27 Aug 2025 17:28:30 +0800 Subject: [PATCH 1/6] fix ut Signed-off-by: hanlin15 --- .../dbinder_service/src/dbinder_service.cpp | 2 +- .../unittest/dbinder_service_unittest.cpp | 32 +++++++++++-------- .../src/dbinder_service_unittest.cpp | 11 ++++++- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/dbinder/dbinder_service/src/dbinder_service.cpp b/dbinder/dbinder_service/src/dbinder_service.cpp index d5488cbd..6c09743f 100644 --- a/dbinder/dbinder_service/src/dbinder_service.cpp +++ b/dbinder/dbinder_service/src/dbinder_service.cpp @@ -1394,7 +1394,7 @@ int32_t DBinderService::NoticeServiceDieInner(const std::u16string &serviceName, DBINDER_LOGI(LOG_LABEL, "service:%{public}s deviceId:%{public}s", Str16ToStr8(serviceName).c_str(), DBinderService::ConvertToSecureDeviceID(deviceID).c_str()); - return NoticeCallbackProxy(serviceName, deviceID); + return NoticeCallbackProxy(serviceName, deviceID) ? ERR_NONE : DBINDER_SERVICE_NOTICE_DIE_ERR; } int32_t DBinderService::NoticeServiceDie(const std::u16string &serviceName, const std::string &deviceID) diff --git a/dbinder/test/unittest/dbinder_service_unittest.cpp b/dbinder/test/unittest/dbinder_service_unittest.cpp index 9f2e5331..04d9df9c 100755 --- a/dbinder/test/unittest/dbinder_service_unittest.cpp +++ b/dbinder/test/unittest/dbinder_service_unittest.cpp @@ -1056,7 +1056,7 @@ HWTEST_F(DBinderServiceUnitTest, IsSameLoadSaItem001, TestSize.Level1) int32_t systemAbilityId = TEST_SYSTEM_ABILITY_ID; std::shared_ptr loadSaItem = std::make_shared(); EXPECT_TRUE(loadSaItem != nullptr); - loadSaItem->stubIndex = TEST_SYSTEM_ABILITY_ID; + loadSaItem->binderObject = TEST_SYSTEM_ABILITY_ID; strcpy_s(loadSaItem->deviceIdInfo.fromDeviceId, DEVICEID_LENGTH, "aaaaaaaaaaaaaa"); bool res = dBinderService->IsSameLoadSaItem(srcNetworkId, systemAbilityId, loadSaItem); EXPECT_EQ(res, true); @@ -1346,8 +1346,6 @@ HWTEST_F(DBinderServiceUnitTest, NoticeDeviceDieTest003, TestSize.Level1) sptr dBinderService = DBinderService::GetInstance(); EXPECT_TRUE(dBinderService != nullptr); std::string deviceID("123456"); - dBinderService->remoteListener_ = std::make_shared(); - EXPECT_TRUE(dBinderService->remoteListener_ != nullptr); EXPECT_EQ(dBinderService->NoticeDeviceDie(deviceID), DBINDER_SERVICE_NOTICE_DIE_ERR); } @@ -1408,7 +1406,13 @@ HWTEST_F(DBinderServiceUnitTest, NoticeServiceDieInnerTest003, TestSize.Level1) dBinderService->StartRemoteListener(); std::u16string serviceName(u"testServer"); std::string deviceID("123456"); - EXPECT_EQ(dBinderService->NoticeServiceDieInner(serviceName, deviceID), ERR_NONE); + binder_uintptr_t binderObject = TEST_BINDER_OBJECT_PTR; + sptr dBinderServiceStub = new (std::nothrow) DBinderServiceStub(serviceName, deviceID, + binderObject); + EXPECT_TRUE(dBinderServiceStub != nullptr); + dBinderService->DBinderStubRegisted_.push_back(dBinderServiceStub); + EXPECT_EQ(dBinderService->NoticeServiceDieInner(serviceName, deviceID), DBINDER_SERVICE_NOTICE_DIE_ERR); + dBinderService->DBinderStubRegisted_.clear(); } /** @@ -1453,7 +1457,7 @@ HWTEST_F(DBinderServiceUnitTest, NoticeCallbackProxyTest001, TestSize.Level1) binderObject); EXPECT_TRUE(dBinderServiceStub != nullptr); dBinderService->AttachCallbackProxy(object, dBinderServiceStub.GetRefPtr()); - EXPECT_EQ(dBinderService->NoticeCallbackProxy(serviceName, deviceID), false); + EXPECT_EQ(dBinderService->NoticeCallbackProxy(serviceName, deviceID), true); } /** @@ -1932,15 +1936,15 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest003, TestSize.Level1) std::shared_ptr message = std::make_shared(); EXPECT_TRUE(message != nullptr); (void)memset_s(message.get(), sizeof(DHandleEntryTxRx), 0, sizeof(DHandleEntryTxRx)); - message->stubIndex = systemAbilityId; + message->binderObject = systemAbilityId; message->deviceIdInfo.fromDeviceId[0] = 't'; message->transType = IRemoteObject::DATABUS_TYPE + 1; dBinderService->loadSaReply_.push_back(message); sptr remoteObject1 = new (std::nothrow) IPCObjectProxy(1); EXPECT_TRUE(remoteObject1 != nullptr); - binder_uintptr_t binderObjectPtr = reinterpret_cast(remoteObject1.GetRefPtr()); - bool ret = dBinderService->AttachProxyObject(remoteObject1, binderObjectPtr); + dBinderService->proxyObject_.clear(); + bool ret = dBinderService->AttachProxyObject(remoteObject1, message->binderObject); EXPECT_TRUE(ret); DBinderSoftbusClient::GetInstance().sendBytesFunc_ = MockDBinderRemoteListener::SendBytes; @@ -1949,7 +1953,6 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest003, TestSize.Level1) int32_t socket = 1001; DBinderRemoteListener::ServerOnBind(socket, info); - message->binderObject = binderObjectPtr; /* verify running into the transType invalid branch */ std::shared_ptr mockListener = std::make_shared(); dBinderService->remoteListener_ = std::static_pointer_cast(mockListener); @@ -1958,6 +1961,7 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest003, TestSize.Level1) EXPECT_EQ(MockDBinderRemoteListener::GetInstance().GetResult(), SA_INVOKE_FAILED); dBinderService->remoteListener_ = nullptr; DBinderSoftbusClient::GetInstance().sendBytesFunc_ = nullptr; + dBinderService->DetachProxyObject(message->binderObject); } /** @@ -1975,7 +1979,7 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest004, TestSize.Level1) std::shared_ptr message = std::make_shared(); EXPECT_TRUE(message != nullptr); (void)memset_s(message.get(), sizeof(DHandleEntryTxRx), 0, sizeof(DHandleEntryTxRx)); - message->stubIndex = systemAbilityId; + message->binderObject = systemAbilityId; message->deviceIdInfo.fromDeviceId[0] = 't'; message->transType = IRemoteObject::DATABUS_TYPE; dBinderService->loadSaReply_.push_back(message); @@ -1983,8 +1987,7 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest004, TestSize.Level1) /* verify running into the OnRemoteInvokerDataBusMessage fail branch */ sptr remoteObject1 = sptr::MakeSptr(); EXPECT_TRUE(remoteObject1 != nullptr); - binder_uintptr_t binderObjectPtr = reinterpret_cast(remoteObject1.GetRefPtr()); - bool ret = dBinderService->AttachProxyObject(remoteObject1, binderObjectPtr); + bool ret = dBinderService->AttachProxyObject(remoteObject1, message->binderObject); EXPECT_TRUE(ret); DBinderSoftbusClient::GetInstance().sendBytesFunc_ = MockDBinderRemoteListener::SendBytes; @@ -1993,7 +1996,6 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest004, TestSize.Level1) int32_t socket = 1001; DBinderRemoteListener::ServerOnBind(socket, info); - message->binderObject = binderObjectPtr; std::shared_ptr mockListener = std::make_shared(); dBinderService->remoteListener_ = std::static_pointer_cast(mockListener); EXPECT_TRUE(dBinderService->remoteListener_ != nullptr); @@ -2002,7 +2004,7 @@ HWTEST_F(DBinderServiceUnitTest, PopLoadSaItemTest004, TestSize.Level1) EXPECT_EQ(MockDBinderRemoteListener::GetInstance().GetResult(), SESSION_NAME_NOT_FOUND); dBinderService->remoteListener_ = nullptr; DBinderSoftbusClient::GetInstance().sendBytesFunc_ = nullptr; - ret = dBinderService->DetachProxyObject(binderObjectPtr); + ret = dBinderService->DetachProxyObject(message->binderObject); EXPECT_TRUE(ret); } @@ -2417,9 +2419,11 @@ HWTEST_F(DBinderServiceUnitTest, InvokerRemoteDBinderWhenWaitRsp001, TestSize.Le int32_t ret = dBinderService->InvokerRemoteDBinderWhenWaitRsp(stub, seqNumber, pid, uid, threadLockInfo); EXPECT_EQ(ret, MAKE_THREADLOCK_FAILED); + threadLockInfo = std::make_shared(); dBinderService->threadLockInfo_[seqNumber] = threadLockInfo; ret = dBinderService->InvokerRemoteDBinderWhenWaitRsp(stub, seqNumber, pid, uid, threadLockInfo); EXPECT_EQ(ret, DBINDER_OK); + dBinderService->threadLockInfo_.clear(); } /** diff --git a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp index 17aa0f81..7cf0fd50 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -51,6 +51,7 @@ public: virtual bool StartListener() = 0; virtual std::shared_ptr CreateMessage(const sptr &stub, uint32_t seqNumber, uint32_t pid, uint32_t uid) = 0; + virtual std::shared_ptr GetRemoteListener() = 0; virtual bool SendDataToRemote(const std::string &networkId, const struct DHandleEntryTxRx *msg) = 0; virtual int32_t GetLocalNodeDeviceId(const std::string &pkgName, std::string &devId) = 0; virtual std::string GetSessionName() = 0; @@ -68,6 +69,7 @@ public: MOCK_METHOD0(StartListener, bool()); MOCK_METHOD4(CreateMessage, std::shared_ptr(const sptr &stub, uint32_t seqNumber, uint32_t pid, uint32_t uid)); + MOCK_METHOD0(GetRemoteListener, std::shared_ptr()); MOCK_METHOD2(SendDataToRemote, bool(const std::string &networkId, const struct DHandleEntryTxRx *msg)); MOCK_METHOD2(GetLocalNodeDeviceId, int32_t(const std::string &pkgName, std::string &devId)); MOCK_METHOD0(GetSessionName, std::string()); @@ -113,6 +115,14 @@ extern "C" { return GetDBinderServiceInterfaceMock()->CreateMessage(stub, seqNumber, pid, uid); } + std::shared_ptr DBinderService::GetRemoteListener() + { + if (g_interface == nullptr) { + return nullptr; + } + return GetDBinderServiceInterfaceMock()->GetRemoteListener(); + } + bool DBinderRemoteListener::SendDataToRemote(const std::string &networkId, const struct DHandleEntryTxRx *msg) { if (g_interface == nullptr) { @@ -455,7 +465,6 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); - int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee From 890823661e373eab160d672c777c8b88f1b7e99d Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Wed, 27 Aug 2025 09:57:00 +0000 Subject: [PATCH 2/6] update test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp. Signed-off-by: hanlin15 --- .../dbinder_service/src/dbinder_service_unittest.cpp | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp index 7cf0fd50..973ce547 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -51,7 +51,6 @@ public: virtual bool StartListener() = 0; virtual std::shared_ptr CreateMessage(const sptr &stub, uint32_t seqNumber, uint32_t pid, uint32_t uid) = 0; - virtual std::shared_ptr GetRemoteListener() = 0; virtual bool SendDataToRemote(const std::string &networkId, const struct DHandleEntryTxRx *msg) = 0; virtual int32_t GetLocalNodeDeviceId(const std::string &pkgName, std::string &devId) = 0; virtual std::string GetSessionName() = 0; @@ -69,7 +68,6 @@ public: MOCK_METHOD0(StartListener, bool()); MOCK_METHOD4(CreateMessage, std::shared_ptr(const sptr &stub, uint32_t seqNumber, uint32_t pid, uint32_t uid)); - MOCK_METHOD0(GetRemoteListener, std::shared_ptr()); MOCK_METHOD2(SendDataToRemote, bool(const std::string &networkId, const struct DHandleEntryTxRx *msg)); MOCK_METHOD2(GetLocalNodeDeviceId, int32_t(const std::string &pkgName, std::string &devId)); MOCK_METHOD0(GetSessionName, std::string()); @@ -115,14 +113,6 @@ extern "C" { return GetDBinderServiceInterfaceMock()->CreateMessage(stub, seqNumber, pid, uid); } - std::shared_ptr DBinderService::GetRemoteListener() - { - if (g_interface == nullptr) { - return nullptr; - } - return GetDBinderServiceInterfaceMock()->GetRemoteListener(); - } - bool DBinderRemoteListener::SendDataToRemote(const std::string &networkId, const struct DHandleEntryTxRx *msg) { if (g_interface == nullptr) { @@ -465,6 +455,7 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); + int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee From 141c8c3f64e27c3419a2d3989dcebad2041b23f2 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Wed, 27 Aug 2025 09:58:43 +0000 Subject: [PATCH 3/6] update test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp. Signed-off-by: hanlin15 --- .../dbinder/dbinder_service/src/dbinder_service_unittest.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp index 973ce547..5c14f886 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -454,8 +454,7 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) RANDOM_SERVICENAME, RANDOM_DEVICEID, BINDER_OBJECT); std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); - dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); - + dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee From 0b6fc6b83a4806acaa2b8683d4a9f174804bf2e6 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 09:56:38 +0800 Subject: [PATCH 4/6] fix ut Signed-off-by: hanlin15 --- .../dbinder/dbinder_service/src/dbinder_service_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp index 5c14f886..97a7cae0 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -454,7 +454,7 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) RANDOM_SERVICENAME, RANDOM_DEVICEID, BINDER_OBJECT); std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); - dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); + dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee From 955502c538b9a00c0d1e3ffdc0111d8b1e41b43d Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 14:32:34 +0800 Subject: [PATCH 5/6] fix ut Signed-off-by: hanlin15 --- .../test/unittest/common/databus_socket_listener_unittest.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/ipc/native/test/unittest/common/databus_socket_listener_unittest.cpp b/ipc/native/test/unittest/common/databus_socket_listener_unittest.cpp index 55f93705..4d060d7f 100644 --- a/ipc/native/test/unittest/common/databus_socket_listener_unittest.cpp +++ b/ipc/native/test/unittest/common/databus_socket_listener_unittest.cpp @@ -509,7 +509,6 @@ HWTEST_F(DatabusSocketListenerTest, RemoveSessionNameTest002, TestSize.Level1) NiceMock mock; EXPECT_CALL(mock, GetCurrent).WillOnce(Return(current)); - EXPECT_CALL(mock, GetSAMgrObject).WillOnce(Return(nullptr)); listener.RemoveSessionName(); EXPECT_NE(current, nullptr); -- Gitee From d814b98f6fd12ebb036baba8246dc5233ff1694f Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 16:20:45 +0800 Subject: [PATCH 6/6] fix ut Signed-off-by: hanlin15 --- .../core/framework/source/ipc_process_skeleton.cpp | 11 +++++++++-- .../dbinder_service/src/dbinder_service_unittest.cpp | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ipc/native/src/core/framework/source/ipc_process_skeleton.cpp b/ipc/native/src/core/framework/source/ipc_process_skeleton.cpp index 39441830..d82d61c6 100644 --- a/ipc/native/src/core/framework/source/ipc_process_skeleton.cpp +++ b/ipc/native/src/core/framework/source/ipc_process_skeleton.cpp @@ -421,6 +421,9 @@ void IPCProcessSkeleton::BlockUntilThreadAvailable() if (numExecuting_ > maxIPCThreadNum) { ZLOGE(LOG_LABEL, "numExecuting_++ is %{public}d", numExecuting_); } + if (threadPool_ == nullptr) { + return; + } while (numExecuting_ >= threadPool_->GetMaxThreadNum()) { cv_.wait(lock); } @@ -433,7 +436,9 @@ void IPCProcessSkeleton::LockForNumExecuting() CHECK_INSTANCE_EXIT(exitFlag_); std::lock_guard lockGuard(mutex_); numExecuting_++; - + if (threadPool_ == nullptr) { + return; + } if (numExecuting_ == threadPool_->GetMaxThreadNum()) { uint64_t curTime = static_cast(std::chrono::duration_cast( std::chrono::steady_clock::now().time_since_epoch()).count()); @@ -447,7 +452,9 @@ void IPCProcessSkeleton::UnlockForNumExecuting() { CHECK_INSTANCE_EXIT(exitFlag_); std::lock_guard lockGuard(mutex_); - + if (threadPool_ == nullptr) { + return; + } if (numExecuting_ == threadPool_->GetMaxThreadNum()) { uint64_t curTime = static_cast(std::chrono::duration_cast( std::chrono::steady_clock::now().time_since_epoch()).count()); diff --git a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp index 97a7cae0..17aa0f81 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -455,6 +455,7 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); + int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee