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: QosTest
53 * @tc.desc: Verify the Set and Reset QosLevel function.
54 * @tc.type: FUNC
55 */
56 HWTEST_F(QosTest, SetThreadQosTest1, TestSize.Level1)
57 {
58 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED);
59 EXPECT_EQ(ret, 0);
60 ret = SetThreadQos(QosLevel::QOS_DEFAULT);
61 EXPECT_EQ(ret, 0);
62 ret = SetThreadQos(QosLevel::QOS_UTILITY);
63 EXPECT_EQ(ret, 0);
64 ret = SetThreadQos(QosLevel::QOS_BACKGROUND);
65 EXPECT_EQ(ret, 0);
66 ret = SetThreadQos(QosLevel::QOS_DEADLINE_REQUEST);
67 EXPECT_EQ(ret, 0);
68 ret = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE);
69 EXPECT_EQ(ret, 0);
70 ret = SetThreadQos(QosLevel::QOS_KEY_BACKGROUND);
71 EXPECT_EQ(ret, 0);
72 ret = SetThreadQos(QosLevel::QOS_MAX);
73 EXPECT_EQ(ret, -1);
74 ret = SetThreadQos(QosLevel(-1));
75 EXPECT_EQ(ret, -1);
76 }
77
78 HWTEST_F(QosTest, SetThreadQosTest2, TestSize.Level1)
79 {
80 int ret = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid());
81 EXPECT_EQ(ret, 0);
82 ret = SetQosForOtherThread(QosLevel::QOS_DEFAULT, gettid());
83 EXPECT_EQ(ret, 0);
84 ret = SetQosForOtherThread(QosLevel::QOS_UTILITY, gettid());
85 EXPECT_EQ(ret, 0);
86 ret = SetQosForOtherThread(QosLevel::QOS_BACKGROUND, gettid());
87 EXPECT_EQ(ret, 0);
88 }
89
90 HWTEST_F(QosTest, ResetThreadQosTest1, TestSize.Level1)
91 {
92 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED);
93 EXPECT_EQ(ret, 0);
94 ret = ResetThreadQos();
95 EXPECT_EQ(ret, 0);
96 }
97
98 HWTEST_F(QosTest, ResetThreadQosTest2, TestSize.Level1)
99 {
100 int ret = SetQosForOtherThread(QosLevel::QOS_USER_INITIATED, gettid());
101 EXPECT_EQ(ret, 0);
102 ret = ResetQosForOtherThread(gettid());
103 EXPECT_EQ(ret, 0);
104 }
105
106 HWTEST_F(QosTest, GetThreadQosTest1, TestSize.Level1)
107 {
108 int ret = SetThreadQos(QosLevel::QOS_USER_INITIATED);
109 EXPECT_EQ(ret, 0);
110 enum QosLevel level;
111 ret = GetThreadQos(level);
112 EXPECT_EQ(ret, 0);
113 EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INITIATED));
114 ret = SetThreadQos(QosLevel::QOS_USER_INTERACTIVE);
115 EXPECT_EQ(ret, 0);
116 ret = GetThreadQos(level);
117 EXPECT_EQ(ret, 0);
118 EXPECT_EQ(static_cast<unsigned int>(level), static_cast<unsigned int>(QosLevel::QOS_USER_INTERACTIVE));
119 }
120
121 HWTEST_F(QosTest, GetThreadQosTest2, TestSize.Level1)
122 {
123 int ret = ResetThreadQos();
124 EXPECT_EQ(ret, 0);
125 enum QosLevel level;
126 ret = GetThreadQos(level);
127 EXPECT_EQ(ret, -1);
128 }
129 } // QOS
130 } // OHOS