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 <cstdio>
19484543d1Sopenharmony_ci#include <cstdlib>
20484543d1Sopenharmony_ci#include <unistd.h>
21484543d1Sopenharmony_ci#include <sys/ioctl.h>
22484543d1Sopenharmony_ci#include <fcntl.h>
23484543d1Sopenharmony_ci#include <unistd.h>
24484543d1Sopenharmony_ci#include <sys/syscall.h>
25484543d1Sopenharmony_ci#include <linux/types.h>
26484543d1Sopenharmony_ci#include "eu/qos_interface.h"
27484543d1Sopenharmony_ci#include "ffrt_inner.h"
28484543d1Sopenharmony_ci#include "common.h"
29484543d1Sopenharmony_ci
30484543d1Sopenharmony_ci#define GET_TID() syscall(SYS_gettid)
31484543d1Sopenharmony_ci
32484543d1Sopenharmony_ciusing namespace testing;
33484543d1Sopenharmony_ci#ifdef HWTEST_TESTING_EXT_ENABLE
34484543d1Sopenharmony_ciusing namespace testing::ext;
35484543d1Sopenharmony_ci#endif
36484543d1Sopenharmony_ciusing namespace ffrt;
37484543d1Sopenharmony_ci
38484543d1Sopenharmony_ciclass QosInterfaceTest : public testing::Test {
39484543d1Sopenharmony_ciprotected:
40484543d1Sopenharmony_ci    static void SetUpTestCase()
41484543d1Sopenharmony_ci    {
42484543d1Sopenharmony_ci    }
43484543d1Sopenharmony_ci
44484543d1Sopenharmony_ci    static void TearDownTestCase()
45484543d1Sopenharmony_ci    {
46484543d1Sopenharmony_ci    }
47484543d1Sopenharmony_ci
48484543d1Sopenharmony_ci    virtual void SetUp()
49484543d1Sopenharmony_ci    {
50484543d1Sopenharmony_ci    }
51484543d1Sopenharmony_ci
52484543d1Sopenharmony_ci    virtual void TearDown()
53484543d1Sopenharmony_ci    {
54484543d1Sopenharmony_ci    }
55484543d1Sopenharmony_ci};
56484543d1Sopenharmony_ci
57484543d1Sopenharmony_ci/**
58484543d1Sopenharmony_ci * @tc.name: FFRTEnableRtg_test
59484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTEnableRtg interface are normal.
60484543d1Sopenharmony_ci * @tc.type: FUNC
61484543d1Sopenharmony_ci */
62484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTEnableRtgTest, TestSize.Level1)
63484543d1Sopenharmony_ci{
64484543d1Sopenharmony_ci    bool flag = false;
65484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTEnableRtg(flag));
66484543d1Sopenharmony_ci
67484543d1Sopenharmony_ci    flag = true;
68484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTEnableRtg(flag));
69484543d1Sopenharmony_ci}
70484543d1Sopenharmony_ci
71484543d1Sopenharmony_ci/**
72484543d1Sopenharmony_ci * @tc.name: FFRTAuthEnable_test
73484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthEnable interface are normal.
74484543d1Sopenharmony_ci * @tc.type: FUNC
75484543d1Sopenharmony_ci */
76484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthEnableTest, TestSize.Level1)
77484543d1Sopenharmony_ci{
78484543d1Sopenharmony_ci    unsigned int uid = getpid();
79484543d1Sopenharmony_ci    unsigned int uaFlag = 0x1fff;
80484543d1Sopenharmony_ci    unsigned int status = 3;
81484543d1Sopenharmony_ci
82484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTAuthEnable(uid, uaFlag, status));
83484543d1Sopenharmony_ci}
84484543d1Sopenharmony_ci
85484543d1Sopenharmony_ci/**
86484543d1Sopenharmony_ci * @tc.name: FFRTAuthSwitch_test
87484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthSwitch interface are normal.
88484543d1Sopenharmony_ci * @tc.type: FUNC
89484543d1Sopenharmony_ci */
90484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthSwitchTest, TestSize.Level1)
91484543d1Sopenharmony_ci{
92484543d1Sopenharmony_ci    unsigned int uid = getpid();
93484543d1Sopenharmony_ci    unsigned int rtgFlag = 0x1fff;
94484543d1Sopenharmony_ci    unsigned int qosFlag = 0x0003;
95484543d1Sopenharmony_ci    unsigned int status = 3;
96484543d1Sopenharmony_ci
97484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTAuthSwitch(uid, rtgFlag, qosFlag, status));
98484543d1Sopenharmony_ci}
99484543d1Sopenharmony_ci
100484543d1Sopenharmony_ci/**
101484543d1Sopenharmony_ci * @tc.name: FFRTAuthDelete_test
102484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthDelete interface are normal.
103484543d1Sopenharmony_ci * @tc.type: FUNC
104484543d1Sopenharmony_ci */
105484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthDeleteTest, TestSize.Level1)
106484543d1Sopenharmony_ci{
107484543d1Sopenharmony_ci    unsigned int uid = getpid();
108484543d1Sopenharmony_ci
109484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTAuthDelete(uid));
110484543d1Sopenharmony_ci}
111484543d1Sopenharmony_ci
112484543d1Sopenharmony_ci/**
113484543d1Sopenharmony_ci * @tc.name: FFRTAuthPause_test
114484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthPause interface are normal.
115484543d1Sopenharmony_ci * @tc.type: FUNC
116484543d1Sopenharmony_ci */
117484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthPauseTest, TestSize.Level1)
118484543d1Sopenharmony_ci{
119484543d1Sopenharmony_ci    unsigned int uid = getpid();
120484543d1Sopenharmony_ci    unsigned int uaFlag = 0x1fff;
121484543d1Sopenharmony_ci    unsigned int status = 3;
122484543d1Sopenharmony_ci    FFRTAuthEnable(uid, uaFlag, status);
123484543d1Sopenharmony_ci
124484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTAuthPause(uid));
125484543d1Sopenharmony_ci}
126484543d1Sopenharmony_ci
127484543d1Sopenharmony_ci/**
128484543d1Sopenharmony_ci * @tc.name: FFRTAuthGet_test
129484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTAuthGet interface are normal.
130484543d1Sopenharmony_ci * @tc.type: FUNC
131484543d1Sopenharmony_ci */
132484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTAuthGetTest, TestSize.Level1)
133484543d1Sopenharmony_ci{
134484543d1Sopenharmony_ci    unsigned int uid = getpid();
135484543d1Sopenharmony_ci    unsigned int uaFlag = 0x1fff;
136484543d1Sopenharmony_ci    unsigned int status = 3;
137484543d1Sopenharmony_ci
138484543d1Sopenharmony_ci    FFRTAuthEnable(uid, uaFlag, status);
139484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTAuthGet(uid, &uaFlag, &status));
140484543d1Sopenharmony_ci}
141484543d1Sopenharmony_ci
142484543d1Sopenharmony_ci/**
143484543d1Sopenharmony_ci * @tc.name: FFRTQosApply_test
144484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosApply interface are normal.
145484543d1Sopenharmony_ci * @tc.type: FUNC
146484543d1Sopenharmony_ci */
147484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosApplyTest, TestSize.Level1)
148484543d1Sopenharmony_ci{
149484543d1Sopenharmony_ci    unsigned int level = 1;
150484543d1Sopenharmony_ci
151484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTQosApply(level));
152484543d1Sopenharmony_ci}
153484543d1Sopenharmony_ci
154484543d1Sopenharmony_ci/**
155484543d1Sopenharmony_ci * @tc.name: FFRTQosApplyForOther_test
156484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosApplyForOther interface are normal.
157484543d1Sopenharmony_ci * @tc.type: FUNC
158484543d1Sopenharmony_ci */
159484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosApplyForOtherTest, TestSize.Level1)
160484543d1Sopenharmony_ci{
161484543d1Sopenharmony_ci    unsigned int level = 1;
162484543d1Sopenharmony_ci    int tid = GET_TID();
163484543d1Sopenharmony_ci
164484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTQosApplyForOther(level, tid));
165484543d1Sopenharmony_ci}
166484543d1Sopenharmony_ci
167484543d1Sopenharmony_ci/**
168484543d1Sopenharmony_ci * @tc.name: FFRTQosLeave_test
169484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosLeave interface are normal.
170484543d1Sopenharmony_ci * @tc.type: FUNC
171484543d1Sopenharmony_ci */
172484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosLeaveTest, TestSize.Level1)
173484543d1Sopenharmony_ci{
174484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTQosLeave());
175484543d1Sopenharmony_ci}
176484543d1Sopenharmony_ci
177484543d1Sopenharmony_ci/**
178484543d1Sopenharmony_ci * @tc.name: FFRTQosLeaveForOther_test
179484543d1Sopenharmony_ci * @tc.desc: Test whether the FFRTQosLeaveForOther interface are normal.
180484543d1Sopenharmony_ci * @tc.type: FUNC
181484543d1Sopenharmony_ci */
182484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, FFRTQosLeaveForOtherTest, TestSize.Level1)
183484543d1Sopenharmony_ci{
184484543d1Sopenharmony_ci    unsigned int level = 1;
185484543d1Sopenharmony_ci    int tid = GET_TID();
186484543d1Sopenharmony_ci    FFRTQosApplyForOther(level, tid);
187484543d1Sopenharmony_ci
188484543d1Sopenharmony_ci    EXPECT_EQ(0, FFRTQosLeaveForOther(tid));
189484543d1Sopenharmony_ci}
190484543d1Sopenharmony_ci
191484543d1Sopenharmony_ci/**
192484543d1Sopenharmony_ci * @tc.name: QosPolicyTest
193484543d1Sopenharmony_ci * @tc.desc: Test whether the QosPolicy interface are normal.
194484543d1Sopenharmony_ci * @tc.type: FUNC
195484543d1Sopenharmony_ci */
196484543d1Sopenharmony_ciHWTEST_F(QosInterfaceTest, QosPolicyTest, TestSize.Level1)
197484543d1Sopenharmony_ci{
198484543d1Sopenharmony_ci    struct QosPolicyData qp = {0, 0, 0, 0, 0};
199484543d1Sopenharmony_ci    struct QosPolicyDatas policyDatas = {0, 0, {qp}};
200484543d1Sopenharmony_ci
201484543d1Sopenharmony_ci    EXPECT_EQ(-1, QosPolicy(&policyDatas));
202484543d1Sopenharmony_ci}
203