• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 <cstdio>
17 #include <unistd.h>
18 #include "gtest/gtest.h"
19 #include "qos.h"
20 
21 namespace OHOS {
22 namespace QOS {
23 using namespace testing;
24 using namespace testing::ext;
25 using namespace OHOS::QOS;
26 
27 class QosTest : public testing::Test {
28 public:
29     static void SetUpTestCase();
30     static void TearDownTestCase();
31     void SetUp();
32     void TearDown();
33 };
34 
SetUpTestCase()35 void QosTest::SetUpTestCase()
36 {
37 }
38 
TearDownTestCase()39 void QosTest::TearDownTestCase()
40 {
41 }
42 
SetUp()43 void QosTest::SetUp()
44 {
45 }
46 
TearDown()47 void QosTest::TearDown()
48 {
49 }
50 
51 /**
52  * @tc.name: SetThreadQosTest
53  * @tc.desc: Verify the Set QosLevel function.
54  * @tc.type: FUNC
55  */
56 HWTEST_F(QosTest, SetThreadQosTest0, TestSize.Level0)
57 {
58     int val = SetThreadQos(QosLevel::QOS_BACKGROUND);
59     EXPECT_EQ(val, 0);
60 }
61 
62 HWTEST_F(QosTest, SetThreadQosTest1, TestSize.Level0)
63 {
64     int val = SetThreadQos(QosLevel::QOS_UTILITY);
65     EXPECT_EQ(val, 0);
66 }
67 
68 HWTEST_F(QosTest, SetThreadQosTest2, TestSize.Level0)
69 {
70     int val = SetThreadQos(QosLevel::QOS_DEFAULT);
71     EXPECT_EQ(val, 0);
72 }
73 
74 HWTEST_F(QosTest, SetThreadQosTest3, TestSize.Level0)
75 {
76     int val = SetThreadQos(QosLevel::QOS_USER_INITIATED);
77     EXPECT_EQ(val, 0);
78 }
79 
80 HWTEST_F(QosTest, SetThreadQosTest4, TestSize.Level0)
81 {
82     int val = SetThreadQos(QosLevel::QOS_DEADLINE_REQUEST);
83     EXPECT_EQ(val, 0);
84 }
85 
86 HWTEST_F(QosTest, SetThreadQosTest5, TestSize.Level0)
87 {
88     int val = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE);
89     EXPECT_EQ(val, 0);
90 }
91 
92 HWTEST_F(QosTest, SetThreadQosTest6, TestSize.Level1)
93 {
94     int val = SetThreadQos(QosLevel::QOS_KEY_BACKGROUND);
95     EXPECT_EQ(val, 0);
96 }
97 
98 HWTEST_F(QosTest, SetThreadQosTest7, TestSize.Level1)
99 {
100     int val = SetThreadQos(QosLevel::QOS_MAX);
101     EXPECT_EQ(val, -1);
102 }
103 
104 HWTEST_F(QosTest, SetThreadQosTestExt, TestSize.Level1)
105 {
106     int val = SetThreadQos(QosLevel(-1));
107     EXPECT_EQ(val, -1);
108     val = SetThreadQos(QosLevel(6));
109     EXPECT_EQ(val, 0);
110     val = SetThreadQos(QosLevel(1024));
111     EXPECT_EQ(val, -1);
112 }
113 
114 /**
115  * @tc.name: SetQosForOtherThreadTest
116  * @tc.desc: Verify the Set QosLevel For Other function.
117  * @tc.type: FUNC
118  */
119 HWTEST_F(QosTest, SetQosForOtherThreadTest0, TestSize.Level0)
120 {
121     int val = SetQosForOtherThread(QosLevel::QOS_BACKGROUND, gettid());
122     EXPECT_EQ(val, 0);
123 }
124 
125 HWTEST_F(QosTest, SetQosForOtherThreadTest1, TestSize.Level0)
126 {
127     int val = SetQosForOtherThread(QosLevel::QOS_UTILITY, gettid());
128     EXPECT_EQ(val, 0);
129 }
130 
131 HWTEST_F(QosTest, SetQosForOtherThreadTest2, TestSize.Level0)
132 {
133     int val = SetQosForOtherThread(QosLevel::QOS_DEFAULT, gettid());
134     EXPECT_EQ(val, 0);
135 }
136 
137 HWTEST_F(QosTest, SetQosForOtherThreadTest3, TestSize.Level0)
138 {
139     int val = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid());
140     EXPECT_EQ(val, 0);
141 }
142 
143 HWTEST_F(QosTest, SetQosForOtherThreadTest4, TestSize.Level0)
144 {
145     int val = SetQosForOtherThread(QosLevel::QOS_DEADLINE_REQUEST, gettid());
146     EXPECT_EQ(val, 0);
147 }
148 
149 HWTEST_F(QosTest, SetQosForOtherThreadTest5, TestSize.Level0)
150 {
151     int val = SetQosForOtherThread(QosLevel::QOS_USER_INTERACTIVE, gettid());
152     EXPECT_EQ(val, 0);
153 }
154 
155 HWTEST_F(QosTest, SetQosForOtherThreadTest6, TestSize.Level1)
156 {
157     int val = SetQosForOtherThread(QosLevel::QOS_KEY_BACKGROUND, gettid());
158     EXPECT_EQ(val, 0);
159 }
160 
161 HWTEST_F(QosTest, SetQosForOtherThreadTest7, TestSize.Level1)
162 {
163     int val = SetQosForOtherThread(QosLevel::QOS_MAX, gettid());
164     EXPECT_EQ(val, -1);
165 }
166 
167 HWTEST_F(QosTest, SetQosForOtherThreadTestExt, TestSize.Level1)
168 {
169     int val = SetQosForOtherThread(QosLevel(-1), gettid());
170     EXPECT_EQ(val, -1);
171     val = SetQosForOtherThread(QosLevel(6), gettid());
172     EXPECT_EQ(val, 0);
173     val = SetQosForOtherThread(QosLevel(1024), gettid());
174     EXPECT_EQ(val, -1);
175 }
176 
177 /**
178  * @tc.name: ResetThreadQosTest
179  * @tc.desc: Verify the Reset QosLevel function.
180  * @tc.type: FUNC
181  */
182 HWTEST_F(QosTest, ResetThreadQosTest0, TestSize.Level0)
183 {
184     int val = SetThreadQos(QosLevel::QOS_BACKGROUND);
185     EXPECT_EQ(val, 0);
186     val = ResetThreadQos();
187     EXPECT_EQ(val, 0);
188 }
189 
190 HWTEST_F(QosTest, ResetThreadQosTest1, TestSize.Level0)
191 {
192     int val = SetThreadQos(QosLevel::QOS_UTILITY);
193     EXPECT_EQ(val, 0);
194     val = ResetThreadQos();
195     EXPECT_EQ(val, 0);
196 }
197 
198 HWTEST_F(QosTest, ResetThreadQosTest2, TestSize.Level0)
199 {
200     int val = SetThreadQos(QosLevel::QOS_DEFAULT);
201     EXPECT_EQ(val, 0);
202     val = ResetThreadQos();
203     EXPECT_EQ(val, 0);
204 }
205 
206 HWTEST_F(QosTest, ResetThreadQosTest3, TestSize.Level0)
207 {
208     int val = SetThreadQos(QosLevel::QOS_USER_INITIATED);
209     EXPECT_EQ(val, 0);
210     val = ResetThreadQos();
211     EXPECT_EQ(val, 0);
212 }
213 
214 HWTEST_F(QosTest, ResetThreadQosTest4, TestSize.Level0)
215 {
216     int val = SetThreadQos(QosLevel::QOS_DEADLINE_REQUEST);
217     EXPECT_EQ(val, 0);
218     val = ResetThreadQos();
219     EXPECT_EQ(val, 0);
220 }
221 
222 HWTEST_F(QosTest, ResetThreadQosTest5, TestSize.Level0)
223 {
224     int val = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE);
225     EXPECT_EQ(val, 0);
226     val = ResetThreadQos();
227     EXPECT_EQ(val, 0);
228 }
229 
230 HWTEST_F(QosTest, ResetThreadQosTest6, TestSize.Level1)
231 {
232     int val = SetThreadQos(QosLevel::QOS_KEY_BACKGROUND);
233     EXPECT_EQ(val, 0);
234     val = ResetThreadQos();
235     EXPECT_EQ(val, 0);
236 }
237 
238 HWTEST_F(QosTest, ResetThreadQosTest7, TestSize.Level1)
239 {
240     int val = SetThreadQos(QosLevel::QOS_MAX);
241     EXPECT_EQ(val, -1);
242     val = ResetThreadQos();
243     EXPECT_EQ(val, -1);
244 }
245 
246 HWTEST_F(QosTest, ResetThreadQosTestExt, TestSize.Level1)
247 {
248     int val = SetThreadQos(QosLevel(6));
249     EXPECT_EQ(val, 0);
250     val = ResetThreadQos();
251     EXPECT_EQ(val, 0);
252 
253     val = SetThreadQos(QosLevel(-1));
254     EXPECT_EQ(val, -1);
255     val = ResetThreadQos();
256     EXPECT_EQ(val, -1);
257 
258     val = SetThreadQos(QosLevel(1024));
259     EXPECT_EQ(val, -1);
260     val = ResetThreadQos();
261     EXPECT_EQ(val, -1);
262 }
263 
264 /**
265  * @tc.name: ResetQosForOtherThreadTest
266  * @tc.desc: Verify the Reset QosLevel For Other function.
267  * @tc.type: FUNC
268  */
269 HWTEST_F(QosTest, ResetQosForOtherThreadTest0, TestSize.Level1)
270 {
271     int val = SetQosForOtherThread(QosLevel::QOS_BACKGROUND, gettid());
272     EXPECT_EQ(val, 0);
273     val = ResetQosForOtherThread(gettid());
274     EXPECT_EQ(val, 0);
275 }
276 
277 HWTEST_F(QosTest, ResetQosForOtherThreadTest1, TestSize.Level1)
278 {
279     int val = SetQosForOtherThread(QosLevel::QOS_UTILITY, gettid());
280     EXPECT_EQ(val, 0);
281     val = ResetQosForOtherThread(gettid());
282     EXPECT_EQ(val, 0);
283 }
284 
285 HWTEST_F(QosTest, ResetQosForOtherThreadTest2, TestSize.Level1)
286 {
287     int val = SetQosForOtherThread(QosLevel::QOS_DEFAULT, gettid());
288     EXPECT_EQ(val, 0);
289     val = ResetQosForOtherThread(gettid());
290     EXPECT_EQ(val, 0);
291 }
292 
293 HWTEST_F(QosTest, ResetQosForOtherThreadTest3, TestSize.Level1)
294 {
295     int val = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid());
296     EXPECT_EQ(val, 0);
297     val = ResetQosForOtherThread(gettid());
298     EXPECT_EQ(val, 0);
299 }
300 
301 HWTEST_F(QosTest, ResetQosForOtherThreadTest4, TestSize.Level1)
302 {
303     int val = SetQosForOtherThread(QosLevel::QOS_DEADLINE_REQUEST, gettid());
304     EXPECT_EQ(val, 0);
305     val = ResetQosForOtherThread(gettid());
306     EXPECT_EQ(val, 0);
307 }
308 
309 HWTEST_F(QosTest, ResetQosForOtherThreadTest5, TestSize.Level1)
310 {
311     int val = SetQosForOtherThread(QosLevel::QOS_USER_INTERACTIVE, gettid());
312     EXPECT_EQ(val, 0);
313     val = ResetQosForOtherThread(gettid());
314     EXPECT_EQ(val, 0);
315 }
316 
317 HWTEST_F(QosTest, ResetQosForOtherThreadTest6, TestSize.Level0)
318 {
319     int val = SetQosForOtherThread(QosLevel::QOS_KEY_BACKGROUND, gettid());
320     EXPECT_EQ(val, 0);
321     val = ResetQosForOtherThread(gettid());
322     EXPECT_EQ(val, 0);
323 }
324 
325 HWTEST_F(QosTest, ResetQosForOtherThreadTest7, TestSize.Level0)
326 {
327     int val = SetQosForOtherThread(QosLevel::QOS_MAX, gettid());
328     EXPECT_EQ(val, -1);
329     val = ResetQosForOtherThread(gettid());
330     EXPECT_EQ(val, -1);
331 }
332 
333 HWTEST_F(QosTest, ResetQosForOtherThreadTestExt, TestSize.Level0)
334 {
335     int val = SetQosForOtherThread(QosLevel(6), gettid());
336     EXPECT_EQ(val, 0);
337     val = ResetQosForOtherThread(gettid());
338     EXPECT_EQ(val, 0);
339 
340     val = SetQosForOtherThread(QosLevel(-1), gettid());
341     EXPECT_EQ(val, -1);
342     val = ResetQosForOtherThread(gettid());
343     EXPECT_EQ(val, -1);
344 
345     val = SetQosForOtherThread(QosLevel(1024), gettid());
346     EXPECT_EQ(val, -1);
347     val = ResetQosForOtherThread(gettid());
348     EXPECT_EQ(val, -1);
349 }
350 
351 /**
352  * @tc.name: GetThreadQosTest
353  * @tc.desc: Verify the Get QosLevel function.
354  * @tc.type: FUNC
355  */
356 HWTEST_F(QosTest, GetThreadQosTest0, TestSize.Level1)
357 {
358     int val = SetThreadQos(QosLevel::QOS_BACKGROUND);
359     EXPECT_EQ(val, 0);
360     enum QosLevel level;
361     val = GetThreadQos(level);
362     EXPECT_EQ(val, 0);
363     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_BACKGROUND));
364 }
365 
366 HWTEST_F(QosTest, GetThreadQosTest1, TestSize.Level1)
367 {
368     int val = SetThreadQos(QosLevel::QOS_UTILITY);
369     EXPECT_EQ(val, 0);
370     enum QosLevel level;
371     val = GetThreadQos(level);
372     EXPECT_EQ(val, 0);
373     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_UTILITY));
374 }
375 
376 HWTEST_F(QosTest, GetThreadQosTest2, TestSize.Level1)
377 {
378     int val = SetThreadQos(QosLevel::QOS_DEFAULT);
379     EXPECT_EQ(val, 0);
380     enum QosLevel level;
381     val = GetThreadQos(level);
382     EXPECT_EQ(val, 0);
383     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_DEFAULT));
384 }
385 
386 HWTEST_F(QosTest, GetThreadQosTest3, TestSize.Level1)
387 {
388     int val = SetThreadQos(QosLevel::QOS_USER_INITIATED);
389     EXPECT_EQ(val, 0);
390     enum QosLevel level;
391     val = GetThreadQos(level);
392     EXPECT_EQ(val, 0);
393     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INITIATED));
394 }
395 
396 HWTEST_F(QosTest, GetThreadQosTest4, TestSize.Level1)
397 {
398     int val = SetThreadQos(QosLevel::QOS_DEADLINE_REQUEST);
399     EXPECT_EQ(val, 0);
400     enum QosLevel level;
401     val = GetThreadQos(level);
402     EXPECT_EQ(val, 0);
403     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_DEADLINE_REQUEST));
404 }
405 
406 HWTEST_F(QosTest, GetThreadQosTest5, TestSize.Level1)
407 {
408     int val = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE);
409     EXPECT_EQ(val, 0);
410     enum QosLevel level;
411     val = GetThreadQos(level);
412     EXPECT_EQ(val, 0);
413     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INTERACTIVE));
414 }
415 
416 HWTEST_F(QosTest, GetThreadQosTest6, TestSize.Level1)
417 {
418     int val = SetThreadQos(QosLevel::QOS_KEY_BACKGROUND);
419     EXPECT_EQ(val, 0);
420     enum QosLevel level;
421     val = GetThreadQos(level);
422     EXPECT_EQ(val, 0);
423     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_KEY_BACKGROUND));
424 }
425 
426 HWTEST_F(QosTest, GetThreadQosTestExt, TestSize.Level1)
427 {
428     int val = SetThreadQos(QosLevel::QOS_MAX);
429     EXPECT_NE(val, 0);
430     enum QosLevel level2;
431     val = GetThreadQos(level2);
432     EXPECT_EQ(val, 0);
433     EXPECT_NE(static_cast<unsigned int>(level2), static_cast<unsigned int>(QosLevel::QOS_MAX));
434 
435     val = SetThreadQos((QosLevel)-1);
436     EXPECT_NE(val, 0);
437     enum QosLevel level3;
438     val = GetThreadQos(level3);
439     EXPECT_EQ(val, 0);
440     EXPECT_NE(static_cast<unsigned int>(level3), static_cast<unsigned int>((QosLevel)-1));
441 
442     val = SetThreadQos((QosLevel)1024);
443     EXPECT_NE(val, 0);
444     enum QosLevel level4;
445     val = GetThreadQos(level4);
446     EXPECT_EQ(val, 0);
447     EXPECT_NE(static_cast<unsigned int>(level4), static_cast<unsigned int>((QosLevel)1024));
448 }
449 
450 /**
451  * @tc.name: GetQosForOtherThread
452  * @tc.desc: Verify the Get QosLevel For Other function.
453  * @tc.type: FUNC
454  */
455 HWTEST_F(QosTest, GetQosForOtherThreadTest0, TestSize.Level1)
456 {
457     int val = SetQosForOtherThread(QosLevel::QOS_BACKGROUND, gettid());
458     EXPECT_EQ(val, 0);
459     enum QosLevel level;
460     val = GetQosForOtherThread(level, gettid());
461     EXPECT_EQ(val, 0);
462     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_BACKGROUND));
463 }
464 
465 HWTEST_F(QosTest, GetQosForOtherThreadTest1, TestSize.Level1)
466 {
467     int val = SetQosForOtherThread(QosLevel::QOS_UTILITY, gettid());
468     EXPECT_EQ(val, 0);
469     enum QosLevel level;
470     val = GetQosForOtherThread(level, gettid());
471     EXPECT_EQ(val, 0);
472     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_UTILITY));
473 }
474 
475 HWTEST_F(QosTest, GetQosForOtherThreadTest2, TestSize.Level1)
476 {
477     int val = SetQosForOtherThread(QosLevel::QOS_DEFAULT, gettid());
478     EXPECT_EQ(val, 0);
479     enum QosLevel level;
480     val = GetQosForOtherThread(level, gettid());
481     EXPECT_EQ(val, 0);
482     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_DEFAULT));
483 }
484 
485 HWTEST_F(QosTest, GetQosForOtherThreadTest3, TestSize.Level1)
486 {
487     int val = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid());
488     EXPECT_EQ(val, 0);
489     enum QosLevel level;
490     val = GetQosForOtherThread(level, gettid());
491     EXPECT_EQ(val, 0);
492     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INITIATED));
493 }
494 
495 HWTEST_F(QosTest, GetQosForOtherThreadTest4, TestSize.Level1)
496 {
497     int val = SetQosForOtherThread(QosLevel::QOS_DEADLINE_REQUEST, gettid());
498     EXPECT_EQ(val, 0);
499     enum QosLevel level;
500     val = GetQosForOtherThread(level, gettid());
501     EXPECT_EQ(val, 0);
502     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_DEADLINE_REQUEST));
503 }
504 
505 HWTEST_F(QosTest, GetQosForOtherThreadTest5, TestSize.Level1)
506 {
507     int val = SetQosForOtherThread(QosLevel::QOS_USER_INTERACTIVE, gettid());
508     EXPECT_EQ(val, 0);
509     enum QosLevel level;
510     val = GetQosForOtherThread(level, gettid());
511     EXPECT_EQ(val, 0);
512     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INTERACTIVE));
513 }
514 
515 HWTEST_F(QosTest, GetQosForOtherThreadTest6, TestSize.Level1)
516 {
517     int val = SetQosForOtherThread(QosLevel::QOS_KEY_BACKGROUND, gettid());
518     EXPECT_EQ(val, 0);
519     enum QosLevel level;
520     val = GetQosForOtherThread(level, gettid());
521     EXPECT_EQ(val, 0);
522     EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_KEY_BACKGROUND));
523 }
524 
525 HWTEST_F(QosTest, GetQosForOtherThreadTestExt, TestSize.Level1)
526 {
527     int val = ResetThreadQos();
528     EXPECT_EQ(val, 0);
529     enum QosLevel level;
530     val = GetThreadQos(level);
531     EXPECT_EQ(val, -1);
532 }
533 } // QOS
534 } // OHOS