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 <cstring>
17 #include <sys/utsname.h>
18
19 #include "gtest/gtest.h"
20
21 #include "qos_interface.h"
22
23 namespace OHOS {
24 namespace FFRT_TEST {
25 using namespace testing;
26 using namespace testing::ext;
27 using namespace OHOS::FFRT_TEST;
28 using namespace std;
29
30 class QosInterfaceTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp();
35 void TearDown();
36 bool IsLinuxOs();
37 };
38
IsLinuxOs()39 bool QosInterfaceTest::IsLinuxOs()
40 {
41 struct utsname nameData;
42 uname(&nameData);
43 int cmpNum = 5;
44 return strncmp(nameData.sysname, "Linux", cmpNum) == 0 ? true : false;
45 }
46
SetUpTestCase()47 void QosInterfaceTest::SetUpTestCase()
48 {
49 }
50
TearDownTestCase()51 void QosInterfaceTest::TearDownTestCase()
52 {
53 }
54
SetUp()55 void QosInterfaceTest::SetUp()
56 {
57 }
58
TearDown()59 void QosInterfaceTest::TearDown()
60 {
61 }
62
63 extern "C" {
64 /**
65 * @tc.name: EnableRtgTest
66 * @tc.desc: Test whether the OnRemoteRequest interface are normal.
67 * @tc.type: FUNC
68 */
69 HWTEST_F(QosInterfaceTest, EnableRtgTest, TestSize.Level1)
70 {
71 bool flag = true;
72 int val = EnableRtg(flag);
73 EXPECT_EQ(val, 0);
74 }
75
76 /**
77 * @tc.name: QosApplyTest
78 * @tc.desc: Test whether the QosApply interface are normal.
79 * @tc.type: FUNC
80 */
81 HWTEST_F(QosInterfaceTest, QosApplyTest1, TestSize.Level1)
82 {
83 unsigned int level = 1;
84 int val = -1;
85 val = QosApply(level);
86 #if defined(ARM64_TEST) && ARM64_TEST
87 EXPECT_EQ(val, 0);
88 #else
89 (void)val;
90 #endif
91 }
92
93 /**
94 * @tc.name: QosApplyFuncTest
95 * @tc.desc: Test whether the QosApply interface are normal.
96 * @tc.type: FUNC
97 */
98 HWTEST_F(QosInterfaceTest, QosApplyFuncTest0, TestSize.Level0)
99 {
100 unsigned int level = 0;
101 int val = QosApply(level);
102 EXPECT_EQ(val, 0);
103 }
104
105 HWTEST_F(QosInterfaceTest, QosApplyFuncTest1, TestSize.Level0)
106 {
107 unsigned int level = 1;
108 int val = QosApply(level);
109 EXPECT_EQ(val, 0);
110 }
111
112 HWTEST_F(QosInterfaceTest, QosApplyFuncTest2, TestSize.Level0)
113 {
114 unsigned int level = 2;
115 int val = QosApply(level);
116 EXPECT_EQ(val, 0);
117 }
118
119 HWTEST_F(QosInterfaceTest, QosApplyFuncTest3, TestSize.Level0)
120 {
121 unsigned int level = 3;
122 int val = QosApply(level);
123 EXPECT_EQ(val, 0);
124 }
125
126 HWTEST_F(QosInterfaceTest, QosApplyFuncTest4, TestSize.Level0)
127 {
128 unsigned int level = 4;
129 int val = QosApply(level);
130 EXPECT_EQ(val, 0);
131 }
132
133 HWTEST_F(QosInterfaceTest, QosApplyFuncTest5, TestSize.Level0)
134 {
135 unsigned int level = 5;
136 int val = QosApply(level);
137 EXPECT_EQ(val, 0);
138 }
139
140 HWTEST_F(QosInterfaceTest, QosApplyFuncTest6, TestSize.Level1)
141 {
142 unsigned int level = 6;
143 int val = QosApply(level);
144 EXPECT_EQ(val, 0);
145 }
146
147
148 HWTEST_F(QosInterfaceTest, QosApplyFuncTestExt, TestSize.Level1)
149 {
150 unsigned int level = 7;
151 int val = QosApply(level);
152 EXPECT_EQ(val, -1);
153
154 level = 1024;
155 val = QosApply(level);
156 EXPECT_EQ(val, -1);
157
158 level = -1;
159 val = QosApply(level);
160 EXPECT_EQ(val, -1);
161 }
162
163 /**
164 * @tc.name: QosApplyForOtherTest
165 * @tc.desc: Test whether the QosApplyForOther interface are normal.
166 * @tc.type: FUNC
167 */
168 HWTEST_F(QosInterfaceTest, QosApplyForOtherTest1, TestSize.Level1)
169 {
170 unsigned int level = 1;
171 int tid = gettid();
172 int val = -1;
173 val = QosApplyForOther(level, tid);
174 #if defined(ARM64_TEST) && ARM64_TEST
175 EXPECT_EQ(val, 0);
176 #else
177 (void)val;
178 #endif
179 }
180
181 /**
182 * @tc.name: QosApplyForOtherFuncTest
183 * @tc.desc: Test whether the QosApplyForOther interface are normal.
184 * @tc.type: FUNC
185 */
186 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest0, TestSize.Level0)
187 {
188 unsigned int level = 0;
189 int tid = gettid();
190 int val = QosApplyForOther(level, tid);
191 EXPECT_EQ(val, 0);
192 }
193
194 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest1, TestSize.Level0)
195 {
196 unsigned int level = 1;
197 int tid = gettid();
198 int val = QosApplyForOther(level, tid);
199 EXPECT_EQ(val, 0);
200 }
201
202 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest2, TestSize.Level0)
203 {
204 unsigned int level = 2;
205 int tid = gettid();
206 int val = QosApplyForOther(level, tid);
207 EXPECT_EQ(val, 0);
208 }
209
210 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest3, TestSize.Level0)
211 {
212 unsigned int level = 3;
213 int tid = gettid();
214 int val = QosApplyForOther(level, tid);
215 EXPECT_EQ(val, 0);
216 }
217
218 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest4, TestSize.Level0)
219 {
220 unsigned int level = 4;
221 int tid = gettid();
222 int val = QosApplyForOther(level, tid);
223 EXPECT_EQ(val, 0);
224 }
225
226 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest5, TestSize.Level0)
227 {
228 unsigned int level = 5;
229 int tid = gettid();
230 int val = QosApplyForOther(level, tid);
231 EXPECT_EQ(val, 0);
232 }
233
234 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTest6, TestSize.Level1)
235 {
236 unsigned int level = 6;
237 int tid = gettid();
238 int val = QosApplyForOther(level, tid);
239 EXPECT_EQ(val, 0);
240 }
241
242 HWTEST_F(QosInterfaceTest, QosApplyForOtherFuncTestExt, TestSize.Level1)
243 {
244 unsigned int level = 7;
245 int tid = gettid();
246 int val = QosApplyForOther(level, tid);
247 EXPECT_EQ(val, -1);
248
249 level = 1024;
250 val = QosApplyForOther(level, tid);
251 EXPECT_EQ(val, -1);
252
253 level = -1;
254 val = QosApplyForOther(level, tid);
255 EXPECT_EQ(val, -1);
256 }
257
258 /**
259 * @tc.name: QosLeaveTest
260 * @tc.desc: Test whether the QosLeave interface are normal.
261 * @tc.type: FUNC
262 */
263 HWTEST_F(QosInterfaceTest, QosLeaveTest, TestSize.Level1)
264 {
265 int val = -1;
266 val = QosLeave();
267 #if defined(ARM64_TEST) && ARM64_TEST
268 EXPECT_EQ(val, 0);
269 #else
270 (void)val;
271 #endif
272 }
273
274 /**
275 * @tc.name: QosLeaveFuncTest
276 * @tc.desc: Test whether the QosLeave interface are normal.
277 * @tc.type: FUNC
278 */
279 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt0, TestSize.Level0)
280 {
281 int level = 0;
282 int val = QosApply(level);
283 EXPECT_EQ(val, 0);
284 val = QosLeave();
285 EXPECT_EQ(val, 0);
286 }
287
288 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt1, TestSize.Level0)
289 {
290 int level = 1;
291 int val = QosApply(level);
292 EXPECT_EQ(val, 0);
293 val = QosLeave();
294 EXPECT_EQ(val, 0);
295 }
296
297 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt2, TestSize.Level0)
298 {
299 int level = 2;
300 int val = QosApply(level);
301 EXPECT_EQ(val, 0);
302 val = QosLeave();
303 EXPECT_EQ(val, 0);
304 }
305
306 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt3, TestSize.Level0)
307 {
308 int level = 3;
309 int val = QosApply(level);
310 EXPECT_EQ(val, 0);
311 val = QosLeave();
312 EXPECT_EQ(val, 0);
313 }
314
315 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt4, TestSize.Level0)
316 {
317 int level = 4;
318 int val = QosApply(level);
319 EXPECT_EQ(val, 0);
320 val = QosLeave();
321 EXPECT_EQ(val, 0);
322 }
323
324 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt5, TestSize.Level0)
325 {
326 int level = 5;
327 int val = QosApply(level);
328 EXPECT_EQ(val, 0);
329 val = QosLeave();
330 EXPECT_EQ(val, 0);
331 }
332
333 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt6, TestSize.Level1)
334 {
335 int level = 6;
336 int val = QosApply(level);
337 EXPECT_EQ(val, 0);
338 val = QosLeave();
339 EXPECT_EQ(val, 0);
340 }
341
342 HWTEST_F(QosInterfaceTest, QosLeaveFuncTestExt, TestSize.Level1)
343 {
344 int val = -1;
345 val = QosApply(7);
346 EXPECT_EQ(val, -1);
347 val = QosLeave();
348 EXPECT_EQ(val, -1);
349
350 val = QosApply(1024);
351 EXPECT_EQ(val, -1);
352 val = QosLeave();
353 EXPECT_EQ(val, -1);
354
355 val = QosApply(-1);
356 EXPECT_EQ(val, -1);
357 val = QosLeave();
358 EXPECT_EQ(val, -1);
359 }
360
361 /**
362 * @tc.name: QosLeaveForOtherTest
363 * @tc.desc: Test whether the QosLeaveForOther interface are normal.
364 * @tc.type: FUNC
365 */
366 HWTEST_F(QosInterfaceTest, QosLeaveForOtherTest, TestSize.Level1)
367 {
368 int val = -1;
369 int tid = gettid();
370 int level = 1;
371 val = QosApplyForOther(level, tid);
372 val = QosLeaveForOther(tid);
373 #if defined(ARM64_TEST) && ARM64_TEST
374 EXPECT_EQ(val, 0);
375 #else
376 (void)val;
377 #endif
378 }
379
380 /**
381 * @tc.name: QosLeaveForOtherFuncTest
382 * @tc.desc: Test whether the QosLeaveForOther interface are normal.
383 * @tc.type: FUNC
384 */
385 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest0, TestSize.Level0)
386 {
387 int level = 0;
388 int tid = gettid();
389 int val = QosApplyForOther(level, tid);
390 EXPECT_EQ(val, 0);
391 val = QosLeaveForOther(tid);
392 EXPECT_EQ(val, 0);
393 }
394
395 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest1, TestSize.Level0)
396 {
397 int level = 1;
398 int tid = gettid();
399 int val = QosApplyForOther(level, tid);
400 EXPECT_EQ(val, 0);
401 val = QosLeaveForOther(tid);
402 EXPECT_EQ(val, 0);
403 }
404
405 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest2, TestSize.Level0)
406 {
407 int level = 2;
408 int tid = gettid();
409 int val = QosApplyForOther(level, tid);
410 EXPECT_EQ(val, 0);
411 val = QosLeaveForOther(tid);
412 EXPECT_EQ(val, 0);
413 }
414
415 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest3, TestSize.Level0)
416 {
417 int level = 3;
418 int tid = gettid();
419 int val = QosApplyForOther(level, tid);
420 EXPECT_EQ(val, 0);
421 val = QosLeaveForOther(tid);
422 EXPECT_EQ(val, 0);
423 }
424
425 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest4, TestSize.Level0)
426 {
427 int level = 4;
428 int tid = gettid();
429 int val = QosApplyForOther(level, tid);
430 EXPECT_EQ(val, 0);
431 val = QosLeaveForOther(tid);
432 EXPECT_EQ(val, 0);
433 }
434
435 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest5, TestSize.Level0)
436 {
437 int level = 5;
438 int tid = gettid();
439 int val = QosApplyForOther(level, tid);
440 EXPECT_EQ(val, 0);
441 val = QosLeaveForOther(tid);
442 EXPECT_EQ(val, 0);
443 }
444
445 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest6, TestSize.Level1)
446 {
447 int level = 6;
448 int tid = gettid();
449 int val = QosApplyForOther(level, tid);
450 EXPECT_EQ(val, 0);
451 val = QosLeaveForOther(tid);
452 EXPECT_EQ(val, 0);
453 }
454
455 HWTEST_F(QosInterfaceTest, QosLeaveForOtherFuncTest, TestSize.Level1)
456 {
457 int level = 7;
458 int tid = gettid();
459 int val = QosApplyForOther(level, tid);
460 EXPECT_EQ(val, -1);
461 val = QosLeaveForOther(tid);
462 EXPECT_EQ(val, -1);
463
464 level = 1024;
465 tid = gettid();
466 val = QosApplyForOther(level, tid);
467 EXPECT_EQ(val, -1);
468 val = QosLeaveForOther(tid);
469 EXPECT_EQ(val, -1);
470
471 level = -1;
472 tid = gettid();
473 val = QosApplyForOther(level, tid);
474 EXPECT_EQ(val, -1);
475 val = QosLeaveForOther(tid);
476 EXPECT_EQ(val, -1);
477 }
478
479 /**
480 * @tc.name: QosPolicyTest
481 * @tc.desc: Test whether the QosPolicy interface are normal.
482 * @tc.type: FUNC
483 */
484
485 static struct QosPolicyDatas g_defaultQosPolicy = {
486 .policyType = QOS_POLICY_DEFAULT,
487 .policyFlag = QOS_FLAG_ALL,
488 .policys = {
489 {0, 0, 0, 1024, 0},
490 {0, 0, 0, 1024, 0},
491 {0, 0, 0, 1024, 0},
492 {0, 0, 0, 1024, 0},
493 {0, 0, 0, 1024, 0},
494 {0, 0, 0, 1024, 0},
495 {0, 0, 0, 1024, 0},
496 }
497 };
498
499 HWTEST_F(QosInterfaceTest, QosPolicyTest, TestSize.Level1)
500 {
501 int val = -1;
502 struct QosPolicyDatas *policyDatas = nullptr;
503 val = QosPolicySet(policyDatas);
504 EXPECT_EQ(val, -1);
505 }
506
507 /**
508 * @tc.name: QosGetTest1
509 * @tc.desc: Test whether the QosGet interface are normal.
510 * @tc.type: FUNC
511 */
512 HWTEST_F(QosInterfaceTest, QosGetTest1, TestSize.Level1)
513 {
514 int qos;
515 unsigned int level = 4;
516 int val = QosApply(level);
517 EXPECT_EQ(val, 0);
518 val = QosGet(qos);
519 sleep(5);
520 EXPECT_EQ(val, 0);
521 EXPECT_EQ(qos, level);
522 }
523
524 /**
525 * @tc.name: QosGetFuncTest
526 * @tc.desc: Test whether the QosGet interface are normal.
527 * @tc.type: FUNC
528 */
529 HWTEST_F(QosInterfaceTest, QosGetFuncTest0, TestSize.Level0)
530 {
531 int qos = -1;
532 unsigned int level = 0;
533 int val = QosApply(level);
534 EXPECT_EQ(val, 0);
535 val = QosGet(qos);
536 sleep(1);
537 EXPECT_EQ(val, 0);
538 EXPECT_EQ(qos, level);
539 }
540
541 HWTEST_F(QosInterfaceTest, QosGetFuncTest1, TestSize.Level0)
542 {
543 int qos = -1;
544 unsigned int level = 1;
545 int val = QosApply(level);
546 EXPECT_EQ(val, 0);
547 val = QosGet(qos);
548 sleep(1);
549 EXPECT_EQ(val, 0);
550 EXPECT_EQ(qos, level);
551 }
552
553 HWTEST_F(QosInterfaceTest, QosGetFuncTest2, TestSize.Level0)
554 {
555 int qos = -1;
556 unsigned int level = 2;
557 int val = QosApply(level);
558 EXPECT_EQ(val, 0);
559 val = QosGet(qos);
560 sleep(1);
561 EXPECT_EQ(val, 0);
562 EXPECT_EQ(qos, level);
563 }
564
565 HWTEST_F(QosInterfaceTest, QosGetFuncTest3, TestSize.Level0)
566 {
567 int qos = -1;
568 unsigned int level = 3;
569 int val = QosApply(level);
570 EXPECT_EQ(val, 0);
571 val = QosGet(qos);
572 sleep(1);
573 EXPECT_EQ(val, 0);
574 EXPECT_EQ(qos, level);
575 }
576
577 HWTEST_F(QosInterfaceTest, QosGetFuncTest4, TestSize.Level0)
578 {
579 int qos = -1;
580 unsigned int level = 4;
581 int val = QosApply(level);
582 EXPECT_EQ(val, 0);
583 val = QosGet(qos);
584 sleep(1);
585 EXPECT_EQ(val, 0);
586 EXPECT_EQ(qos, level);
587 }
588
589 HWTEST_F(QosInterfaceTest, QosGetFuncTest5, TestSize.Level0)
590 {
591 int qos = -1;
592 unsigned int level = 5;
593 int val = QosApply(level);
594 EXPECT_EQ(val, 0);
595 val = QosGet(qos);
596 sleep(1);
597 EXPECT_EQ(val, 0);
598 EXPECT_EQ(qos, level);
599 }
600
601 HWTEST_F(QosInterfaceTest, QosGetFuncTest6, TestSize.Level1)
602 {
603 int qos = -1;
604 unsigned int level = 6;
605 int val = QosApply(level);
606 EXPECT_EQ(val, 0);
607 val = QosGet(qos);
608 sleep(1);
609 EXPECT_EQ(val, 0);
610 EXPECT_EQ(qos, level);
611 }
612
613 /**
614 * @tc.name: QosGetForOtherFuncTest
615 * @tc.desc: Test whether the QosGetForOther interface are normal.
616 * @tc.type: FUNC
617 */
618 HWTEST_F(QosInterfaceTest, QosGetForOtherTest0, TestSize.Level0)
619 {
620 int qos = -1;
621 unsigned int level = 0;
622 int tid = gettid();
623 int val = QosApplyForOther(level, tid);
624 EXPECT_EQ(val, 0);
625 sleep(1);
626 val = QosGetForOther(tid, qos);
627 EXPECT_EQ(val, 0);
628 EXPECT_EQ(qos, level);
629 }
630
631 HWTEST_F(QosInterfaceTest, QosGetForOtherTest1, TestSize.Level0)
632 {
633 int qos = -1;
634 unsigned int level = 1;
635 int tid = gettid();
636 int val = QosApplyForOther(level, tid);
637 EXPECT_EQ(val, 0);
638 sleep(1);
639 val = QosGetForOther(tid, qos);
640 EXPECT_EQ(val, 0);
641 EXPECT_EQ(qos, level);
642 }
643
644 HWTEST_F(QosInterfaceTest, QosGetForOtherTest2, TestSize.Level0)
645 {
646 int qos = -1;
647 unsigned int level = 2;
648 int tid = gettid();
649 int val = QosApplyForOther(level, tid);
650 EXPECT_EQ(val, 0);
651 sleep(1);
652 val = QosGetForOther(tid, qos);
653 EXPECT_EQ(val, 0);
654 EXPECT_EQ(qos, level);
655 }
656
657 HWTEST_F(QosInterfaceTest, QosGetForOtherTest3, TestSize.Level0)
658 {
659 int qos = -1;
660 unsigned int level = 3;
661 int tid = gettid();
662 int val = QosApplyForOther(level, tid);
663 EXPECT_EQ(val, 0);
664 sleep(1);
665 val = QosGetForOther(tid, qos);
666 EXPECT_EQ(val, 0);
667 EXPECT_EQ(qos, level);
668 }
669
670 HWTEST_F(QosInterfaceTest, QosGetForOtherTest4, TestSize.Level0)
671 {
672 int qos = -1;
673 unsigned int level = 4;
674 int tid = gettid();
675 int val = QosApplyForOther(level, tid);
676 EXPECT_EQ(val, 0);
677 sleep(1);
678 val = QosGetForOther(tid, qos);
679 EXPECT_EQ(val, 0);
680 EXPECT_EQ(qos, level);
681 }
682
683 HWTEST_F(QosInterfaceTest, QosGetForOtherTest5, TestSize.Level0)
684 {
685 int qos = -1;
686 unsigned int level = 5;
687 int tid = gettid();
688 int val = QosApplyForOther(level, tid);
689 EXPECT_EQ(val, 0);
690 sleep(1);
691 val = QosGetForOther(tid, qos);
692 EXPECT_EQ(val, 0);
693 EXPECT_EQ(qos, level);
694 }
695
696 HWTEST_F(QosInterfaceTest, QosGetForOtherTest6, TestSize.Level0)
697 {
698 int qos = -1;
699 unsigned int level = 6;
700 int tid = gettid();
701 int val = QosApplyForOther(level, tid);
702 EXPECT_EQ(val, 0);
703 sleep(1);
704 val = QosGetForOther(tid, qos);
705 EXPECT_EQ(val, 0);
706 EXPECT_EQ(qos, level);
707 }
708 }
709 }
710 }
711