17a9a4b8fSopenharmony_ci/* 27a9a4b8fSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 37a9a4b8fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47a9a4b8fSopenharmony_ci * you may not use this file except in compliance with the License. 57a9a4b8fSopenharmony_ci * You may obtain a copy of the License at 67a9a4b8fSopenharmony_ci * 77a9a4b8fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87a9a4b8fSopenharmony_ci * 97a9a4b8fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107a9a4b8fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117a9a4b8fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127a9a4b8fSopenharmony_ci * See the License for the specific language governing permissions and 137a9a4b8fSopenharmony_ci * limitations under the License. 147a9a4b8fSopenharmony_ci */ 157a9a4b8fSopenharmony_ci 167a9a4b8fSopenharmony_ci#include <functional> 177a9a4b8fSopenharmony_ci#include <gtest/gtest.h> 187a9a4b8fSopenharmony_ci 197a9a4b8fSopenharmony_ci#include "watchdog.h" 207a9a4b8fSopenharmony_ci#include "work_policy_manager.h" 217a9a4b8fSopenharmony_ci#include "work_scheduler_service.h" 227a9a4b8fSopenharmony_ci 237a9a4b8fSopenharmony_ciusing namespace testing::ext; 247a9a4b8fSopenharmony_ci 257a9a4b8fSopenharmony_cinamespace OHOS { 267a9a4b8fSopenharmony_cinamespace WorkScheduler { 277a9a4b8fSopenharmony_ci 287a9a4b8fSopenharmony_ciclass WatchdogTest : public testing::Test { 297a9a4b8fSopenharmony_cipublic: 307a9a4b8fSopenharmony_ci static void SetUpTestCase(); 317a9a4b8fSopenharmony_ci static void TearDownTestCase() {} 327a9a4b8fSopenharmony_ci void SetUp() {} 337a9a4b8fSopenharmony_ci void TearDown() {} 347a9a4b8fSopenharmony_ci static std::shared_ptr<Watchdog> watchdog_; 357a9a4b8fSopenharmony_ci}; 367a9a4b8fSopenharmony_ci 377a9a4b8fSopenharmony_cistd::shared_ptr<Watchdog> WatchdogTest::watchdog_ = nullptr; 387a9a4b8fSopenharmony_ci 397a9a4b8fSopenharmony_civoid WatchdogTest::SetUpTestCase() 407a9a4b8fSopenharmony_ci{ 417a9a4b8fSopenharmony_ci std::shared_ptr<WorkSchedulerService> workSchedulerService = DelayedSingleton<WorkSchedulerService>::GetInstance(); 427a9a4b8fSopenharmony_ci std::shared_ptr<AppExecFwk::EventRunner> runner; 437a9a4b8fSopenharmony_ci watchdog_ = std::make_shared<Watchdog>(workSchedulerService->GetWorkPolicyManager(), runner); 447a9a4b8fSopenharmony_ci} 457a9a4b8fSopenharmony_ci 467a9a4b8fSopenharmony_ci/** 477a9a4b8fSopenharmony_ci * @tc.name: watchdog_001 487a9a4b8fSopenharmony_ci * @tc.desc: Test Watchdog AddWatchdog. 497a9a4b8fSopenharmony_ci * @tc.type: FUNC 507a9a4b8fSopenharmony_ci * @tc.require: I8JBRY 517a9a4b8fSopenharmony_ci */ 527a9a4b8fSopenharmony_ciHWTEST_F(WatchdogTest, watchdog_001, TestSize.Level1) 537a9a4b8fSopenharmony_ci{ 547a9a4b8fSopenharmony_ci bool result = watchdog_->AddWatchdog(1, 1); 557a9a4b8fSopenharmony_ci EXPECT_EQ(result, false); 567a9a4b8fSopenharmony_ci} 577a9a4b8fSopenharmony_ci 587a9a4b8fSopenharmony_ci/** 597a9a4b8fSopenharmony_ci * @tc.name: watchdog_002 607a9a4b8fSopenharmony_ci * @tc.desc: Test Watchdog RemoveWatchdog. 617a9a4b8fSopenharmony_ci * @tc.type: FUNC 627a9a4b8fSopenharmony_ci * @tc.require: I8JBRY 637a9a4b8fSopenharmony_ci */ 647a9a4b8fSopenharmony_ciHWTEST_F(WatchdogTest, watchdog_002, TestSize.Level1) 657a9a4b8fSopenharmony_ci{ 667a9a4b8fSopenharmony_ci bool result = watchdog_->AddWatchdog(1, 1); 677a9a4b8fSopenharmony_ci EXPECT_EQ(result, false); 687a9a4b8fSopenharmony_ci watchdog_->RemoveWatchdog(1); 697a9a4b8fSopenharmony_ci} 707a9a4b8fSopenharmony_ci 717a9a4b8fSopenharmony_ci/** 727a9a4b8fSopenharmony_ci * @tc.name: watchdog_003 737a9a4b8fSopenharmony_ci * @tc.desc: Test Watchdog ProcessEvent. 747a9a4b8fSopenharmony_ci * @tc.type: FUNC 757a9a4b8fSopenharmony_ci * @tc.require: I8JBRY 767a9a4b8fSopenharmony_ci */ 777a9a4b8fSopenharmony_ciHWTEST_F(WatchdogTest, watchdog_003, TestSize.Level1) 787a9a4b8fSopenharmony_ci{ 797a9a4b8fSopenharmony_ci AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(0); 807a9a4b8fSopenharmony_ci event = nullptr; 817a9a4b8fSopenharmony_ci watchdog_->ProcessEvent(event); 827a9a4b8fSopenharmony_ci EXPECT_TRUE(event == nullptr); 837a9a4b8fSopenharmony_ci} 847a9a4b8fSopenharmony_ci 857a9a4b8fSopenharmony_ci/** 867a9a4b8fSopenharmony_ci * @tc.name: watchdog_004 877a9a4b8fSopenharmony_ci * @tc.desc: Test Watchdog ProcessEvent. 887a9a4b8fSopenharmony_ci * @tc.type: FUNC 897a9a4b8fSopenharmony_ci * @tc.require: I8JBRY 907a9a4b8fSopenharmony_ci */ 917a9a4b8fSopenharmony_ciHWTEST_F(WatchdogTest, watchdog_004, TestSize.Level1) 927a9a4b8fSopenharmony_ci{ 937a9a4b8fSopenharmony_ci AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(0); 947a9a4b8fSopenharmony_ci watchdog_->ProcessEvent(event); 957a9a4b8fSopenharmony_ci EXPECT_TRUE(event->GetInnerEventId() == 0); 967a9a4b8fSopenharmony_ci} 977a9a4b8fSopenharmony_ci 987a9a4b8fSopenharmony_ci/** 997a9a4b8fSopenharmony_ci * @tc.name: watchdog_005 1007a9a4b8fSopenharmony_ci * @tc.desc: Test Watchdog ProcessEvent. 1017a9a4b8fSopenharmony_ci * @tc.type: FUNC 1027a9a4b8fSopenharmony_ci * @tc.require: I8JBRY 1037a9a4b8fSopenharmony_ci */ 1047a9a4b8fSopenharmony_ciHWTEST_F(WatchdogTest, watchdog_005, TestSize.Level1) 1057a9a4b8fSopenharmony_ci{ 1067a9a4b8fSopenharmony_ci AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(0); 1077a9a4b8fSopenharmony_ci watchdog_->service_ = nullptr; 1087a9a4b8fSopenharmony_ci watchdog_->ProcessEvent(event); 1097a9a4b8fSopenharmony_ci std::shared_ptr<WorkPolicyManager> service; 1107a9a4b8fSopenharmony_ci watchdog_->service_ = service; 1117a9a4b8fSopenharmony_ci EXPECT_TRUE(event->GetInnerEventId() == 0); 1127a9a4b8fSopenharmony_ci} 1137a9a4b8fSopenharmony_ci 1147a9a4b8fSopenharmony_ci} 1157a9a4b8fSopenharmony_ci}