1 /*
2 * Copyright (c) 2021-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 <bundle_mgr_proxy.h>
17 #include <condition_variable>
18 #include <datetime_ex.h>
19 #include <gtest/gtest.h>
20 #include <if_system_ability_manager.h>
21 #include <iostream>
22 #include <ipc_skeleton.h>
23 #include <mutex>
24 #include <string_ex.h>
25
26 #include "common_event_manager.h"
27 #include "ipower_mode_callback.h"
28 #include "power_common.h"
29 #include "power_mgr_client.h"
30 #include "power_mgr_powersavemode_test.h"
31 #include "power_mgr_service.h"
32 #include "power_state_machine.h"
33 #include "power_state_machine_info.h"
34 #include "running_lock.h"
35 #include "running_lock_info.h"
36
37 using namespace testing::ext;
38 using namespace OHOS::PowerMgr;
39 using namespace OHOS::EventFwk;
40 using namespace OHOS;
41 using namespace std;
42
43 namespace {
44 std::condition_variable g_cv;
45 std::mutex g_mtx;
46 std::string g_action = "";
47 constexpr int64_t TIME_OUT = 1;
48 } // namespace
49
50 static uint32_t g_i = 0;
51 static int g_judgeNum = 2;
52
OnPowerModeChanged(PowerMode mode)53 void PowerMgrPowerSavemodeTest::PowerModeTest1Callback::OnPowerModeChanged(PowerMode mode)
54 {
55 POWER_HILOGI(LABEL_TEST, "PowerModeTest1Callback::OnPowerModeChanged.");
56 }
57
SetUpTestCase(void)58 void PowerMgrPowerSavemodeTest::SetUpTestCase(void)
59 {
60 auto pms = DelayedSpSingleton<PowerMgrService>::GetInstance();
61 pms->OnStart();
62 SystemAbility::MakeAndRegisterAbility(pms.GetRefPtr());
63 }
64
65 namespace {
66 /**
67 * @tc.name: PowerSavemode_001
68 * @tc.desc: test SetDeviceMode in proxy
69 * @tc.type: FUNC
70 * @tc.require: issueI5MJZJ
71 */
72 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_001, TestSize.Level2)
73 {
74 GTEST_LOG_(INFO) << "PowerSavemode_001: SetDeviceMode start.";
75 POWER_HILOGI(LABEL_TEST, "PowerSavemode_001 function start!");
76
77 auto& powerMgrClient = PowerMgrClient::GetInstance();
78 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
79 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
80 powerMgrClient.SetDeviceMode(modeFirst);
81 modeFirst = powerMgrClient.GetDeviceMode();
82 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_001 fail to SetDeviceMode";
83 POWER_HILOGI(LABEL_TEST, "PowerSavemode_001 function end!");
84 GTEST_LOG_(INFO) << "PowerSavemode_001: SetDeviceMode end.";
85 }
86
87 /**
88 * @tc.name: PowerSavemode_002
89 * @tc.desc: test SetDeviceMode in proxy
90 * @tc.type: FUNC
91 * @tc.require: issueI5MJZJ
92 */
93 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_002, TestSize.Level2)
94 {
95 GTEST_LOG_(INFO) << "PowerSavemode_002: SetDeviceMode start.";
96 POWER_HILOGI(LABEL_TEST, "PowerSavemode_002 function start!");
97 auto& powerMgrClient = PowerMgrClient::GetInstance();
98 PowerMode modeFirst = PowerMode::PERFORMANCE_MODE;
99 PowerMode modeSecond = PowerMode::PERFORMANCE_MODE;
100 powerMgrClient.SetDeviceMode(modeFirst);
101 modeFirst = powerMgrClient.GetDeviceMode();
102 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_002 fail to SetDeviceMode";
103 POWER_HILOGI(LABEL_TEST, "PowerSavemode_002 function end!");
104 GTEST_LOG_(INFO) << "PowerSavemode_002: SetDeviceMode end.";
105 }
106
107 /**
108 * @tc.name: PowerSavemode_003
109 * @tc.desc: test SetDeviceMode in proxy
110 * @tc.type: FUNC
111 * @tc.require: issueI5MJZJ
112 */
113 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_003, TestSize.Level2)
114 {
115 GTEST_LOG_(INFO) << "PowerSavemode_003: SetDeviceMode start.";
116 POWER_HILOGI(LABEL_TEST, "PowerSavemode_003 function start!");
117 int PARM_ONE = 1;
118 auto& powerMgrClient = PowerMgrClient::GetInstance();
119 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE); // modeFirst equal to 1
120 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
121 powerMgrClient.SetDeviceMode(modeFirst);
122 modeFirst = powerMgrClient.GetDeviceMode();
123 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_003 fail to SetDeviceMode abnormal";
124 POWER_HILOGI(LABEL_TEST, "PowerSavemode_003 function end!");
125 GTEST_LOG_(INFO) << "PowerSavemode_003: SetDeviceMode end.";
126 }
127
128 /**
129 * @tc.name: PowerSavemode_004
130 * @tc.desc: test GetDeviceMode in proxy
131 * @tc.type: FUNC
132 * @tc.require: issueI5MJZJ
133 */
134 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_004, TestSize.Level2)
135 {
136 GTEST_LOG_(INFO) << "PowerSavemode_004: GetDeviceMode start.";
137 POWER_HILOGI(LABEL_TEST, "PowerSavemode_004 function start!");
138 int PARM_ZERO = 0;
139 auto& powerMgrClient = PowerMgrClient::GetInstance();
140 PowerMode modeFirst = static_cast<PowerMode>(PARM_ZERO);
141 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
142 modeFirst = powerMgrClient.GetDeviceMode();
143 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_004 fail to GetDeviceMode";
144 POWER_HILOGI(LABEL_TEST, "PowerSavemode_004 function end!");
145 GTEST_LOG_(INFO) << "PowerSavemode_004: GetDeviceMode end.";
146 }
147
148 /**
149 * @tc.name: PowerSavemode_005
150 * @tc.desc: test GetDeviceMode in proxy
151 * @tc.type: FUNC
152 * @tc.require: issueI5MJZJ
153 */
154 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_005, TestSize.Level2)
155 {
156 GTEST_LOG_(INFO) << "PowerSavemode_005: GetDeviceMode start.";
157 POWER_HILOGI(LABEL_TEST, "PowerSavemode_005 function start!");
158 auto& powerMgrClient = PowerMgrClient::GetInstance();
159 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
160 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
161 powerMgrClient.SetDeviceMode(modeFirst);
162 for (int i = 0; i < 100; i++) {
163 modeFirst = powerMgrClient.GetDeviceMode();
164 }
165 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_005 fail to GetDeviceMode";
166 POWER_HILOGI(LABEL_TEST, "PowerSavemode_005 function end!");
167 GTEST_LOG_(INFO) << "PowerSavemode_005: GetDeviceMode end.";
168 }
169
170 /**
171 * @tc.name: PowerSavemode_006
172 * @tc.desc: test PowerModeCallback
173 * @tc.type: FUNC
174 * @tc.require: issueI5MJZJ
175 */
176 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_006, TestSize.Level1)
177 {
178 GTEST_LOG_(INFO) << "PowerSavemode_006: RegisterPowerModeCallback start.";
179 POWER_HILOGI(LABEL_TEST, "PowerSavemode_006 function start!");
180 auto& powerMgrClient = PowerMgrClient::GetInstance();
181 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
182 powerMgrClient.RegisterPowerModeCallback(callBack);
183 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
184 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
185 powerMgrClient.SetDeviceMode(modeFirst);
186 modeFirst = powerMgrClient.GetDeviceMode();
187 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_006 fail to PowerModeCallback";
188 POWER_HILOGI(LABEL_TEST, "PowerSavemode_006 function end!");
189 GTEST_LOG_(INFO) << "PowerSavemode_006: RegisterPowerModeCallback end.";
190 }
191
192 /**
193 * @tc.name: PowerSavemode_007
194 * @tc.desc: test PowerModeCallback
195 * @tc.type: FUNC
196 * @tc.require: issueI5MJZJ
197 */
198 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_007, TestSize.Level1)
199 {
200 GTEST_LOG_(INFO) << "PowerSavemode_007: RegisterPowerModeCallback start.";
201 POWER_HILOGI(LABEL_TEST, "PowerSavemode_007 function start!");
202 int PARM_ONE = 1;
203 auto& powerMgrClient = PowerMgrClient::GetInstance();
204 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
205 powerMgrClient.RegisterPowerModeCallback(callBack);
206
207 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
208 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
209 powerMgrClient.SetDeviceMode(modeFirst);
210 modeFirst = powerMgrClient.GetDeviceMode();
211 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_007 fail to PowerModeCallback";
212 POWER_HILOGI(LABEL_TEST, "PowerSavemode_007 function end!");
213 GTEST_LOG_(INFO) << "PowerSavemode_007: RegisterPowerModeCallback end.";
214 }
215
216 /**
217 * @tc.name: PowerSavemode_008
218 * @tc.desc: test PowerModeCallback
219 * @tc.type: FUNC
220 * @tc.require: issueI5MJZJ
221 */
222 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_008, TestSize.Level1)
223 {
224 GTEST_LOG_(INFO) << "PowerSavemode_008: RegisterPowerModeCallback start.";
225 POWER_HILOGI(LABEL_TEST, "PowerSavemode_008 function start!");
226 auto& powerMgrClient = PowerMgrClient::GetInstance();
227 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
228 for (int i = 0; i < 100; i++) {
229 powerMgrClient.RegisterPowerModeCallback(callBack);
230 }
231 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
232 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
233 powerMgrClient.SetDeviceMode(modeFirst);
234 modeFirst = powerMgrClient.GetDeviceMode();
235 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_008 fail to PowerModeCallback";
236 POWER_HILOGI(LABEL_TEST, "PowerSavemode_008 function end!");
237 GTEST_LOG_(INFO) << "PowerSavemode_008: RegisterPowerModeCallback end.";
238 }
239
240 /**
241 * @tc.name: PowerSavemode_009
242 * @tc.desc: test PowerModeCallback
243 * @tc.type: FUNC
244 * @tc.require: issueI5MJZJ
245 */
246 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_009, TestSize.Level1)
247 {
248 GTEST_LOG_(INFO) << "PowerSavemode_009: UnRegisterPowerModeCallback start.";
249 POWER_HILOGI(LABEL_TEST, "PowerSavemode_009 function start!");
250 auto& powerMgrClient = PowerMgrClient::GetInstance();
251 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
252 powerMgrClient.UnRegisterPowerModeCallback(callBack);
253 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
254 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
255 powerMgrClient.SetDeviceMode(modeFirst);
256 modeFirst = powerMgrClient.GetDeviceMode();
257 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_009 fail to PowerModeCallback";
258 POWER_HILOGI(LABEL_TEST, "PowerSavemode_009 function end!");
259 GTEST_LOG_(INFO) << "PowerSavemode_009: UnRegisterPowerModeCallback end.";
260 }
261
262 /**
263 * @tc.name: PowerSavemode_010
264 * @tc.desc: test PowerModeCallback
265 * @tc.type: FUNC
266 * @tc.require: issueI5MJZJ
267 */
268 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_010, TestSize.Level1)
269 {
270 GTEST_LOG_(INFO) << "PowerSavemode_010: UnRegisterPowerModeCallback start.";
271 POWER_HILOGI(LABEL_TEST, "PowerSavemode_010 function start!");
272 int PARM_ONE = 1;
273 auto& powerMgrClient = PowerMgrClient::GetInstance();
274 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
275 powerMgrClient.UnRegisterPowerModeCallback(callBack);
276 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
277 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
278 powerMgrClient.SetDeviceMode(modeFirst);
279 modeFirst = powerMgrClient.GetDeviceMode();
280 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_010 fail to PowerModeCallback";
281 POWER_HILOGI(LABEL_TEST, "PowerSavemode_010 function end!");
282 GTEST_LOG_(INFO) << "PowerSavemode_010: UnRegisterPowerModeCallback end.";
283 }
284
285 /**
286 * @tc.name: PowerSavemode_011
287 * @tc.desc: test PowerModeCallback
288 * @tc.type: FUNC
289 * @tc.require: issueI5MJZJ
290 */
291 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_011, TestSize.Level1)
292 {
293 GTEST_LOG_(INFO) << "PowerSavemode_011: UnRegisterPowerModeCallback start.";
294 POWER_HILOGI(LABEL_TEST, "PowerSavemode_011 function start!");
295 auto& powerMgrClient = PowerMgrClient::GetInstance();
296 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
297 for (int i = 0; i < 100; i++) {
298 powerMgrClient.UnRegisterPowerModeCallback(callBack);
299 }
300 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
301 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
302 powerMgrClient.SetDeviceMode(modeFirst);
303 modeFirst = powerMgrClient.GetDeviceMode();
304 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_011 fail to PowerModeCallback";
305 POWER_HILOGI(LABEL_TEST, "PowerSavemode_011 function end!");
306 GTEST_LOG_(INFO) << "PowerSavemode_011: UnRegisterPowerModeCallback end.";
307 }
308
309 /**
310 * @tc.name: PowerSavemode_012
311 * @tc.desc: test SetDeviceMode in proxy
312 * @tc.type: FUNC
313 * @tc.require: issueI5MJZJ
314 */
315 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_012, TestSize.Level2)
316 {
317 GTEST_LOG_(INFO) << "PowerSavemode_012: SetDeviceMode start.";
318 POWER_HILOGI(LABEL_TEST, "PowerSavemode_012 function start!");
319 auto& powerMgrClient = PowerMgrClient::GetInstance();
320 PowerMode modeFirst = PowerMode::CUSTOM_POWER_SAVE_MODE;
321 PowerMode modeSecond = PowerMode::CUSTOM_POWER_SAVE_MODE;
322 powerMgrClient.SetDeviceMode(modeFirst);
323 modeFirst = powerMgrClient.GetDeviceMode();
324 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_012 fail to SetDeviceMode";
325 POWER_HILOGI(LABEL_TEST, "PowerSavemode_012 function end!");
326 GTEST_LOG_(INFO) << "PowerSavemode_012: SetDeviceMode end.";
327 }
328
329 /**
330 * @tc.name: PowerSavemode_013
331 * @tc.desc: test SetDeviceMode in proxy
332 * @tc.type: FUNC
333 * @tc.require: issueI5MJZJ
334 */
335 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_013, TestSize.Level2)
336 {
337 GTEST_LOG_(INFO) << "PowerSavemode_013: SetDeviceMode start.";
338 POWER_HILOGI(LABEL_TEST, "PowerSavemode_013 function start!");
339 int PARM_ONE = 606;
340 auto& powerMgrClient = PowerMgrClient::GetInstance();
341 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
342 powerMgrClient.UnRegisterPowerModeCallback(callBack);
343 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
344 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
345 powerMgrClient.SetDeviceMode(modeFirst);
346 modeFirst = powerMgrClient.GetDeviceMode();
347 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_013 fail to PowerModeCallback";
348 POWER_HILOGI(LABEL_TEST, "PowerSavemode_013 function end!");
349 GTEST_LOG_(INFO) << "PowerSavemode_013: SetDeviceMode end.";
350 }
351
352 /**
353 * @tc.name: PowerSavemode_014
354 * @tc.desc: test SetDeviceMode in proxy
355 * @tc.type: FUNC
356 * @tc.require: issueI5MJZJ
357 */
358 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_014, TestSize.Level2)
359 {
360 GTEST_LOG_(INFO) << "PowerSavemode_014: SetDeviceMode start.";
361 POWER_HILOGI(LABEL_TEST, "PowerSavemode_014 function start!");
362 auto& powerMgrClient = PowerMgrClient::GetInstance();
363 PowerMode modeFirst = PowerMode::EXTREME_POWER_SAVE_MODE;
364 PowerMode modeSecond = PowerMode::EXTREME_POWER_SAVE_MODE;
365 powerMgrClient.SetDeviceMode(modeFirst);
366 modeFirst = powerMgrClient.GetDeviceMode();
367 PowerMode normalMode = PowerMode::NORMAL_MODE; // Depends on the battery capacity
368 EXPECT_TRUE(modeFirst == modeSecond || modeFirst == normalMode) <<
369 "PowerSavemode_014 fail to SetDeviceMode";
370 POWER_HILOGI(LABEL_TEST, "PowerSavemode_014 function end!");
371 GTEST_LOG_(INFO) << "PowerSavemode_014: SetDeviceMode end.";
372 }
373
374 /**
375 * @tc.name: PowerSavemode_015
376 * @tc.desc: test SetDeviceMode in proxy
377 * @tc.type: FUNC
378 * @tc.require: issueI5MJZJ
379 */
380 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_015, TestSize.Level2)
381 {
382 GTEST_LOG_(INFO) << "PowerSavemode_015: SetDeviceMode start.";
383 POWER_HILOGI(LABEL_TEST, "PowerSavemode_015 function start!");
384 auto& powerMgrClient = PowerMgrClient::GetInstance();
385 PowerMode modeFirst = PowerMode::EXTREME_POWER_SAVE_MODE;
386 PowerMode modeSecond = PowerMode::EXTREME_POWER_SAVE_MODE;
387 for (int i = 0; i < 100; i++) {
388 powerMgrClient.SetDeviceMode(modeFirst);
389 }
390 modeFirst = powerMgrClient.GetDeviceMode();
391 PowerMode normalMode = PowerMode::NORMAL_MODE; // Depends on the battery capacity
392 EXPECT_TRUE(modeFirst == modeSecond || modeFirst == normalMode) <<
393 "PowerSavemode_015 fail to SetDeviceMode";
394 POWER_HILOGI(LABEL_TEST, "PowerSavemode_015 function end!");
395 GTEST_LOG_(INFO) << "PowerSavemode_015: SetDeviceMode end.";
396 }
397 } // namespace