diff --git a/services/distributeddataservice/adapter/communicator/test/unittest/device_manager_adapter_test.cpp b/services/distributeddataservice/adapter/communicator/test/unittest/device_manager_adapter_test.cpp index f08d3153b29341fecb6934cd3cd029a1e53cc6bb..37c7db8edeb9b9e38dfe85e6dbeea67763e9e7d0 100644 --- a/services/distributeddataservice/adapter/communicator/test/unittest/device_manager_adapter_test.cpp +++ b/services/distributeddataservice/adapter/communicator/test/unittest/device_manager_adapter_test.cpp @@ -86,6 +86,24 @@ const std::string DeviceManagerAdapterTest::EMPTY_DEVICE_ID = ""; const uint32_t DeviceManagerAdapterTest::LOCAL_DEVICE_ID_NUM = 3; const uint32_t DeviceManagerAdapterTest::LOCAL_UUID_NUM = 2; +class MockDeviceManagerDelegate : public DeviceManagerDelegate { +public: + static MockDeviceManagerDelegate &GetInstance(); + DeviceInfo GetLocalDevice() override; + static constexpr const char* LOCAL_DEVICE = "ABCDEF0123456789"; +}; + +MockDeviceManagerDelegate MockDeviceManagerDelegate::GetInstance() +{ + static DeviceManagerAdapter dmAdapter; + return dmAdapter; +} + +DeviceInfo MockDeviceManagerDelegate::GetLocalDevice() +{ + return { .uuid = LOCAL_DEVICE, .networkId = LOCAL_DEVICE }; +} + /** * @tc.name: StartWatchDeviceChange * @tc.desc: start watch device change @@ -633,7 +651,7 @@ HWTEST_F(DeviceManagerAdapterTest, RegisterDelegateInstance, TestSize.Level0) { DeviceManagerDelegate::RegisterInstance(&DeviceManagerAdapter::GetInstance()); // Repeated registration - DeviceManagerDelegate::RegisterInstance(&DeviceManagerAdapter::GetInstance()); - EXPECT_NE(nullptr, DeviceManagerDelegate::GetInstance()); + DeviceManagerDelegate::RegisterInstance(&MockDeviceManagerDelegate::GetInstance()); + EXPECT_EQ(DeviceManagerDelegate.GetInstance(), DeviceManagerDelegate::GetInstance()); } } // namespace \ No newline at end of file diff --git a/services/distributeddataservice/framework/directory/directory_manager.cpp b/services/distributeddataservice/framework/directory/directory_manager.cpp index 805ed1b95868d162530737c9af2f17269cf5c015..f5ef0d0dd7b2d4c0bfb80ac9bf4764bc271c3def 100644 --- a/services/distributeddataservice/framework/directory/directory_manager.cpp +++ b/services/distributeddataservice/framework/directory/directory_manager.cpp @@ -128,7 +128,13 @@ void DirectoryManager::Initialize(const std::vector &strategies, const std::sort(strategies_.begin(), strategies_.end(), [](const StrategyImpl &curr, const StrategyImpl &prev) { return curr.version > prev.version; }); - storeTypes_ = storeTypes; + storeTypes_.reserve(storeTypes.size()); + for (const auto &storeType : storeTypes) { + if (storeType.range().empty()) { + continue; + } + storeTypes_.push_back(storeType); + } } std::string DirectoryManager::GetType(const StoreMetaData &metaData) const diff --git a/services/distributeddataservice/service/test/directory_manager_test.cpp b/services/distributeddataservice/service/test/directory_manager_test.cpp index 85e3db8e1efda0db6e3cf20f176fb8f9f61a6944..f11598434530f369c8382fa0e66cb53ce2ea6daa 100644 --- a/services/distributeddataservice/service/test/directory_manager_test.cpp +++ b/services/distributeddataservice/service/test/directory_manager_test.cpp @@ -313,4 +313,39 @@ HWTEST_F(DirectoryManagerTest, GetStoreTypePath, TestSize.Level0) metaData.dataDir = "/data/app/el1/100/database/ohos.test.demo/other"; path = DirectoryManager::GetInstance().GetStorePath(metaData); EXPECT_EQ(path, metaData.dataDir); +} + +/** +* @tc.name: InitializeTest +* @tc.desc: test initialize DirectoryManager +* @tc.type: FUNC +*/ +HWTEST_F(DirectoryManagerTest, InitializeTest, TestSize.Level0) +{ + // Initialize storeTypes_ + std::vector strategies; + DirectoryManager::StoreType normalStoreType = { + .range = {0, 9}, + .type = "kvdb" + }; + DirectoryManager::StoreType invalidStoreType = { + .type = "kvdb" + }; + std::vector storeTypes = {normalStoreType, invalidStoreType}; + DirectoryManager::GetInstance().Initialize(strategies, storeTypes); + + StoreMetaData metaData; + metaData.user = "100"; + metaData.bundleName = "ohos.test.demo"; + metaData.area = 1; + metaData.tokenId = AccessTokenKit::GetHapTokenID(100, "ohos.test.demo", 0); + metaData.appId = "ohos.test.demo_09AEF01D"; + metaData.storeType = StoreMetaData::StoreType::STORE_BUTT; + metaData.dataDir = "/data/app/el1/100/database/ohos.test.demo/other"; + // Traverse storeTypes_ without exception + path = DirectoryManager::GetInstance().GetStorePath(metaData); + EXPECT_EQ(path, metaData.dataDir); + + // Restore normal data + Bootstrap::GetInstance().LoadDirectory(); } \ No newline at end of file