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}