1 /*
2 * Copyright (c) 2024 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 "c/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 QoSNdkTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp();
32 void TearDown();
33 };
34
SetUpTestCase()35 void QoSNdkTest::SetUpTestCase()
36 {
37 }
38
TearDownTestCase()39 void QoSNdkTest::TearDownTestCase()
40 {
41 }
42
SetUp()43 void QoSNdkTest::SetUp()
44 {
45 }
46
TearDown()47 void QoSNdkTest::TearDown()
48 {
49 }
50
51 /**
52 * @tc.name: QoSNdkTest
53 * @tc.desc: Verify the Set and Reset QoSLevel function.
54 * @tc.type: FUNC
55 */
56 HWTEST_F(QoSNdkTest, SetThreadQoSNdkTest1, TestSize.Level1)
57 {
58 int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND);
59 EXPECT_EQ(ret, 0);
60 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY);
61 EXPECT_EQ(ret, 0);
62 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT);
63 EXPECT_EQ(ret, 0);
64 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED);
65 EXPECT_EQ(ret, 0);
66 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST);
67 EXPECT_EQ(ret, 0);
68 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE);
69 EXPECT_EQ(ret, 0);
70 ret = OH_QoS_SetThreadQoS(QoS_Level(-1));
71 EXPECT_EQ(ret, -1);
72 ret = OH_QoS_SetThreadQoS(QoS_Level(6));
73 EXPECT_EQ(ret, -1);
74 ret = OH_QoS_SetThreadQoS(QoS_Level(1024));
75 EXPECT_EQ(ret, -1);
76 }
77
78 HWTEST_F(QoSNdkTest, ResetThreadQoSNdkTest, TestSize.Level1)
79 {
80 int ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND);
81 EXPECT_EQ(ret, 0);
82 ret = OH_QoS_ResetThreadQoS();
83 EXPECT_EQ(ret, 0);
84
85 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY);
86 EXPECT_EQ(ret, 0);
87 ret = OH_QoS_ResetThreadQoS();
88 EXPECT_EQ(ret, 0);
89
90 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT);
91 EXPECT_EQ(ret, 0);
92 ret = OH_QoS_ResetThreadQoS();
93 EXPECT_EQ(ret, 0);
94
95 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED);
96 EXPECT_EQ(ret, 0);
97 ret = OH_QoS_ResetThreadQoS();
98 EXPECT_EQ(ret, 0);
99
100 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST);
101 EXPECT_EQ(ret, 0);
102 ret = OH_QoS_ResetThreadQoS();
103 EXPECT_EQ(ret, 0);
104
105 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE);
106 EXPECT_EQ(ret, 0);
107 ret = OH_QoS_ResetThreadQoS();
108 EXPECT_EQ(ret, 0);
109 }
110
111 HWTEST_F(QoSNdkTest, GetThreadQoSNdkTest1, TestSize.Level1)
112 {
113 int ret = OH_QoS_GetThreadQoS(nullptr);
114 EXPECT_EQ(ret, -1);
115
116 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_BACKGROUND);
117 EXPECT_EQ(ret, 0);
118 enum QoS_Level level;
119 ret = OH_QoS_GetThreadQoS(&level);
120 EXPECT_EQ(ret, 0);
121 EXPECT_EQ(level, QoS_Level::QOS_BACKGROUND);
122
123 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_UTILITY);
124 EXPECT_EQ(ret, 0);
125 ret = OH_QoS_GetThreadQoS(&level);
126 EXPECT_EQ(ret, 0);
127 EXPECT_EQ(level, QoS_Level::QOS_UTILITY);
128
129 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEFAULT);
130 EXPECT_EQ(ret, 0);
131 ret = OH_QoS_GetThreadQoS(&level);
132 EXPECT_EQ(ret, 0);
133 EXPECT_EQ(level, QoS_Level::QOS_DEFAULT);
134
135 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INITIATED);
136 EXPECT_EQ(ret, 0);
137 ret = OH_QoS_GetThreadQoS(&level);
138 EXPECT_EQ(ret, 0);
139 EXPECT_EQ(level, QoS_Level::QOS_USER_INITIATED);
140
141 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_DEADLINE_REQUEST);
142 EXPECT_EQ(ret, 0);
143 ret = OH_QoS_GetThreadQoS(&level);
144 EXPECT_EQ(ret, 0);
145 EXPECT_EQ(level, QoS_Level::QOS_DEADLINE_REQUEST);
146
147 ret = OH_QoS_SetThreadQoS(QoS_Level::QOS_USER_INTERACTIVE);
148 EXPECT_EQ(ret, 0);
149 ret = OH_QoS_GetThreadQoS(&level);
150 EXPECT_EQ(ret, 0);
151 EXPECT_EQ(level, QoS_Level::QOS_USER_INTERACTIVE);
152
153 ret = OH_QoS_ResetThreadQoS();
154 EXPECT_EQ(ret, 0);
155 ret = OH_QoS_GetThreadQoS(&level);
156 EXPECT_EQ(ret, -1);
157 }
158 } // QOS
159 } // OHOS