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 "dfx/log/ffrt_log_api.h" 19484543d1Sopenharmony_ci#include "sched/workgroup_internal.h" 20484543d1Sopenharmony_ci#include "eu/execute_unit.h" 21484543d1Sopenharmony_ci 22484543d1Sopenharmony_ci#define private public 23484543d1Sopenharmony_ci#include "sched/frame_interval.h" 24484543d1Sopenharmony_ci#undef private 25484543d1Sopenharmony_ci#include "common.h" 26484543d1Sopenharmony_ci 27484543d1Sopenharmony_ciusing namespace testing; 28484543d1Sopenharmony_ci#ifdef HWTEST_TESTING_EXT_ENABLE 29484543d1Sopenharmony_ciusing namespace testing::ext; 30484543d1Sopenharmony_ci#endif 31484543d1Sopenharmony_ciusing namespace ffrt; 32484543d1Sopenharmony_ci 33484543d1Sopenharmony_ciclass FrameIntervalTest : public testing::Test { 34484543d1Sopenharmony_ciprotected: 35484543d1Sopenharmony_ci static void SetUpTestCase() 36484543d1Sopenharmony_ci { 37484543d1Sopenharmony_ci } 38484543d1Sopenharmony_ci 39484543d1Sopenharmony_ci static void TearDownTestCase() 40484543d1Sopenharmony_ci { 41484543d1Sopenharmony_ci } 42484543d1Sopenharmony_ci 43484543d1Sopenharmony_ci virtual void SetUp() 44484543d1Sopenharmony_ci { 45484543d1Sopenharmony_ci } 46484543d1Sopenharmony_ci 47484543d1Sopenharmony_ci virtual void TearDown() 48484543d1Sopenharmony_ci { 49484543d1Sopenharmony_ci } 50484543d1Sopenharmony_ci}; 51484543d1Sopenharmony_ci 52484543d1Sopenharmony_ci/** 53484543d1Sopenharmony_ci * @tc.name: FrameIntervalTest 54484543d1Sopenharmony_ci * @tc.desc: Test whether the FrameInterval interface are normal. 55484543d1Sopenharmony_ci * @tc.type: FUNC 56484543d1Sopenharmony_ci */ 57484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, FrameIntervalTest, TestSize.Level1) 58484543d1Sopenharmony_ci{ 59484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 60484543d1Sopenharmony_ci EXPECT_NE(fi, nullptr); 61484543d1Sopenharmony_ci} 62484543d1Sopenharmony_ci 63484543d1Sopenharmony_ci/** 64484543d1Sopenharmony_ci * @tc.name: OnQoSIntervalsTest 65484543d1Sopenharmony_ci * @tc.desc: Test whether the OnQoSIntervals interface are normal. 66484543d1Sopenharmony_ci * @tc.type: FUNC 67484543d1Sopenharmony_ci */ 68484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, OnQoSIntervalsTest, TestSize.Level1) 69484543d1Sopenharmony_ci{ 70484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 71484543d1Sopenharmony_ci fi->OnQoSIntervals(ffrt::IntervalState::DEADLINE_BEGIN); 72484543d1Sopenharmony_ci fi->OnQoSIntervals(ffrt::IntervalState::DEADLINE_END); 73484543d1Sopenharmony_ci} 74484543d1Sopenharmony_ci 75484543d1Sopenharmony_ci/** 76484543d1Sopenharmony_ci * @tc.name: BeginTest 77484543d1Sopenharmony_ci * @tc.desc: Test whether the Begin interface are normal. 78484543d1Sopenharmony_ci * @tc.type: FUNC 79484543d1Sopenharmony_ci */ 80484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, BeginTest, TestSize.Level1) 81484543d1Sopenharmony_ci{ 82484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 83484543d1Sopenharmony_ci int ret = fi->Begin(); 84484543d1Sopenharmony_ci EXPECT_EQ(0, ret); 85484543d1Sopenharmony_ci 86484543d1Sopenharmony_ci int ret1 = fi->Begin(); 87484543d1Sopenharmony_ci EXPECT_EQ(-1, ret1); 88484543d1Sopenharmony_ci} 89484543d1Sopenharmony_ci 90484543d1Sopenharmony_ci/** 91484543d1Sopenharmony_ci * @tc.name: EndTest 92484543d1Sopenharmony_ci * @tc.desc: Test whether the End interface are normal. 93484543d1Sopenharmony_ci * @tc.type: FUNC 94484543d1Sopenharmony_ci */ 95484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, EndTest, TestSize.Level1) 96484543d1Sopenharmony_ci{ 97484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 98484543d1Sopenharmony_ci fi->End(); 99484543d1Sopenharmony_ci EXPECT_FALSE(fi->isBegun); 100484543d1Sopenharmony_ci 101484543d1Sopenharmony_ci fi->isBegun = true; 102484543d1Sopenharmony_ci fi->End(); 103484543d1Sopenharmony_ci EXPECT_FALSE(fi->isBegun); 104484543d1Sopenharmony_ci} 105484543d1Sopenharmony_ci/** 106484543d1Sopenharmony_ci * @tc.name: updateTest 107484543d1Sopenharmony_ci * @tc.desc: Test whether the update interface are normal. 108484543d1Sopenharmony_ci * @tc.type: FUNC 109484543d1Sopenharmony_ci */ 110484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, updateTest, TestSize.Level1) 111484543d1Sopenharmony_ci{ 112484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 113484543d1Sopenharmony_ci uint64_t deadline = 900; 114484543d1Sopenharmony_ci fi->Update(deadline); 115484543d1Sopenharmony_ci deadline = 1500000; 116484543d1Sopenharmony_ci fi->Update(deadline); 117484543d1Sopenharmony_ci 118484543d1Sopenharmony_ci deadline = 100000; 119484543d1Sopenharmony_ci fi->Update(deadline); 120484543d1Sopenharmony_ci} 121484543d1Sopenharmony_ci 122484543d1Sopenharmony_ci/** 123484543d1Sopenharmony_ci * @tc.name: JoinTest 124484543d1Sopenharmony_ci * @tc.desc: Test whether the Join interface are normal. 125484543d1Sopenharmony_ci * @tc.type: FUNC 126484543d1Sopenharmony_ci */ 127484543d1Sopenharmony_ciHWTEST_F(FrameIntervalTest, JoinTest, TestSize.Level1) 128484543d1Sopenharmony_ci{ 129484543d1Sopenharmony_ci FrameInterval* fi = new FrameInterval(100000, QoS(5)); 130484543d1Sopenharmony_ci fi->Join(); 131484543d1Sopenharmony_ci fi->Leave(); 132484543d1Sopenharmony_ci}