From e4a49c18812a305319a70ebf7ab949b0e83b1086 Mon Sep 17 00:00:00 2001 From: xujunyang Date: Thu, 17 Apr 2025 15:36:59 +0800 Subject: [PATCH] AddUT Change-Id: I9a15b27aa643823c649a2c38badb46b45241496d Signed-off-by: xujunyang --- services/timer/src/batch.cpp | 2 +- .../src/time_service_timer_test.cpp | 197 +++++++++++++++++- 2 files changed, 188 insertions(+), 11 deletions(-) diff --git a/services/timer/src/batch.cpp b/services/timer/src/batch.cpp index 9823add1..6267fbdc 100644 --- a/services/timer/src/batch.cpp +++ b/services/timer/src/batch.cpp @@ -59,7 +59,7 @@ bool Batch::Add(const std::shared_ptr &alarm) [](const std::shared_ptr &first, const std::shared_ptr &second) { return first->whenElapsed < second->whenElapsed; }); - alarms_.insert(it, alarm); // 根据Alarm.when_elapsed从小到大排列 + alarms_.insert(it, alarm); // 根据Alarm.when_elapsed从小到大排列. if (alarm->whenElapsed > start_) { start_ = alarm->whenElapsed; diff --git a/test/unittest/service_test/src/time_service_timer_test.cpp b/test/unittest/service_test/src/time_service_timer_test.cpp index d973b099..aaf71ffd 100644 --- a/test/unittest/service_test/src/time_service_timer_test.cpp +++ b/test/unittest/service_test/src/time_service_timer_test.cpp @@ -575,7 +575,7 @@ HWTEST_F(TimeServiceTimerTest, Cjson003, TestSize.Level0) /** * @tc.name: Cjson004 -* @tc.desc: Test QueryWant of cjson. +* @tc.desc: Test QueryWant of cjson with valid table name. * @tc.type: FUNC */ HWTEST_F(TimeServiceTimerTest, Cjson004, TestSize.Level0) @@ -583,17 +583,33 @@ HWTEST_F(TimeServiceTimerTest, Cjson004, TestSize.Level0) auto entry1 = std::make_shared( TimerEntry{"", TIMER_ID, 1, 1, 1, 1, false, nullptr, nullptr, 1, 1, "bundleName1"}); CjsonHelper::GetInstance().Insert(std::string(DROP_ON_REBOOT), entry1); - std::string want1 = CjsonHelper::GetInstance().QueryWant(std::string(DROP_ON_REBOOT), TIMER_ID); - EXPECT_EQ(want1, ""); + std::string want = CjsonHelper::GetInstance().QueryWant(std::string(DROP_ON_REBOOT), TIMER_ID); + EXPECT_EQ(want, ""); CjsonHelper::GetInstance().Delete(std::string(DROP_ON_REBOOT), TIMER_ID); } /** * @tc.name: Cjson005 -* @tc.desc: Test QueryAutoReboot of cjson. +* @tc.desc: Test QueryWant of cjson with invalid table name. * @tc.type: FUNC */ HWTEST_F(TimeServiceTimerTest, Cjson005, TestSize.Level0) +{ + auto entry1 = std::make_shared( + TimerEntry{"", TIMER_ID, 1, 1, 1, 1, false, nullptr, nullptr, 1, 1, "bundleName1"}); + CjsonHelper::GetInstance().Insert(std::string(DROP_ON_REBOOT), entry1); + std::string want = CjsonHelper::GetInstance().QueryWant(std::string(""), TIMER_ID); + EXPECT_EQ(want, ""); + CjsonHelper::GetInstance().Delete(std::string(DROP_ON_REBOOT), TIMER_ID); +} + + +/** +* @tc.name: Cjson006 +* @tc.desc: Test QueryAutoReboot of cjson. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, Cjson006, TestSize.Level0) { auto entry1 = std::make_shared( TimerEntry{"", TIMER_ID, 1, 1, 1, 1, true, nullptr, nullptr, 1, 1, "bundleName1"}); @@ -605,11 +621,11 @@ HWTEST_F(TimeServiceTimerTest, Cjson005, TestSize.Level0) } /** -* @tc.name: Cjson006 +* @tc.name: Cjson007 * @tc.desc: Test GetEntry will return nullptr when cjson is incomplete and invalid. * @tc.type: FUNC */ -HWTEST_F(TimeServiceTimerTest, Cjson006, TestSize.Level0) +HWTEST_F(TimeServiceTimerTest, Cjson007, TestSize.Level0) { cJSON* obj = cJSON_CreateObject(); auto res = TimeSystemAbility::GetInstance()->GetEntry(obj, true); @@ -653,11 +669,11 @@ HWTEST_F(TimeServiceTimerTest, Cjson006, TestSize.Level0) } /** -* @tc.name: Cjson007 +* @tc.name: Cjson008 * @tc.desc: Test GetEntry will return nullptr when cjson is complete and valid. * @tc.type: FUNC */ -HWTEST_F(TimeServiceTimerTest, Cjson007, TestSize.Level0) +HWTEST_F(TimeServiceTimerTest, Cjson008, TestSize.Level0) { cJSON* obj = cJSON_CreateObject(); cJSON_AddStringToObject(obj, "name", ""); @@ -677,11 +693,11 @@ HWTEST_F(TimeServiceTimerTest, Cjson007, TestSize.Level0) } /** -* @tc.name: Cjson008 +* @tc.name: Cjson009 * @tc.desc: Test CjsonIntoDatabase. * @tc.type: FUNC */ -HWTEST_F(TimeServiceTimerTest, Cjson008, TestSize.Level0) +HWTEST_F(TimeServiceTimerTest, Cjson009, TestSize.Level0) { cJSON* resultSet = cJSON_CreateArray(); cJSON* obj1 = cJSON_CreateObject(); @@ -707,6 +723,119 @@ HWTEST_F(TimeServiceTimerTest, Cjson008, TestSize.Level0) cJSON_Delete(resultSet); } +/** +* @tc.name: Cjson010 +* @tc.desc: Test UpdateTriggerGroup with invalid table name. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, Cjson010, TestSize.Level0) +{ + std::vector> timerVec = {{1, 1}}; + auto res = CjsonHelper::GetInstance().UpdateTriggerGroup("", timerVec); + EXPECT_FALSE(res); +} + +/** +* @tc.name: Cjson011 +* @tc.desc: Test UpdateTriggerGroup with valid table name. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, Cjson011, TestSize.Level0) +{ + std::vector> timerVec = {{1, 1}}; + auto res = CjsonHelper::GetInstance().UpdateTriggerGroup(std::string(DROP_ON_REBOOT), timerVec); + EXPECT_TRUE(res); +} + +/** +* @tc.name: Cjson012 +* @tc.desc: Test ClearInvaildDataInHoldOnReboot. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, Cjson012, TestSize.Level0) +{ + auto res = CjsonHelper::GetInstance().ClearInvaildDataInHoldOnReboot(); + EXPECT_TRUE(res); +} + +/** +* @tc.name: TimerDB001 +* @tc.desc: Test OnCreate of TimeDBOpenCallback. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerDB001, TestSize.Level0) +{ + TimeDBOpenCallback TimeDBCB; + auto store = TimeDatabase::GetInstance().store_; + auto res = TimeDBCB.OnCreate(*store); + EXPECT_EQ(res, OHOS::NativeRdb::E_OK); +} + +/** +* @tc.name: TimerDB002 +* @tc.desc: Test OnOpen of TimeDBOpenCallback. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerDB002, TestSize.Level0) +{ + TimeDBOpenCallback TimeDBCB; + auto store = TimeDatabase::GetInstance().store_; + auto res = TimeDBCB.OnOpen(*store); + EXPECT_EQ(res, OHOS::NativeRdb::E_OK); +} + +/** +* @tc.name: TimerDB003 +* @tc.desc: Test OnUpgrade of TimeDBOpenCallback. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerDB003, TestSize.Level0) +{ + TimeDBOpenCallback TimeDBCB; + auto store = TimeDatabase::GetInstance().store_; + store->Execute("ALTER TABLE hold_on_reboot DROP COLUMN pid"); + store->Execute("ALTER TABLE drop_on_reboot DROP COLUMN pid"); + store->Execute("ALTER TABLE hold_on_reboot DROP COLUMN name"); + store->Execute("ALTER TABLE drop_on_reboot DROP COLUMN name"); + auto res = TimeDBCB.OnUpgrade(*store, 1, 3); + EXPECT_EQ(res, OHOS::NativeRdb::E_OK); + store->Execute("ALTER TABLE hold_on_reboot DROP COLUMN pid"); + res = TimeDBCB.OnUpgrade(*store, 1, 2); + EXPECT_EQ(res, OHOS::NativeRdb::E_SQLITE_ERROR); + store->Execute("ALTER TABLE hold_on_reboot DROP COLUMN name"); + res = TimeDBCB.OnUpgrade(*store, 2, 3); + EXPECT_EQ(res, OHOS::NativeRdb::E_SQLITE_ERROR); + res = TimeDBCB.OnUpgrade(*store, 1, 2); + EXPECT_EQ(res, OHOS::NativeRdb::E_SQLITE_ERROR); + res = TimeDBCB.OnUpgrade(*store, 2, 3); + EXPECT_EQ(res, OHOS::NativeRdb::E_SQLITE_ERROR); +} + +/** +* @tc.name: TimerDB004 +* @tc.desc: Test OnDowngrade of TimeDBOpenCallback. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerDB004, TestSize.Level0) +{ + TimeDBOpenCallback TimeDBCB; + auto store = TimeDatabase::GetInstance().store_; + auto res = TimeDBCB.OnDowngrade(*store, 1, 2); + EXPECT_EQ(res, OHOS::NativeRdb::E_OK); +} + +/** +* @tc.name: TimerDB005 +* @tc.desc: Test RecoverDataBase of TimeDatabase. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerDB005, TestSize.Level0) +{ + auto res = TimeDatabase::GetInstance().RecoverDataBase(); + EXPECT_TRUE(res); +} + + /** * @tc.name: PidProxyTimer001 * @tc.desc: proxy timer. @@ -1711,6 +1840,54 @@ HWTEST_F(TimeServiceTimerTest, TimerManager017, TestSize.Level0) DataBase.store_ = storeptr; } +/** +* @tc.name: TimerManager018 +* @tc.desc: Test TriggerIdleTimer of TimerManager. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerManager018, TestSize.Level0) +{ + auto timerManager = TimerManager::GetInstance(); + timerManager->OnUserRemoved(1); + timerManager->TriggerIdleTimer(); + EXPECT_EQ(timerManager->mPendingIdleUntil_, nullptr); +} + +/** +* @tc.name: TimerManager019 +* @tc.desc: test SetHandler of TimerManager. +* @tc.type: FUNC +*/ +HWTEST_F(TimeServiceTimerTest, TimerManager019, TestSize.Level0) +{ + TimerManager::GetInstance()->SetHandler( + "", TIMER_ID, 0, std::numeric_limits::max(), + std::numeric_limits::max(), 1, 1, false, + nullptr, nullptr, 0, 0, "bundleName"); + { + std::lock_guard lock(TimerManager::GetInstance()->entryMapMutex_); + auto map = TimerManager::GetInstance()->timerEntryMap_; + auto it = map.find(TIMER_ID); + EXPECT_NE(it, map.end()); + if (it != map.end()) { + map.erase(it); + } + } + TimerManager::GetInstance()->SetHandler( + "", TIMER_ID, 0, std::numeric_limits::max(), + std::numeric_limits::max(), std::numeric_limits::max(), + 1, false, nullptr, nullptr, 0, 0, "bundleName"); + { + std::lock_guard lock(TimerManager::GetInstance()->entryMapMutex_); + auto map = TimerManager::GetInstance()->timerEntryMap_; + auto it = map.find(TIMER_ID); + EXPECT_NE(it, map.end()); + if (it != map.end()) { + map.erase(it); + } + } +} + /** * @tc.name: TimerInfo001 * @tc.desc: test UpdateWhenElapsedFromNow. -- Gitee