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 #define private public
17 #define protected public
18 #undef private
19 #undef protected
20
21 #include <gtest/gtest.h>
22 #include "socperf_client.h"
23 #include "socperf.h"
24 #include "iservice_registry.h"
25 #include "system_ability_definition.h"
26
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace SOCPERF {
31 class SocPerfSubTest : public testing::Test {
32 public:
33 static void SetUpTestCase(void);
34 static void TearDownTestCase(void);
35 void SetUp();
36 void TearDown();
37 };
38
SetUpTestCase(void)39 void SocPerfSubTest::SetUpTestCase(void)
40 {
41 }
42
TearDownTestCase(void)43 void SocPerfSubTest::TearDownTestCase(void)
44 {
45 }
46
SetUp(void)47 void SocPerfSubTest::SetUp(void)
48 {
49 }
50
TearDown(void)51 void SocPerfSubTest::TearDown(void)
52 {
53 }
54
55 /*
56 * @tc.name: SocPerfSubTest_ActionType_001
57 * @tc.desc: action type perf
58 * @tc.type FUNC
59 * @tc.require SR000GGTLG AR000GH38A
60 */
61 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ActionType_001, Function | MediumTest | Level0)
62 {
63 EXPECT_EQ(OHOS::SOCPERF::ActionType::ACTION_TYPE_PERF, 0);
64 }
65
66 /*
67 * @tc.name: SocPerfSubTest_ActionType_002
68 * @tc.desc: action type power
69 * @tc.type FUNC
70 * @tc.require SR000GGTLG AR000GH38A
71 */
72 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ActionType_002, Function | MediumTest | Level0)
73 {
74 EXPECT_EQ(OHOS::SOCPERF::ActionType::ACTION_TYPE_POWER, 1);
75 }
76
77 /*
78 * @tc.name: SocPerfSubTest_ActionType_003
79 * @tc.desc: action type THERMAL
80 * @tc.type FUNC
81 * @tc.require SR000GGTLG AR000GH38A
82 */
83 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ActionType_003, Function | MediumTest | Level0)
84 {
85 EXPECT_EQ(OHOS::SOCPERF::ActionType::ACTION_TYPE_THERMAL, 2);
86 }
87
88 /*
89 * @tc.name: SocPerfSubTest_ActionType_004
90 * @tc.desc: action type max
91 * @tc.type FUNC
92 * @tc.require SR000GGTLG AR000GH38A
93 */
94 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ActionType_004, Function | MediumTest | Level0)
95 {
96 EXPECT_EQ(OHOS::SOCPERF::ActionType::ACTION_TYPE_MAX, 3);
97 }
98
99 /*
100 * @tc.name: SocPerfSubTest_EventType_001
101 * @tc.desc: event type off
102 * @tc.type FUNC
103 * @tc.require SR000GGTLG AR000GH38A
104 */
105 HWTEST_F(SocPerfSubTest, SocPerfSubTest_EventType_001, Function | MediumTest | Level0)
106 {
107 EXPECT_EQ(OHOS::SOCPERF::EventType::EVENT_OFF, 0);
108 }
109
110 /*
111 * @tc.name: SocPerfSubTest_EventType_002
112 * @tc.desc: event type on
113 * @tc.type FUNC
114 * @tc.require SR000GGTLG AR000GH38A
115 */
116 HWTEST_F(SocPerfSubTest, SocPerfSubTest_EventType_002, Function | MediumTest | Level0)
117 {
118 EXPECT_EQ(OHOS::SOCPERF::EventType::EVENT_ON, 1);
119 }
120
121 /*
122 * @tc.name: SocPerfSubTest_EventType_003
123 * @tc.desc: event type invalid
124 * @tc.type FUNC
125 * @tc.require SR000GGTLG AR000GH38A
126 */
127 HWTEST_F(SocPerfSubTest, SocPerfSubTest_EventType_003, Function | MediumTest | Level0)
128 {
129 EXPECT_EQ(OHOS::SOCPERF::EventType::EVENT_INVALID, -1);
130 }
131
132 /*
133 * @tc.name: SocPerfSubTest_InnerEventId_001
134 * @tc.desc: init res node info
135 * @tc.type FUNC
136 * @tc.require SR000GGTLG AR000GH37V
137 */
138 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_001, Function | MediumTest | Level0)
139 {
140 EXPECT_EQ(INNER_EVENT_ID_INIT_RES_NODE_INFO, 0);
141 }
142
143 /*
144 * @tc.name: SocPerfSubTest_InnerEventId_002
145 * @tc.desc: init gov res node info
146 * @tc.type FUNC
147 * @tc.require SR000GGTLG AR000GH37V
148 */
149 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_002, Function | MediumTest | Level0)
150 {
151 EXPECT_EQ(INNER_EVENT_ID_INIT_GOV_RES_NODE_INFO, 1);
152 }
153
154 /*
155 * @tc.name: SocPerfSubTest_InnerEventId_003
156 * @tc.desc: do freq action
157 * @tc.type FUNC
158 * @tc.require SR000GGTLG AR000GH380
159 */
160 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_003, Function | MediumTest | Level0)
161 {
162 EXPECT_EQ(INNER_EVENT_ID_DO_FREQ_ACTION, 2);
163 }
164
165 /*
166 * @tc.name: SocPerfSubTest_InnerEventId_004
167 * @tc.desc: do freq action delayed
168 * @tc.type FUNC
169 * @tc.require SR000GGTLG AR000GH380
170 */
171 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_004, Function | MediumTest | Level0)
172 {
173 EXPECT_EQ(INNER_EVENT_ID_DO_FREQ_ACTION_DELAYED, 3);
174 }
175
176 /*
177 * @tc.name: SocPerfSubTest_InnerEventId_005
178 * @tc.desc: power limit boost freq
179 * @tc.type FUNC
180 * @tc.require SR000GGTLG AR000GH380
181 */
182 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_005, Function | MediumTest | Level0)
183 {
184 EXPECT_EQ(INNER_EVENT_ID_POWER_LIMIT_BOOST_FREQ, 4);
185 }
186
187 /*
188 * @tc.name: SocPerfSubTest_InnerEventId_006
189 * @tc.desc: thermal limit boost freq
190 * @tc.type FUNC
191 * @tc.require SR000GGTLG AR000GH380
192 */
193 HWTEST_F(SocPerfSubTest, SocPerfSubTest_InnerEventId_006, Function | MediumTest | Level0)
194 {
195 EXPECT_EQ(INNER_EVENT_ID_THERMAL_LIMIT_BOOST_FREQ, 5);
196 }
197
198 /*
199 * @tc.name: SocPerfSubTest_GetService_001
200 * @tc.desc: get socperf service
201 * @tc.type FUNC
202 * @tc.require SR000GGTLG AR000GH384 AR000GH385
203 */
204 HWTEST_F(SocPerfSubTest, SocPerfSubTest_GetService_001, Function | MediumTest | Level0)
205 {
206 sptr<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
207 EXPECT_NE(samgr, nullptr);
208
209 sptr<IRemoteObject> object = samgr->GetSystemAbility(SOC_PERF_SERVICE_SA_ID);
210 EXPECT_NE(object, nullptr);
211 }
212
213 /*
214 * @tc.name: SocPerfSubTest_GetService_002
215 * @tc.desc: get socperf service
216 * @tc.type FUNC
217 * @tc.require SR000GGTLG AR000GH38B AR000GH38C AR000GH38D AR000GH38E AR000GH38F AR000GH386 AR000GH387 AR000GH388
218 */
219 HWTEST_F(SocPerfSubTest, SocPerfSubTest_GetService_002, Function | MediumTest | Level0)
220 {
221 sptr<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
222 EXPECT_NE(samgr, nullptr);
223
224 sptr<IRemoteObject> object = samgr->GetSystemAbility(RES_SCHED_SYS_ABILITY_ID);
225 EXPECT_NE(object, nullptr);
226 }
227
228 /*
229 * @tc.name: SocPerfSubTest_PerfRequest_001
230 * @tc.desc: PerfRequest
231 * @tc.type FUNC
232 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
233 */
234 HWTEST_F(SocPerfSubTest, SocPerfSubTest_PerfRequest_001, Function | MediumTest | Level0)
235 {
236 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequest(10000, "");
237 }
238
239 /*
240 * @tc.name: SocPerfSubTest_PerfRequest_002
241 * @tc.desc: PerfRequestEx ON
242 * @tc.type FUNC
243 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
244 */
245 HWTEST_F(SocPerfSubTest, SocPerfSubTest_PerfRequest_002, Function | MediumTest | Level0)
246 {
247 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequestEx(10000, true, "");
248 }
249
250 /*
251 * @tc.name: SocPerfSubTest_PerfRequest_003
252 * @tc.desc: PerfRequestEx OFF
253 * @tc.type FUNC
254 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
255 */
256 HWTEST_F(SocPerfSubTest, SocPerfSubTest_PerfRequest_003, Function | MediumTest | Level0)
257 {
258 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequestEx(10000, false, "");
259 }
260
261 /*
262 * @tc.name: SocPerfSubTest_PowerLimitBoost_001
263 * @tc.desc: PowerLimitBoost ON
264 * @tc.type FUNC
265 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
266 */
267 HWTEST_F(SocPerfSubTest, SocPerfSubTest_PowerLimitBoost_001, Function | MediumTest | Level0)
268 {
269 OHOS::SOCPERF::SocPerfClient::GetInstance().PowerLimitBoost(true, "");
270 }
271
272 /*
273 * @tc.name: SocPerfSubTest_PowerLimitBoost_001
274 * @tc.desc: PowerLimitBoost OFF
275 * @tc.type FUNC
276 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
277 */
278 HWTEST_F(SocPerfSubTest, SocPerfSubTest_PowerLimitBoost_002, Function | MediumTest | Level0)
279 {
280 OHOS::SOCPERF::SocPerfClient::GetInstance().PowerLimitBoost(false, "");
281 }
282
283 /*
284 * @tc.name: SocPerfSubTest_ThermalLimitBoost_001
285 * @tc.desc: ThermalLimitBoost ON
286 * @tc.type FUNC
287 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
288 */
289 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ThermalLimitBoost_001, Function | MediumTest | Level0)
290 {
291 OHOS::SOCPERF::SocPerfClient::GetInstance().ThermalLimitBoost(true, "");
292 }
293
294 /*
295 * @tc.name: SocPerfSubTest_ThermalLimitBoost_002
296 * @tc.desc: ThermalLimitBoost OFF
297 * @tc.type FUNC
298 * @tc.require SR000GGTLG AR000GH381 AR000GH382 AR000GH389 AR000GH37U
299 */
300 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ThermalLimitBoost_002, Function | MediumTest | Level0)
301 {
302 OHOS::SOCPERF::SocPerfClient::GetInstance().ThermalLimitBoost(false, "");
303 }
304
305 /*
306 * @tc.name: SocPerfSubTest_LimitRequest_001
307 * @tc.desc: LimitRequest thermal
308 * @tc.type FUNC
309 */
310 HWTEST_F(SocPerfSubTest, SocPerfSubTest_LimitRequest_001, Function | MediumTest | Level0)
311 {
312 int32_t clientId_power = ACTION_TYPE_POWER;
313 std::vector<int32_t> tags;
314 tags.push_back(1001);
315 std::vector<int64_t> configs;
316 EXPECT_NE(tags.size(), configs.size());
317 configs.push_back(1608000);
318 EXPECT_EQ(tags.size(), configs.size());
319 OHOS::SOCPERF::SocPerfClient::GetInstance().LimitRequest(clientId_power, tags, configs, "");
320 }
321
322 /*
323 * @tc.name: SocPerfSubTest_LimitRequest_002
324 * @tc.desc: LimitRequest thermal
325 * @tc.type FUNC
326 */
327 HWTEST_F(SocPerfSubTest, SocPerfSubTest_LimitRequest_002, Function | MediumTest | Level0)
328 {
329 int32_t clientId_thermal = ACTION_TYPE_THERMAL;
330 std::vector<int32_t> tags;
331 tags.push_back(1000);
332 tags.push_back(1001);
333 std::vector<int64_t> configs;
334 EXPECT_NE(tags.size(), configs.size());
335 configs.push_back(1800000);
336 configs.push_back(1992000);
337 EXPECT_EQ(tags.size(), configs.size());
338 OHOS::SOCPERF::SocPerfClient::GetInstance().LimitRequest(clientId_thermal, tags, configs, "");
339 }
340
341 /*
342 * @tc.name: SocPerfSubTest_ResetClient_001
343 * @tc.desc: ResetClient
344 * @tc.type FUNC
345 */
346 HWTEST_F(SocPerfSubTest, SocPerfSubTest_ResetClient_001, Function | MediumTest | Level0)
347 {
348 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequest(10000, "");
349 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequestEx(10000, true, "");
350 OHOS::SOCPERF::SocPerfClient::GetInstance().PerfRequestEx(10000, false, "");
351 OHOS::SOCPERF::SocPerfClient::GetInstance().PowerLimitBoost(true, "");
352 OHOS::SOCPERF::SocPerfClient::GetInstance().PowerLimitBoost(false, "");
353 OHOS::SOCPERF::SocPerfClient::GetInstance().ThermalLimitBoost(true, "");
354 OHOS::SOCPERF::SocPerfClient::GetInstance().ThermalLimitBoost(false, "");
355 OHOS::SOCPERF::SocPerfClient::GetInstance().ResetClient();
356 }
357 } // namespace SOCPERF
358 } // namespace OHOS
359