diff --git a/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp b/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp index 01c16a2390e7e71e399c2ca77ad720c2c12b3760..b53f21b3fb7d51bb1b896996fa5d11eaede654ac 100644 --- a/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp +++ b/services/distributeddataservice/app/src/session_manager/route_head_handler_impl.cpp @@ -105,7 +105,7 @@ DistributedDB::DBStatus RouteHeadHandlerImpl::GetHeadDataSize(uint32_t &headSize ZLOGI("meta data permitted"); return DistributedDB::OK; } - if(!DmAdapter::GetInstance().IsOHOSType(session_.targetDeviceId)) { + if (!DmAdapter::GetInstance().IsOHOSType(session_.targetDeviceId)) { ZLOGD("devicdId:%{public}s is not oh type", Anonymous::Change(session_.targetDeviceId).c_str()); if (appId_.empty()) { @@ -123,14 +123,11 @@ DistributedDB::DBStatus RouteHeadHandlerImpl::GetHeadDataSize(uint32_t &headSize ZLOGI("get peer cap failed"); return DistributedDB::DB_ERROR; } - if (peerCap.version == CapMetaData::INVALID_VERSION) { + if ((appId_ == Bootstrap::GetInstance().GetProcessLabel() && storeId_ != Bootstrap::GetInstance().GetMetaDBName() + && peerCap.version < CapMetaData::UDMF_AND_OBJECT_VERSION) + || peerCap.version == CapMetaData::INVALID_VERSION) { // older versions ignore pack extend head - ZLOGI("ignore older version device"); - return DistributedDB::OK; - } - if (appId_ == Bootstrap::GetInstance().GetProcessLabel() && storeId_ != Bootstrap::GetInstance().GetMetaDBName() - && peerCap.version < CapMetaData::UDMF_AND_OBJECT_VERSION) { - ZLOGI("ignore older version device for udmf or object"); + ZLOGI("ignore older version device, appId:%{public}s, version:%{public}d", appId_.c_str(), peerCap.version); return DistributedDB::OK; } if (!session_.IsValid()) { diff --git a/services/distributeddataservice/app/test/unittest/route_head_handler_impl_test.cpp b/services/distributeddataservice/app/test/unittest/route_head_handler_impl_test.cpp index 905ce16063b3bfd425c22a2561a9984feb674818..1edb109158121b45186029488aea5dc408cdceea 100644 --- a/services/distributeddataservice/app/test/unittest/route_head_handler_impl_test.cpp +++ b/services/distributeddataservice/app/test/unittest/route_head_handler_impl_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -107,11 +107,11 @@ public: static inline std::shared_ptr> metaDataMock = nullptr; static inline std::shared_ptr userDelegateMock = nullptr; private: - void GetEmptyHeadDataLen(const DistributedDB::ExtendInfo& info); - void ParseEmptyHeadDataLen(const DistributedDB::ExtendInfo& info); + bool CheckGetEmptyHeadDataLen(const DistributedDB::ExtendInfo& info); + bool CheckParseEmptyHeadDataLen(const DistributedDB::ExtendInfo& info); }; -void RouteHeadHandlerImplTest::GetEmptyHeadDataLen(const DistributedDB::ExtendInfo& info) +bool RouteHeadHandlerImplTest::CheckGetEmptyHeadDataLen(const DistributedDB::ExtendInfo& info) { DeviceInfo deviceInfo; deviceInfo.osType = OH_OS_TYPE; @@ -119,8 +119,9 @@ void RouteHeadHandlerImplTest::GetEmptyHeadDataLen(const DistributedDB::ExtendIn EXPECT_CALL(*deviceManagerAdapterMock, GetDeviceInfo(_)).WillRepeatedly(Return(deviceInfo)); auto sendHandler = RouteHeadHandlerImpl::Create(info); - ASSERT_NE(sendHandler, nullptr); - + if (sendHandler == nullptr) { + return false; + } CapMetaData capMetaData; capMetaData.version = CapMetaData::UDMF_AND_OBJECT_VERSION; EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) @@ -129,9 +130,10 @@ void RouteHeadHandlerImplTest::GetEmptyHeadDataLen(const DistributedDB::ExtendIn auto status = sendHandler->GetHeadDataSize(headSize); EXPECT_EQ(status, DistributedDB::OK); EXPECT_EQ(headSize, 0); + return true; } -void RouteHeadHandlerImplTest::ParseEmptyHeadDataLen(const DistributedDB::ExtendInfo& info) +bool RouteHeadHandlerImplTest::CheckParseEmptyHeadDataLen(const DistributedDB::ExtendInfo& info) { DeviceInfo deviceInfo; deviceInfo.osType = OH_OS_TYPE; @@ -139,7 +141,9 @@ void RouteHeadHandlerImplTest::ParseEmptyHeadDataLen(const DistributedDB::Extend EXPECT_CALL(*deviceManagerAdapterMock, GetDeviceInfo(_)).WillRepeatedly(Return(deviceInfo)); auto recvHandler = RouteHeadHandlerImpl::Create(info); - ASSERT_NE(recvHandler, nullptr); + if (recvHandler == nullptr) { + return false; + } CapMetaData capMetaData; capMetaData.version = CapMetaData::UDMF_AND_OBJECT_VERSION; @@ -152,6 +156,7 @@ void RouteHeadHandlerImplTest::ParseEmptyHeadDataLen(const DistributedDB::Extend auto status = recvHandler->ParseHeadDataLen(data.get(), routeHeadSize, parseSize, PEER_DEVICE_ID); EXPECT_EQ(status, false); EXPECT_EQ(parseSize, routeHeadSize); + return true; } /** @@ -164,7 +169,7 @@ HWTEST_F(RouteHeadHandlerImplTest, GetEmptyHeadDataLen_Test1, TestSize.Level0) const DistributedDB::ExtendInfo info = { .appId = PROCESSLABEL, .storeId = DRAG, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } /** @@ -177,59 +182,59 @@ HWTEST_F(RouteHeadHandlerImplTest, GetEmptyHeadDataLen_Test2, TestSize.Level0) const DistributedDB::ExtendInfo info = { .appId = PROCESSLABEL, .storeId = META_DB, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } /** - * @tc.name: ParseEmptyHeadDataLen_Test1 + * @tc.name: CheckParseEmptyHeadDataLen_Test1 * @tc.desc: test get udmf store * @tc.type: FUNC */ -HWTEST_F(RouteHeadHandlerImplTest, ParseEmptyHeadDataLen_Test1, TestSize.Level0) +HWTEST_F(RouteHeadHandlerImplTest, CheckParseEmptyHeadDataLen_Test1, TestSize.Level0) { const DistributedDB::ExtendInfo info = { .appId = PROCESSLABEL, .storeId = DRAG, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } /** - * @tc.name: ParseEmptyHeadDataLen_Test2 + * @tc.name: CheckParseEmptyHeadDataLen_Test2 * @tc.desc: test get meta db * @tc.type: FUNC */ -HWTEST_F(RouteHeadHandlerImplTest, ParseEmptyHeadDataLen_Test2, TestSize.Level0) +HWTEST_F(RouteHeadHandlerImplTest, CheckParseEmptyHeadDataLen_Test2, TestSize.Level0) { const DistributedDB::ExtendInfo info = { .appId = PROCESSLABEL, .storeId = META_DB, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } /** - * @tc.name: ParseEmptyHeadDataLen_Test3 + * @tc.name: CheckParseEmptyHeadDataLen_Test3 * @tc.desc: test OTHER_APP_ID * @tc.type: FUNC */ -HWTEST_F(RouteHeadHandlerImplTest, ParseEmptyHeadDataLen_Test3, TestSize.Level0) +HWTEST_F(RouteHeadHandlerImplTest, CheckParseEmptyHeadDataLen_Test3, TestSize.Level0) { const DistributedDB::ExtendInfo info = { .appId = OTHER_APP_ID, .storeId = DRAG, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } /** - * @tc.name: ParseEmptyHeadDataLen_Test4 + * @tc.name: CheckParseEmptyHeadDataLen_Test4 * @tc.desc: test get OTHER_APP_ID and meta db * @tc.type: FUNC */ -HWTEST_F(RouteHeadHandlerImplTest, ParseEmptyHeadDataLen_Test4, TestSize.Level0) +HWTEST_F(RouteHeadHandlerImplTest, CheckParseEmptyHeadDataLen_Test4, TestSize.Level0) { const DistributedDB::ExtendInfo info = { .appId = OTHER_APP_ID, .storeId = META_DB, .userId = USER_ID, .dstTarget = PEER_DEVICE_ID }; - GetEmptyHeadDataLen(info); + EXPECT_TRUE(CheckParseEmptyHeadDataLen(info)); } } // namespace \ No newline at end of file diff --git a/services/distributeddataservice/service/test/BUILD.gn b/services/distributeddataservice/service/test/BUILD.gn index 4e0f2fb2e102b500aa260e5e3d05d11ebbdcc72c..65dce9f0d6bf8e5e6b911fe5195f301f5a2acf9d 100644 --- a/services/distributeddataservice/service/test/BUILD.gn +++ b/services/distributeddataservice/service/test/BUILD.gn @@ -1168,7 +1168,7 @@ ohos_unittest("UdmfServiceImplTest") { "ability_base:base", "ability_base:want", "access_token:libaccesstoken_sdk", - "access_token:libnativetoken", + "access_token:libnativetoken_shared", "access_token:libtoken_setproc", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", @@ -1235,7 +1235,7 @@ ohos_unittest("UdmfServiceImplMockTest") { external_deps = [ "ability_runtime:uri_permission_mgr", "access_token:libaccesstoken_sdk", - "access_token:libnativetoken", + "access_token:libnativetoken_shared", "access_token:libtoken_setproc", "app_file_service:remote_file_share_native", "bundle_framework:appexecfwk_base", @@ -1256,6 +1256,12 @@ ohos_unittest("UdmfServiceImplMockTest") { "safwk:system_ability_fwk", "udmf:udmf_client", ] + sanitize = { + cfi = true + cfi_cross_dso = true + debug = false + blocklist = "${datamgr_service_path}/cfi_blocklist.txt" + } } ohos_unittest("UdmfServiceStubTest") { diff --git a/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp b/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp index c782a4346041198003871373d5f8ec4336e65dfc..9c7e3c2dbb9b35715e3690df2f43a04efef3980d 100644 --- a/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp +++ b/services/distributeddataservice/service/test/udmf_service_impl_mock_test.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2024 Huawei Device Co., Ltd. +* Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,7 +20,6 @@ #include "text.h" #include "accesstoken_kit.h" #include "bootstrap.h" -#include "device_manager_adapter.h" #include "executor_pool.h" #include "ipc_skeleton.h" #include "mock/access_token_mock.h" @@ -31,7 +30,6 @@ using namespace OHOS::DistributedData; using namespace OHOS::Security::AccessToken; using namespace OHOS::UDMF; -using DmAdapter = OHOS::DistributedData::DeviceManagerAdapter; using namespace testing::ext; using namespace testing; @@ -75,33 +73,31 @@ HWTEST_F(UdmfServiceImplMockTest, IsNeedMetaSyncTest001, TestSize.Level0) StoreMetaData meta = StoreMetaData("100", "distributeddata", "drag"); std::vector devices = {"remote_device"}; - EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) - .WillOnce(testing::Return(false)) - .WillOnce(testing::Return(false)); + EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) + .WillOnce(Return(false)); auto isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); EXPECT_EQ(isNeedSync, true); - EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) - .WillOnce(testing::Return(false)) - .WillOnce(testing::Return(true)); + EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) + .WillOnce(Return(false)); isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); EXPECT_EQ(isNeedSync, true); - EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) - .WillOnce(testing::Return(true)) - .WillOnce(testing::Return(false)); + EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) + .WillOnce(Return(true)) + .WillOnce(Return(false)); isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); EXPECT_EQ(isNeedSync, true); - EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) - .WillOnce(testing::Return(true)) - .WillOnce(testing::Return(true)); + EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) + .WillOnce(Return(true)) + .WillOnce(Return(true)); isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); EXPECT_EQ(isNeedSync, false); } /** -* @tc.name: SyncTest001 +* @tc.name: IsNeedMetaSyncTest002 * @tc.desc: IsNeedMetaSync test matrix mask * @tc.type: FUNC */ @@ -115,9 +111,9 @@ HWTEST_F(UdmfServiceImplMockTest, IsNeedMetaSyncTest002, TestSize.Level0) StoreMetaData meta = StoreMetaData("100", "distributeddata", "drag"); std::vector devices = {"remote_device"}; - EXPECT_CALL(*metaDataManagerMock, LoadMeta(testing::_, testing::_, testing::_)) - .WillOnce(testing::Return(false)) - .WillOnce(testing::Return(false)); + EXPECT_CALL(*metaDataManagerMock, LoadMeta(_, _, _)) + .WillOnce(Return(false)) + .WillOnce(Return(false)); auto isNeedSync = udmfServiceImpl.IsNeedMetaSync(meta, devices); EXPECT_EQ(isNeedSync, true); // mock mask @@ -130,10 +126,6 @@ HWTEST_F(UdmfServiceImplMockTest, IsNeedMetaSyncTest002, TestSize.Level0) */ HWTEST_F(UdmfServiceImplMockTest, ResolveAutoLaunchTest001, TestSize.Level0) { - auto store = StoreCache::GetInstance().GetStore("drag"); - auto ret = store->Init(); - EXPECT_EQ(ret, UDMF::E_OK); - DistributedDB::AutoLaunchParam param { .userId = "100", .appId = "distributeddata", @@ -141,7 +133,7 @@ HWTEST_F(UdmfServiceImplMockTest, ResolveAutoLaunchTest001, TestSize.Level0) }; std::string identifier = "identifier"; std::shared_ptr udmfServiceImpl = std::make_shared(); - ret = udmfServiceImpl->ResolveAutoLaunch(identifier, param); + auto ret = udmfServiceImpl->ResolveAutoLaunch(identifier, param); EXPECT_EQ(ret, UDMF::E_NOT_FOUND); } }; // DistributedDataTest