1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include <thread>
18 #include <cstdio>
19 #include <cstdlib>
20 #include <unistd.h>
21 #include <sys/ioctl.h>
22 #include <fcntl.h>
23 #include <unistd.h>
24 #include <sys/syscall.h>
25 #include <linux/types.h>
26 #include "eu/qos_interface.h"
27 #include "ffrt_inner.h"
28 #include "common.h"
29 
30 #define GET_TID() syscall(SYS_gettid)
31 
32 using namespace testing;
33 #ifdef HWTEST_TESTING_EXT_ENABLE
34 using namespace testing::ext;
35 #endif
36 using namespace ffrt;
37 
38 class QosInterfaceTest : public testing::Test {
39 protected:
SetUpTestCase()40     static void SetUpTestCase()
41     {
42     }
43 
TearDownTestCase()44     static void TearDownTestCase()
45     {
46     }
47 
SetUp()48     virtual void SetUp()
49     {
50     }
51 
TearDown()52     virtual void TearDown()
53     {
54     }
55 };
56 
57 /**
58  * @tc.name: FFRTEnableRtg_test
59  * @tc.desc: Test whether the FFRTEnableRtg interface are normal.
60  * @tc.type: FUNC
61  */
HWTEST_F(QosInterfaceTest, FFRTEnableRtgTest, TestSize.Level1)62 HWTEST_F(QosInterfaceTest, FFRTEnableRtgTest, TestSize.Level1)
63 {
64     bool flag = false;
65     EXPECT_EQ(0, FFRTEnableRtg(flag));
66 
67     flag = true;
68     EXPECT_EQ(0, FFRTEnableRtg(flag));
69 }
70 
71 /**
72  * @tc.name: FFRTAuthEnable_test
73  * @tc.desc: Test whether the FFRTAuthEnable interface are normal.
74  * @tc.type: FUNC
75  */
HWTEST_F(QosInterfaceTest, FFRTAuthEnableTest, TestSize.Level1)76 HWTEST_F(QosInterfaceTest, FFRTAuthEnableTest, TestSize.Level1)
77 {
78     unsigned int uid = getpid();
79     unsigned int uaFlag = 0x1fff;
80     unsigned int status = 3;
81 
82     EXPECT_EQ(0, FFRTAuthEnable(uid, uaFlag, status));
83 }
84 
85 /**
86  * @tc.name: FFRTAuthSwitch_test
87  * @tc.desc: Test whether the FFRTAuthSwitch interface are normal.
88  * @tc.type: FUNC
89  */
HWTEST_F(QosInterfaceTest, FFRTAuthSwitchTest, TestSize.Level1)90 HWTEST_F(QosInterfaceTest, FFRTAuthSwitchTest, TestSize.Level1)
91 {
92     unsigned int uid = getpid();
93     unsigned int rtgFlag = 0x1fff;
94     unsigned int qosFlag = 0x0003;
95     unsigned int status = 3;
96 
97     EXPECT_EQ(0, FFRTAuthSwitch(uid, rtgFlag, qosFlag, status));
98 }
99 
100 /**
101  * @tc.name: FFRTAuthDelete_test
102  * @tc.desc: Test whether the FFRTAuthDelete interface are normal.
103  * @tc.type: FUNC
104  */
HWTEST_F(QosInterfaceTest, FFRTAuthDeleteTest, TestSize.Level1)105 HWTEST_F(QosInterfaceTest, FFRTAuthDeleteTest, TestSize.Level1)
106 {
107     unsigned int uid = getpid();
108 
109     EXPECT_EQ(0, FFRTAuthDelete(uid));
110 }
111 
112 /**
113  * @tc.name: FFRTAuthPause_test
114  * @tc.desc: Test whether the FFRTAuthPause interface are normal.
115  * @tc.type: FUNC
116  */
HWTEST_F(QosInterfaceTest, FFRTAuthPauseTest, TestSize.Level1)117 HWTEST_F(QosInterfaceTest, FFRTAuthPauseTest, TestSize.Level1)
118 {
119     unsigned int uid = getpid();
120     unsigned int uaFlag = 0x1fff;
121     unsigned int status = 3;
122     FFRTAuthEnable(uid, uaFlag, status);
123 
124     EXPECT_EQ(0, FFRTAuthPause(uid));
125 }
126 
127 /**
128  * @tc.name: FFRTAuthGet_test
129  * @tc.desc: Test whether the FFRTAuthGet interface are normal.
130  * @tc.type: FUNC
131  */
HWTEST_F(QosInterfaceTest, FFRTAuthGetTest, TestSize.Level1)132 HWTEST_F(QosInterfaceTest, FFRTAuthGetTest, TestSize.Level1)
133 {
134     unsigned int uid = getpid();
135     unsigned int uaFlag = 0x1fff;
136     unsigned int status = 3;
137 
138     FFRTAuthEnable(uid, uaFlag, status);
139     EXPECT_EQ(0, FFRTAuthGet(uid, &uaFlag, &status));
140 }
141 
142 /**
143  * @tc.name: FFRTQosApply_test
144  * @tc.desc: Test whether the FFRTQosApply interface are normal.
145  * @tc.type: FUNC
146  */
HWTEST_F(QosInterfaceTest, FFRTQosApplyTest, TestSize.Level1)147 HWTEST_F(QosInterfaceTest, FFRTQosApplyTest, TestSize.Level1)
148 {
149     unsigned int level = 1;
150 
151     EXPECT_EQ(0, FFRTQosApply(level));
152 }
153 
154 /**
155  * @tc.name: FFRTQosApplyForOther_test
156  * @tc.desc: Test whether the FFRTQosApplyForOther interface are normal.
157  * @tc.type: FUNC
158  */
HWTEST_F(QosInterfaceTest, FFRTQosApplyForOtherTest, TestSize.Level1)159 HWTEST_F(QosInterfaceTest, FFRTQosApplyForOtherTest, TestSize.Level1)
160 {
161     unsigned int level = 1;
162     int tid = GET_TID();
163 
164     EXPECT_EQ(0, FFRTQosApplyForOther(level, tid));
165 }
166 
167 /**
168  * @tc.name: FFRTQosLeave_test
169  * @tc.desc: Test whether the FFRTQosLeave interface are normal.
170  * @tc.type: FUNC
171  */
HWTEST_F(QosInterfaceTest, FFRTQosLeaveTest, TestSize.Level1)172 HWTEST_F(QosInterfaceTest, FFRTQosLeaveTest, TestSize.Level1)
173 {
174     EXPECT_EQ(0, FFRTQosLeave());
175 }
176 
177 /**
178  * @tc.name: FFRTQosLeaveForOther_test
179  * @tc.desc: Test whether the FFRTQosLeaveForOther interface are normal.
180  * @tc.type: FUNC
181  */
HWTEST_F(QosInterfaceTest, FFRTQosLeaveForOtherTest, TestSize.Level1)182 HWTEST_F(QosInterfaceTest, FFRTQosLeaveForOtherTest, TestSize.Level1)
183 {
184     unsigned int level = 1;
185     int tid = GET_TID();
186     FFRTQosApplyForOther(level, tid);
187 
188     EXPECT_EQ(0, FFRTQosLeaveForOther(tid));
189 }
190 
191 /**
192  * @tc.name: QosPolicyTest
193  * @tc.desc: Test whether the QosPolicy interface are normal.
194  * @tc.type: FUNC
195  */
HWTEST_F(QosInterfaceTest, QosPolicyTest, TestSize.Level1)196 HWTEST_F(QosInterfaceTest, QosPolicyTest, TestSize.Level1)
197 {
198     struct QosPolicyData qp = {0, 0, 0, 0, 0};
199     struct QosPolicyDatas policyDatas = {0, 0, {qp}};
200 
201     EXPECT_EQ(-1, QosPolicy(&policyDatas));
202 }
203