1484543d1Sopenharmony_ci/* 2484543d1Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3484543d1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4484543d1Sopenharmony_ci * you may not use this file except in compliance with the License. 5484543d1Sopenharmony_ci * You may obtain a copy of the License at 6484543d1Sopenharmony_ci * 7484543d1Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8484543d1Sopenharmony_ci * 9484543d1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10484543d1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11484543d1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12484543d1Sopenharmony_ci * See the License for the specific language governing permissions and 13484543d1Sopenharmony_ci * limitations under the License. 14484543d1Sopenharmony_ci */ 15484543d1Sopenharmony_ci 16484543d1Sopenharmony_ci#include <gtest/gtest.h> 17484543d1Sopenharmony_ci#include <thread> 18484543d1Sopenharmony_ci#include <cstring> 19484543d1Sopenharmony_ci#include <algorithm> 20484543d1Sopenharmony_ci#include <sched.h> 21484543d1Sopenharmony_ci#include <unistd.h> 22484543d1Sopenharmony_ci#include <sys/syscall.h> 23484543d1Sopenharmony_ci#include <sys/resource.h> 24484543d1Sopenharmony_ci 25484543d1Sopenharmony_ci#define private public 26484543d1Sopenharmony_ci#include "eu/worker_thread.h" 27484543d1Sopenharmony_ci#undef private 28484543d1Sopenharmony_ci#include "common.h" 29484543d1Sopenharmony_ci 30484543d1Sopenharmony_ciusing namespace testing; 31484543d1Sopenharmony_ci#ifdef HWTEST_TESTING_EXT_ENABLE 32484543d1Sopenharmony_ciusing namespace testing::ext; 33484543d1Sopenharmony_ci#endif 34484543d1Sopenharmony_ciusing namespace ffrt; 35484543d1Sopenharmony_ci 36484543d1Sopenharmony_ciclass WorkerThreadTest : public testing::Test { 37484543d1Sopenharmony_ciprotected: 38484543d1Sopenharmony_ci static void SetUpTestCase() 39484543d1Sopenharmony_ci { 40484543d1Sopenharmony_ci } 41484543d1Sopenharmony_ci 42484543d1Sopenharmony_ci static void TearDownTestCase() 43484543d1Sopenharmony_ci { 44484543d1Sopenharmony_ci } 45484543d1Sopenharmony_ci 46484543d1Sopenharmony_ci virtual void SetUp() 47484543d1Sopenharmony_ci { 48484543d1Sopenharmony_ci } 49484543d1Sopenharmony_ci 50484543d1Sopenharmony_ci virtual void TearDown() 51484543d1Sopenharmony_ci { 52484543d1Sopenharmony_ci } 53484543d1Sopenharmony_ci}; 54484543d1Sopenharmony_ci 55484543d1Sopenharmony_ci/** 56484543d1Sopenharmony_ci * @tc.name: IdleTest 57484543d1Sopenharmony_ci * @tc.desc: Test whether the Idle interface are normal. 58484543d1Sopenharmony_ci * @tc.type: FUNC 59484543d1Sopenharmony_ci */ 60484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, IdleTest, TestSize.Level1) 61484543d1Sopenharmony_ci{ 62484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 63484543d1Sopenharmony_ci bool ret = wt->Idle(); 64484543d1Sopenharmony_ci EXPECT_FALSE(ret); 65484543d1Sopenharmony_ci} 66484543d1Sopenharmony_ci 67484543d1Sopenharmony_ci/** 68484543d1Sopenharmony_ci * @tc.name: SetIdleTest 69484543d1Sopenharmony_ci * @tc.desc: Test whether the SetIdle interface are normal. 70484543d1Sopenharmony_ci * @tc.type: FUNC 71484543d1Sopenharmony_ci */ 72484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, SetIdleTest, TestSize.Level1) 73484543d1Sopenharmony_ci{ 74484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 75484543d1Sopenharmony_ci bool var = false; 76484543d1Sopenharmony_ci wt->SetIdle(var); 77484543d1Sopenharmony_ci EXPECT_FALSE(wt->idle); 78484543d1Sopenharmony_ci} 79484543d1Sopenharmony_ci 80484543d1Sopenharmony_ci/** 81484543d1Sopenharmony_ci * @tc.name: ExitedTest 82484543d1Sopenharmony_ci * @tc.desc: Test whether the Exited interface are normal. 83484543d1Sopenharmony_ci * @tc.type: FUNC 84484543d1Sopenharmony_ci */ 85484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, ExitedTest, TestSize.Level1) 86484543d1Sopenharmony_ci{ 87484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 88484543d1Sopenharmony_ci bool ret = wt->Exited(); 89484543d1Sopenharmony_ci EXPECT_FALSE(ret); 90484543d1Sopenharmony_ci} 91484543d1Sopenharmony_ci 92484543d1Sopenharmony_ci/** 93484543d1Sopenharmony_ci * @tc.name: SetExitedTest 94484543d1Sopenharmony_ci * @tc.desc: Test whether the SetExited interface are normal. 95484543d1Sopenharmony_ci * @tc.type: FUNC 96484543d1Sopenharmony_ci */ 97484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, SetExitedTest, TestSize.Level1) 98484543d1Sopenharmony_ci{ 99484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 100484543d1Sopenharmony_ci bool var = false; 101484543d1Sopenharmony_ci wt->SetExited(var); 102484543d1Sopenharmony_ci EXPECT_FALSE(wt->exited); 103484543d1Sopenharmony_ci} 104484543d1Sopenharmony_ci 105484543d1Sopenharmony_ci/** 106484543d1Sopenharmony_ci * @tc.name: GetQosTest 107484543d1Sopenharmony_ci * @tc.desc: Test whether the GetQos interface are normal. 108484543d1Sopenharmony_ci * @tc.type: FUNC 109484543d1Sopenharmony_ci */ 110484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, GetQosTest, TestSize.Level1) 111484543d1Sopenharmony_ci{ 112484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 113484543d1Sopenharmony_ci QoS ret = wt->GetQos(); 114484543d1Sopenharmony_ci} 115484543d1Sopenharmony_ci 116484543d1Sopenharmony_ci/** 117484543d1Sopenharmony_ci * @tc.name: JoinTest 118484543d1Sopenharmony_ci * @tc.desc: Test whether the Join interface are normal. 119484543d1Sopenharmony_ci * @tc.type: FUNC 120484543d1Sopenharmony_ci */ 121484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, JoinTest, TestSize.Level1) 122484543d1Sopenharmony_ci{ 123484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 124484543d1Sopenharmony_ci wt->Join(); 125484543d1Sopenharmony_ci} 126484543d1Sopenharmony_ci 127484543d1Sopenharmony_ci/** 128484543d1Sopenharmony_ci * @tc.name: DetachTest 129484543d1Sopenharmony_ci * @tc.desc: Test whether the Detach interface are normal. 130484543d1Sopenharmony_ci * @tc.type: FUNC 131484543d1Sopenharmony_ci */ 132484543d1Sopenharmony_ciHWTEST_F(WorkerThreadTest, DetachTest, TestSize.Level1) 133484543d1Sopenharmony_ci{ 134484543d1Sopenharmony_ci WorkerThread* wt = new WorkerThread(QoS(6)); 135484543d1Sopenharmony_ci wt->Detach(); 136484543d1Sopenharmony_ci} 137