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