diff --git a/services/distributeddataservice/service/data_share/common/scheduler_manager.cpp b/services/distributeddataservice/service/data_share/common/scheduler_manager.cpp index deb94a7b0cd4813bcc85690dc05f129cf888cbe4..acaace9e8f230db79d99071ddddae3dbf6eed409 100644 --- a/services/distributeddataservice/service/data_share/common/scheduler_manager.cpp +++ b/services/distributeddataservice/service/data_share/common/scheduler_manager.cpp @@ -101,7 +101,7 @@ void SchedulerManager::Enable(const Key &key, int32_t userId, const DistributedD if (it != schedulerStatusCache_.end()) { it->second = true; } else { - ZLOGE("enable scheduler key not found, %{public}s, %{public}" PRId64 ", %{public}s", + ZLOGW("enable key not found, %{public}s, %{public}" PRId64 ", %{public}s", URIUtils::Anonymous(key.uri).c_str(), key.subscriberId, key.bundleName.c_str()); } auto timer = timerCache_.find(key); @@ -122,7 +122,7 @@ void SchedulerManager::Disable(const Key &key) if (it != schedulerStatusCache_.end()) { it->second = false; } else { - ZLOGE("disable scheduler key not found, %{public}s, %{public}" PRId64 ", %{public}s", + ZLOGW("disable key not found, %{public}s, %{public}" PRId64 ", %{public}s", URIUtils::Anonymous(key.uri).c_str(), key.subscriberId, key.bundleName.c_str()); } } @@ -173,12 +173,17 @@ bool SchedulerManager::GetSchedulerStatus(const Key &key) { bool enabled = false; std::lock_guard lock(mutex_); - ZLOGI("get status, total %{public}zu", schedulerStatusCache_.size()); + uint32_t lastSize = lastStatusCacheSize_; + uint32_t nowSize = schedulerStatusCache_.size(); + if (nowSize != lastSize) { + lastStatusCacheSize_ = nowSize; + ZLOGI("size changed last %{public}d, now %{public}d", lastSize, nowSize); + } auto it = schedulerStatusCache_.find(key); if (it != schedulerStatusCache_.end()) { enabled = it->second; } else { - ZLOGE("get scheduler status key not found, %{public}s, %{public}" PRId64 ", %{public}s", + ZLOGW("key not found, %{public}s, %{public}" PRId64 ", %{public}s", URIUtils::Anonymous(key.uri).c_str(), key.subscriberId, key.bundleName.c_str()); } return enabled; diff --git a/services/distributeddataservice/service/data_share/common/scheduler_manager.h b/services/distributeddataservice/service/data_share/common/scheduler_manager.h index 934f39757585d73ddb1c9c6b8af4a1ddfed6fde5..165551970bc54215ecbf7b2bfdb31636e252dfac 100644 --- a/services/distributeddataservice/service/data_share/common/scheduler_manager.h +++ b/services/distributeddataservice/service/data_share/common/scheduler_manager.h @@ -41,6 +41,7 @@ public: private: static constexpr const char *REMIND_TIMER_FUNC = "remindTimer("; static constexpr int REMIND_TIMER_FUNC_LEN = 12; + uint32_t lastStatusCacheSize_ = 0; SchedulerManager() = default; ~SchedulerManager() = default; static void GenRemindTimerFuncParams(const int32_t userId, DistributedData::StoreMetaData &metaData, const Key &key, diff --git a/services/distributeddataservice/service/test/data_share_scheduler_manager_test.cpp b/services/distributeddataservice/service/test/data_share_scheduler_manager_test.cpp index 60e6b8a3a33886e56165ea475606699f83171032..0a8be9583ae28dc2d6af481aa28bc34bc7b8230f 100644 --- a/services/distributeddataservice/service/test/data_share_scheduler_manager_test.cpp +++ b/services/distributeddataservice/service/test/data_share_scheduler_manager_test.cpp @@ -43,7 +43,7 @@ public: 1.Add a template 2.Creat a SchedulerManager object 3.call Enable Scheduler function -* @tc.experct: not find key, Enable SchedulerStatus and GetSchedulerStatus return false +* @tc.expect: not find key, Enable SchedulerStatus and GetSchedulerStatus return false */ HWTEST_F(DataShareSchedulerManagerTest, EnableScheduler001, TestSize.Level1) { @@ -84,7 +84,7 @@ HWTEST_F(DataShareSchedulerManagerTest, EnableScheduler001, TestSize.Level1) 1.Add a template 2.Creat a SchedulerManager object 3.call Disable Scheduler function -* @tc.experct: not find key, Disable SchedulerStatus and GetSchedulerStatus return false +* @tc.expect: not find key, Disable SchedulerStatus and GetSchedulerStatus return false */ HWTEST_F(DataShareSchedulerManagerTest, DisableScheduler001, TestSize.Level1) { @@ -113,4 +113,48 @@ HWTEST_F(DataShareSchedulerManagerTest, DisableScheduler001, TestSize.Level1) EXPECT_GT(ret.second, 0); ZLOGI("DisableScheduler001 end"); } + +/** +* @tc.name: ChangeStatusCacheSize001 +* @tc.desc: test statusCache size changed when getting scheduler status +* @tc.type: FUNC +* @tc.require: +* @tc.precon: None +* @tc.step: + 1.Add a template + 2.Creat a SchedulerManager object + 3.Change the size of statusCache + 4.call GetSchedulerStatus function +* @tc.expect: the size of SchedulerStatus changed and print log +*/ +HWTEST_F(DataShareSchedulerManagerTest, ChangeStatusCacheSize001, TestSize.Level1) +{ + ZLOGI("ChangeStatusCacheSize001 start"); + Key key("uri1", 12345, "name1"); + Template tplt; + tplt.predicates_.emplace_back("test", "predicate test"); + tplt.scheduler_ = "scheduler test"; + std::string dataDir = "/data/service/el1/public/database/distributeddata/kvdb"; + std::shared_ptr executors = std::make_shared(1, 1); + auto kvDelegate = KvDBDelegate::GetInstance(dataDir, executors); + ASSERT_NE(kvDelegate, nullptr); + TemplateData data(key.uri, key.bundleName, key.subscriberId, USER_TEST, tplt); + auto ret = kvDelegate->Upsert(KvDBDelegate::TEMPLATE_TABLE, data); + EXPECT_EQ(ret.first, OHOS::DataShare::E_OK); + EXPECT_GT(ret.second, 0); + + auto &manager = SchedulerManager::GetInstance(); + manager.Disable(key); + Key key2("testUri", 12345, "testName"); + manager.schedulerStatusCache_.emplace(key2, false); + bool status = manager.GetSchedulerStatus(key); + EXPECT_FALSE(status); + manager.schedulerStatusCache_.erase(key2); + + ret = kvDelegate->Delete(KvDBDelegate::TEMPLATE_TABLE, + static_cast(Id(TemplateData::GenId(key.uri, key.bundleName, key.subscriberId), USER_TEST))); + EXPECT_EQ(ret.first, OHOS::DataShare::E_OK); + EXPECT_GT(ret.second, 0); + ZLOGI("ChangeStatusCacheSize001 end"); +} } // namespace OHOS::Test \ No newline at end of file