From db93360efaf0ec283a701f76d2a427d869bb2a10 Mon Sep 17 00:00:00 2001 From: yangliu Date: Tue, 19 Aug 2025 20:04:18 +0800 Subject: [PATCH 1/8] update Signed-off-by: yangliu --- .../service/kvdb/kvdb_service_impl.cpp | 14 +++++++++++--- .../service/kvdb/kvdb_service_impl.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index c497a1288..877face48 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -750,11 +750,19 @@ Status KVDBServiceImpl::BeforeCreate(const AppId &appId, const StoreId &storeId, return dbStatus == DBStatus::OK ? SUCCESS : DB_ERROR; } -void KVDBServiceImpl::SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password) +void KVDBServiceImpl::UpdateSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password) { + SecretKeyMetaData oldSecretKey; + MetaDataManager::GetInstance().LoadMeta(metaData.GetSecretKey(), oldSecretKey, true); + CryptoManager::CryptoParams oldDecryptParams = { .area = oldSecretKey.area, .userId = metaData.user, + .nonce = oldSecretKey.nonce }; + auto decryptPwd = CryptoManager::GetInstance().Decrypt(oldSecretKey.skey, oldDecryptParams); + std::string oldPwd = std::string(decryptPwd.begin(), decryptPwd.end()); + std::string pwd = std::string(password.begin(), password.end()); + CryptoManager::CryptoParams encryptParams = { .area = metaData.area, .userId = metaData.user }; auto encryptKey = CryptoManager::GetInstance().Encrypt(password, encryptParams); - if (!encryptKey.empty() && !encryptParams.nonce.empty()) { + if (!encryptKey.empty() && !encryptParams.nonce.empty() && oldPwd != pwd) { SecretKeyMetaData secretKey; secretKey.storeType = metaData.storeType; secretKey.area = metaData.area; @@ -821,7 +829,7 @@ Status KVDBServiceImpl::AfterCreate( SaveLocalMetaData(options, metaData); if (metaData.isEncrypt && !password.empty()) { - SaveSecretKeyMeta(metaData, password); + UpdateSecretKeyMeta(metaData, password); } ZLOGI("appId:%{public}s storeId:%{public}s instanceId:%{public}d type:%{public}d dir:%{public}s " "isCreated:%{public}d dataType:%{public}d", appId.appId.c_str(), Anonymous::Change(storeId.storeId).c_str(), diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index dd185700d..3cbc13fad 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -165,7 +165,7 @@ private: const StoreMetaData &storeMeta); std::string GenerateKey(const std::string &userId, const std::string &storeId) const; std::vector LoadSecretKey(const StoreMetaData &metaData, CryptoManager::SecretKeyType secretKeyType); - void SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); + void UpdateSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); static Factory factory_; ConcurrentMap syncAgents_; std::shared_ptr executors_; -- Gitee From 4ab02d551bdce6c75a2d49dad15b55e730852ac8 Mon Sep 17 00:00:00 2001 From: yangliu Date: Wed, 20 Aug 2025 16:16:11 +0800 Subject: [PATCH 2/8] update Signed-off-by: yangliu --- .../distributeddataservice/service/kvdb/kvdb_service_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index 877face48..a584602f9 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -756,7 +756,7 @@ void KVDBServiceImpl::UpdateSecretKeyMeta(const StoreMetaData &metaData, const s MetaDataManager::GetInstance().LoadMeta(metaData.GetSecretKey(), oldSecretKey, true); CryptoManager::CryptoParams oldDecryptParams = { .area = oldSecretKey.area, .userId = metaData.user, .nonce = oldSecretKey.nonce }; - auto decryptPwd = CryptoManager::GetInstance().Decrypt(oldSecretKey.skey, oldDecryptParams); + auto decryptPwd = CryptoManager::GetInstance().Decrypt(oldSecretKey.sKey, oldDecryptParams); std::string oldPwd = std::string(decryptPwd.begin(), decryptPwd.end()); std::string pwd = std::string(password.begin(), password.end()); -- Gitee From d39838e8556418ffec74098d7cd5e97179c1f016 Mon Sep 17 00:00:00 2001 From: yangliu Date: Sat, 30 Aug 2025 17:43:39 +0800 Subject: [PATCH 3/8] update Signed-off-by: yangliu --- .../include/metadata/store_meta_data_local.h | 2 + .../metadata/store_meta_data_local.cpp | 10 +++++ .../service/kvdb/kvdb_service_impl.cpp | 42 ++++++++++++------- .../service/kvdb/kvdb_service_impl.h | 3 +- 4 files changed, 40 insertions(+), 17 deletions(-) diff --git a/services/distributeddataservice/framework/include/metadata/store_meta_data_local.h b/services/distributeddataservice/framework/include/metadata/store_meta_data_local.h index 717b495f9..01039d6fd 100755 --- a/services/distributeddataservice/framework/include/metadata/store_meta_data_local.h +++ b/services/distributeddataservice/framework/include/metadata/store_meta_data_local.h @@ -27,6 +27,8 @@ struct API_EXPORT PolicyValue final : public Serializable { uint32_t valueUint = 0; API_EXPORT PolicyValue() = default; API_EXPORT ~PolicyValue() = default; + API_EXPORT bool operator==(const PolicyValue &policyValue) const; + API_EXPORT bool operator!=(const PolicyValue &policyValue) const; API_EXPORT bool IsValueEffect() const; API_EXPORT bool Marshal(json &node) const override; API_EXPORT bool Unmarshal(const json &node) override; diff --git a/services/distributeddataservice/framework/metadata/store_meta_data_local.cpp b/services/distributeddataservice/framework/metadata/store_meta_data_local.cpp index 19aea85c5..910e27c5b 100755 --- a/services/distributeddataservice/framework/metadata/store_meta_data_local.cpp +++ b/services/distributeddataservice/framework/metadata/store_meta_data_local.cpp @@ -38,6 +38,16 @@ bool PolicyValue::IsValueEffect() const return (index > 0); } +bool PolicyValue::operator==(const PolicyValue &policyValue) const +{ + return type == policyValue.type && index == policyValue.index && valueUint == policyValue.valueUint; +} + +bool PolicyValue::operator!=(const PolicyValue &policyValue) const +{ + return !(*this == policyValue); +} + bool StoreMetaDataLocal::HasPolicy(uint32_t type) { for (const auto &policy : policies) { diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index a584602f9..d55b0ef1a 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -750,19 +750,11 @@ Status KVDBServiceImpl::BeforeCreate(const AppId &appId, const StoreId &storeId, return dbStatus == DBStatus::OK ? SUCCESS : DB_ERROR; } -void KVDBServiceImpl::UpdateSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password) +void KVDBServiceImpl::SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password) { - SecretKeyMetaData oldSecretKey; - MetaDataManager::GetInstance().LoadMeta(metaData.GetSecretKey(), oldSecretKey, true); - CryptoManager::CryptoParams oldDecryptParams = { .area = oldSecretKey.area, .userId = metaData.user, - .nonce = oldSecretKey.nonce }; - auto decryptPwd = CryptoManager::GetInstance().Decrypt(oldSecretKey.sKey, oldDecryptParams); - std::string oldPwd = std::string(decryptPwd.begin(), decryptPwd.end()); - std::string pwd = std::string(password.begin(), password.end()); - CryptoManager::CryptoParams encryptParams = { .area = metaData.area, .userId = metaData.user }; auto encryptKey = CryptoManager::GetInstance().Encrypt(password, encryptParams); - if (!encryptKey.empty() && !encryptParams.nonce.empty() && oldPwd != pwd) { + if (!encryptKey.empty() && !encryptParams.nonce.empty()) { SecretKeyMetaData secretKey; secretKey.storeType = metaData.storeType; secretKey.area = metaData.area; @@ -822,14 +814,11 @@ Status KVDBServiceImpl::AfterCreate( oldMeta = metaData; MetaDataManager::GetInstance().SaveMeta(oldMeta.GetKey(), oldMeta, true); } - AppIDMetaData appIdMeta; - appIdMeta.bundleName = metaData.bundleName; - appIdMeta.appId = metaData.appId; - MetaDataManager::GetInstance().SaveMeta(appIdMeta.GetKey(), appIdMeta, true); + SaveAppIdMeta(metaData); SaveLocalMetaData(options, metaData); if (metaData.isEncrypt && !password.empty()) { - UpdateSecretKeyMeta(metaData, password); + SaveSecretKeyMeta(metaData, password); } ZLOGI("appId:%{public}s storeId:%{public}s instanceId:%{public}d type:%{public}d dir:%{public}s " "isCreated:%{public}d dataType:%{public}d", appId.appId.c_str(), Anonymous::Change(storeId.storeId).c_str(), @@ -838,6 +827,21 @@ Status KVDBServiceImpl::AfterCreate( return status; } +void KVDBServiceImpl::SaveAppIDMeta(const StoreMetaData &metaData) +{ + AppIDMetaData appIdMeta; + AppIDMetaData oldAppIdMeta; + appIdMeta.bundleName = metaData.bundleName; + appIdMeta.appId = metaData.appId; + if (MetaDataManager::GetInstance().LoadMeta(appIdMeta.GetKey(), oldAppIdMeta, true) && appIdMeta == oldAppIdMeta) { + return; + } + if (!MetaDataManager::GetInstance().SaveMeta(appIdMeta.GetKey(), appIdMeta, true)) { + ZLOGE("save app meta failed, bundleName: %{public}s", appIdMeta.bundleName.c_str()); + } + return; +} + int32_t KVDBServiceImpl::OnAppExit(pid_t uid, pid_t pid, uint32_t tokenId, const std::string &appId) { ZLOGI("pid:%{public}d uid:%{public}d appId:%{public}s", pid, uid, appId.c_str()); @@ -981,7 +985,13 @@ void KVDBServiceImpl::SaveLocalMetaData(const Options &options, const StoreMetaD } localMetaData.policies.emplace_back(value); } - MetaDataManager::GetInstance().SaveMeta(metaData.GetKeyLocal(), localMetaData, true); + StoreMetaDataLocal oldLocalMetaData; + if (MetaDataManager::GetInstance().LoadMeta(metaData.GetKeyLocal(), oldLocalMetaData, true) + && oldLocalMetaData == localMetaData && oldLocalMetaData.schema && localMetaData.schema + && oldLocalMetaData.policies == localMetaData.policies) { + return; + } + MetaDataManager::GetInstance().SaveMeta(metaData.GetKeyLocal(), localMetaData, true) } StoreMetaData KVDBServiceImpl::LoadStoreMetaData(const AppId &appId, const StoreId &storeId, int32_t subUser) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index 3cbc13fad..2c0527db9 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -165,7 +165,8 @@ private: const StoreMetaData &storeMeta); std::string GenerateKey(const std::string &userId, const std::string &storeId) const; std::vector LoadSecretKey(const StoreMetaData &metaData, CryptoManager::SecretKeyType secretKeyType); - void UpdateSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); + void SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); + void SaveAppIdMeta(const StoreMetaData &metaData); static Factory factory_; ConcurrentMap syncAgents_; std::shared_ptr executors_; -- Gitee From 00dc34bd68cdb6053cc9594dc8b13d9d5eaf639d Mon Sep 17 00:00:00 2001 From: yangliu Date: Sat, 30 Aug 2025 18:11:35 +0800 Subject: [PATCH 4/8] update Signed-off-by: yangliu --- .../service/kvdb/kvdb_service_impl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index d55b0ef1a..4cb0a4eaa 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -827,7 +827,7 @@ Status KVDBServiceImpl::AfterCreate( return status; } -void KVDBServiceImpl::SaveAppIDMeta(const StoreMetaData &metaData) +void KVDBServiceImpl::SaveAppIdMeta(const StoreMetaData &metaData) { AppIDMetaData appIdMeta; AppIDMetaData oldAppIdMeta; @@ -987,11 +987,11 @@ void KVDBServiceImpl::SaveLocalMetaData(const Options &options, const StoreMetaD } StoreMetaDataLocal oldLocalMetaData; if (MetaDataManager::GetInstance().LoadMeta(metaData.GetKeyLocal(), oldLocalMetaData, true) - && oldLocalMetaData == localMetaData && oldLocalMetaData.schema && localMetaData.schema + && oldLocalMetaData == localMetaData && oldLocalMetaData.schema == localMetaData.schema && oldLocalMetaData.policies == localMetaData.policies) { return; } - MetaDataManager::GetInstance().SaveMeta(metaData.GetKeyLocal(), localMetaData, true) + MetaDataManager::GetInstance().SaveMeta(metaData.GetKeyLocal(), localMetaData, true); } StoreMetaData KVDBServiceImpl::LoadStoreMetaData(const AppId &appId, const StoreId &storeId, int32_t subUser) -- Gitee From e8cacbdc578b6e5ce9a2f4077921dc51816449ca Mon Sep 17 00:00:00 2001 From: yangliu Date: Tue, 2 Sep 2025 20:13:42 +0800 Subject: [PATCH 5/8] update Signed-off-by: yangliu --- .../service/kvdb/kvdb_service_impl.cpp | 24 +++++++-------- .../service/kvdb/kvdb_service_impl.h | 2 +- .../service/test/meta_data_test.cpp | 29 +++++++++++++++++++ 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index 4cb0a4eaa..d787d29f8 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -794,7 +794,7 @@ Status KVDBServiceImpl::AfterCreate( StoreMetaMapping oldMeta(metaData); auto isCreated = MetaDataManager::GetInstance().LoadMeta(oldMeta.GetKey(), oldMeta, true); Status status = SUCCESS; - if (isCreated && oldMeta != metaData) { + if (isCreated && (oldMeta != metaData || oldMeta.schema != metaData.schema)) { auto dbStatus = Upgrade::GetInstance().UpdateStore(oldMeta, metaData, password); ZLOGI("update status:%{public}d appId:%{public}s storeId:%{public}s inst:%{public}d " "type:%{public}d->%{public}d dir:%{public}s dataType:%{public}d->%{public}d", @@ -814,9 +814,12 @@ Status KVDBServiceImpl::AfterCreate( oldMeta = metaData; MetaDataManager::GetInstance().SaveMeta(oldMeta.GetKey(), oldMeta, true); } - SaveAppIdMeta(metaData); - SaveLocalMetaData(options, metaData); + AppIDMetaData appIdMeta; + appIdMeta.bundleName = metaData.bundleName; + appIdMeta.appId = metaData.appId; + SaveAppIdMetaData(appIdMeta); + SaveLocalMetaData(options, metaData); if (metaData.isEncrypt && !password.empty()) { SaveSecretKeyMeta(metaData, password); } @@ -827,19 +830,14 @@ Status KVDBServiceImpl::AfterCreate( return status; } -void KVDBServiceImpl::SaveAppIdMeta(const StoreMetaData &metaData) +void KVDBServiceImpl::SaveAppIdMetaData(const AppIDMetaData &appIdMeta) { - AppIDMetaData appIdMeta; AppIDMetaData oldAppIdMeta; - appIdMeta.bundleName = metaData.bundleName; - appIdMeta.appId = metaData.appId; if (MetaDataManager::GetInstance().LoadMeta(appIdMeta.GetKey(), oldAppIdMeta, true) && appIdMeta == oldAppIdMeta) { return; } - if (!MetaDataManager::GetInstance().SaveMeta(appIdMeta.GetKey(), appIdMeta, true)) { - ZLOGE("save app meta failed, bundleName: %{public}s", appIdMeta.bundleName.c_str()); - } - return; + bool isSaved = MetaDataManager::GetInstance().SaveMeta(appIdMeta.GetKey(), appIdMeta, true); + ZLOGI("save app meta failed, bundleName: %{public}s isSaved: %{public}d", appIdMeta.bundleName.c_str(), isSaved); } int32_t KVDBServiceImpl::OnAppExit(pid_t uid, pid_t pid, uint32_t tokenId, const std::string &appId) @@ -987,8 +985,8 @@ void KVDBServiceImpl::SaveLocalMetaData(const Options &options, const StoreMetaD } StoreMetaDataLocal oldLocalMetaData; if (MetaDataManager::GetInstance().LoadMeta(metaData.GetKeyLocal(), oldLocalMetaData, true) - && oldLocalMetaData == localMetaData && oldLocalMetaData.schema == localMetaData.schema - && oldLocalMetaData.policies == localMetaData.policies) { + && oldLocalMetaData == localMetaData && oldLocalMetaData.schema == localMetaData.schema + && oldLocalMetaData.policies == localMetaData.policies) { return; } MetaDataManager::GetInstance().SaveMeta(metaData.GetKeyLocal(), localMetaData, true); diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index 2c0527db9..51508d2f8 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -166,7 +166,7 @@ private: std::string GenerateKey(const std::string &userId, const std::string &storeId) const; std::vector LoadSecretKey(const StoreMetaData &metaData, CryptoManager::SecretKeyType secretKeyType); void SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); - void SaveAppIdMeta(const StoreMetaData &metaData); + void SaveAppIdMetaData(const AppIDMetaData &appIdMeta); static Factory factory_; ConcurrentMap syncAgents_; std::shared_ptr executors_; diff --git a/services/distributeddataservice/service/test/meta_data_test.cpp b/services/distributeddataservice/service/test/meta_data_test.cpp index 714fd0b53..9830fb692 100644 --- a/services/distributeddataservice/service/test/meta_data_test.cpp +++ b/services/distributeddataservice/service/test/meta_data_test.cpp @@ -164,5 +164,34 @@ HWTEST_F(MetaDataTest, MateDataChanged, TestSize.Level0) ASSERT_FALSE(metaData.isNeedCompress); ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(metaData_.GetKeyWithoutPath())); } + +/** +* @tc.name: SchemaChanged +* @tc.desc: schema data changed +* @tc.type: FUNC +*/ +HWTEST_F(MetaDataTest, SchemaChanged, TestSize.Level0) +{ + ZLOGI("SchemaChanged start"); + options_.schema = ""; + StoreMetaData metaData; + std::vector password {}; + auto status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + StoreMetaMapping meta(metaData_); + ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true)); + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + + options_.schema = "schema_data"; + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + meta = metaData_; + ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true)); + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + ASSERT_TRUE(MetaDataManager::GetInstance().LoadMeta(meta.GetKey(), metaData, true)); + ASSERT_EQ(metaData.schema, "schema_data"); +} } // namespace DistributedDataTest } // namespace OHOS::Test -- Gitee From d5550a29e35eae4d8c336cea44198859b620c99a Mon Sep 17 00:00:00 2001 From: yangliu Date: Tue, 2 Sep 2025 20:39:35 +0800 Subject: [PATCH 6/8] update Signed-off-by: yangliu --- services/distributeddataservice/service/kvdb/kvdb_service_impl.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index 51508d2f8..fc78cfada 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -27,6 +27,7 @@ #include "kvdb_service_stub.h" #include "kvdb_watcher.h" #include "kvstore_sync_manager.h" +#include "metadata/appid_meta_data.h" #include "metadata/meta_data_manager.h" #include "metadata/store_meta_data.h" #include "metadata/store_meta_data_local.h" -- Gitee From 1fd67a44a1396f6593aea6f922e19016a27cfbff Mon Sep 17 00:00:00 2001 From: yangliu Date: Wed, 3 Sep 2025 09:09:15 +0800 Subject: [PATCH 7/8] update Signed-off-by: yangliu --- .../distributeddataservice/service/kvdb/kvdb_service_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index fc78cfada..33bd2fc58 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -167,7 +167,7 @@ private: std::string GenerateKey(const std::string &userId, const std::string &storeId) const; std::vector LoadSecretKey(const StoreMetaData &metaData, CryptoManager::SecretKeyType secretKeyType); void SaveSecretKeyMeta(const StoreMetaData &metaData, const std::vector &password); - void SaveAppIdMetaData(const AppIDMetaData &appIdMeta); + void SaveAppIdMetaData(const DistributedData::AppIDMetaData &appIdMeta); static Factory factory_; ConcurrentMap syncAgents_; std::shared_ptr executors_; -- Gitee From c1a4b5a760ae610047e6783ecb29617d14c6e1de Mon Sep 17 00:00:00 2001 From: yangliu Date: Wed, 3 Sep 2025 15:34:31 +0800 Subject: [PATCH 8/8] update Signed-off-by: yangliu --- .../test/store_meta_data_local_test.cpp | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/services/distributeddataservice/framework/test/store_meta_data_local_test.cpp b/services/distributeddataservice/framework/test/store_meta_data_local_test.cpp index d0c6b6379..df88ca5d3 100644 --- a/services/distributeddataservice/framework/test/store_meta_data_local_test.cpp +++ b/services/distributeddataservice/framework/test/store_meta_data_local_test.cpp @@ -18,6 +18,7 @@ using namespace testing::ext; using OHOS::DistributedData::StoreMetaDataLocal; +using OHOS::DistributedData::PolicyValue; namespace OHOS::Test { class StoreMetaDataLocalTest : public testing::Test { public: @@ -122,4 +123,35 @@ HWTEST_F(StoreMetaDataLocalTest, GetPolicy, TestSize.Level1) policy = metaData.GetPolicy(type); EXPECT_EQ(policy.type, type); } + +/** +* @tc.name: GetPolicy +* @tc.desc: test GetPolicy function +* @tc.type: FUNC +*/ +HWTEST_F(StoreMetaDataLocalTest, PolicyValue, TestSize.Level1) +{ + PolicyValue pValue; + pValue.type = UINT32_MAX; + pValue.index = 0; + pValue.valueUint = 1; + + PolicyValue pValue1; + pValue1.type = UINT32_MAX; + pValue1.index = 1; + pValue1.valueUint = 1; + + PolicyValue pValue2; + pValue2.type = UINT32_MAX; + pValue2.index = 0; + pValue2.valueUint = 1; + EXPECT_NE(pValue, pValue1); + EXPECT_EQ(pValue, pValue2); + + std::vector pValues = { pValue, pValue1, pValue2 }; + std::vector pValues1 = { pValue, pValue1, pValue1 }; + std::vector pValues2 = { pValue, pValue1, pValue2 };; + EXPECT_NE(pValues, pValues1); + EXPECT_EQ(pValues, pValues2); +} } // namespace OHOS::Test \ No newline at end of file -- Gitee