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