From 4c070d6678423f90fad23565b1f94163891d84a1 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Wed, 27 Aug 2025 18:07:33 +0800 Subject: [PATCH 1/4] fix ut Signed-off-by: hanlin15 --- .../dbinder_service/src/dbinder_service.cpp | 2 +- .../unittest/dbinder_service_unittest.cpp | 33 ++++++++++--------- .../src/dbinder_service_unittest.cpp | 2 +- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/dbinder/dbinder_service/src/dbinder_service.cpp b/dbinder/dbinder_service/src/dbinder_service.cpp index 3104b9ca..cff3b1af 100644 --- a/dbinder/dbinder_service/src/dbinder_service.cpp +++ b/dbinder/dbinder_service/src/dbinder_service.cpp @@ -1390,7 +1390,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..538333e3 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); } @@ -2416,10 +2418,11 @@ HWTEST_F(DBinderServiceUnitTest, InvokerRemoteDBinderWhenWaitRsp001, TestSize.Le EXPECT_NE(stub, nullptr); 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 eb2b7215..31de4a8c 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -693,7 +693,7 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderWhenWaitRsp001, TestSize.Level1 int32_t ret = dBinderService->InvokerRemoteDBinderWhenWaitRsp(stub, seqNumber, pid, uid, threadLockInfo); EXPECT_EQ(ret, MAKE_THREADLOCK_FAILED); - dBinderService->threadLockInfo_[seqNumber] = threadLockInfo; + dBinderService->threadLockInfo_[seqNumber] = std::make_shared(); ret = dBinderService->InvokerRemoteDBinderWhenWaitRsp(stub, seqNumber, pid, uid, threadLockInfo); EXPECT_EQ(ret, DBINDER_OK); } -- Gitee From 013489c9e0233e67e7616cedd91ddd514ca13976 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 09:39:13 +0800 Subject: [PATCH 2/4] fix ut Signed-off-by: hanlin15 --- dbinder/test/unittest/dbinder_service_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbinder/test/unittest/dbinder_service_unittest.cpp b/dbinder/test/unittest/dbinder_service_unittest.cpp index 538333e3..9e7768d8 100755 --- a/dbinder/test/unittest/dbinder_service_unittest.cpp +++ b/dbinder/test/unittest/dbinder_service_unittest.cpp @@ -2422,7 +2422,7 @@ HWTEST_F(DBinderServiceUnitTest, InvokerRemoteDBinderWhenWaitRsp001, TestSize.Le dBinderService->threadLockInfo_[seqNumber] = threadLockInfo; ret = dBinderService->InvokerRemoteDBinderWhenWaitRsp(stub, seqNumber, pid, uid, threadLockInfo); EXPECT_EQ(ret, DBINDER_OK); - dBinderService->threadLockInfo_.clear(); + dBinderService->threadLockInfo_.clear(); } /** -- Gitee From b5a903a0fa79ac2186e5b26d5360fcb851b9d75d Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 14:39:58 +0800 Subject: [PATCH 3/4] fix ut Signed-off-by: hanlin15 --- .../unittest/common/databus_socket_listener_unittest.cpp | 1 - .../dbinder_service/src/dbinder_service_unittest.cpp | 7 ------- 2 files changed, 8 deletions(-) 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 822d1bb9..a67f86c4 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); 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 31de4a8c..ac5b1728 100644 --- a/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp +++ b/test/unittest/dbinder/dbinder_service/src/dbinder_service_unittest.cpp @@ -434,16 +434,9 @@ HWTEST_F(DBinderServiceTest, InvokerRemoteDBinderTest003, TestSize.Level1) DBinderService dBinderService; sptr dBinderServiceStub = new DBinderServiceStub( RANDOM_SERVICENAME, RANDOM_DEVICEID, BINDER_OBJECT); - NiceMock mock; std::shared_ptr threadLockInfo = std::make_shared(); dBinderService.remoteListener_ = std::make_shared(); dBinderService.AttachThreadLockInfo(PID, RANDOM_DEVICEID, threadLockInfo); - EXPECT_CALL(mock, SendDataToRemote).WillOnce(testing::Return(true)); - std::shared_ptr entry = std::make_shared(); - ASSERT_NE(entry, nullptr); - EXPECT_CALL(mock, CreateMessage(_, _, _, _)).WillOnce(testing::Return(entry)); - EXPECT_CALL(mock, GetLocalNodeDeviceId).WillOnce(testing::Return(SOFTBUS_CLIENT_SUCCESS)); - int32_t result = dBinderService.InvokerRemoteDBinder(dBinderServiceStub, PID, PID, PID); EXPECT_EQ(result, DBinderErrorCode::MAKE_THREADLOCK_FAILED); } -- Gitee From ef057f6afa4dc41dc7757b82486e52ec4b01e023 Mon Sep 17 00:00:00 2001 From: hanlin15 Date: Thu, 28 Aug 2025 17:16:40 +0800 Subject: [PATCH 4/4] fix ut Signed-off-by: hanlin15 --- .../core/framework/source/ipc_process_skeleton.cpp | 11 +++++++++-- 1 file changed, 9 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 fe127021..1998951d 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()); -- Gitee