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 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 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 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 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 start.");
117 auto& powerMgrClient = PowerMgrClient::GetInstance();
118 PowerMode modeFirst = PowerMode::EXTREME_POWER_SAVE_MODE;
119 PowerMode modeSecond = PowerMode::EXTREME_POWER_SAVE_MODE;
120 powerMgrClient.SetDeviceMode(modeFirst);
121 modeFirst = powerMgrClient.GetDeviceMode();
122 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_003 fail to SetDeviceMode";
123 POWER_HILOGI(LABEL_TEST, "PowerSavemode_003 end.");
124 GTEST_LOG_(INFO) << "PowerSavemode_003: SetDeviceMode end.";
125 }
126
127 /**
128 * @tc.name: PowerSavemode_004
129 * @tc.desc: test SetDeviceMode in proxy
130 * @tc.type: FUNC
131 * @tc.require: issueI5MJZJ
132 */
133 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_004, TestSize.Level2)
134 {
135 GTEST_LOG_(INFO) << "PowerSavemode_004: SetDeviceMode start.";
136 POWER_HILOGI(LABEL_TEST, "PowerSavemode_004 start.");
137 int PARM_ONE = 1;
138 auto& powerMgrClient = PowerMgrClient::GetInstance();
139 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
140 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
141 powerMgrClient.SetDeviceMode(modeFirst);
142 modeFirst = powerMgrClient.GetDeviceMode();
143 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_004 fail to SetDeviceMode abnormal";
144 POWER_HILOGI(LABEL_TEST, "PowerSavemode_004 end.");
145 GTEST_LOG_(INFO) << "PowerSavemode_004: SetDeviceMode end.";
146 }
147
148 /**
149 * @tc.name: PowerSavemode_005
150 * @tc.desc: test SetDeviceMode 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: SetDeviceMode start.";
157 POWER_HILOGI(LABEL_TEST, "PowerSavemode_005 start.");
158 auto& powerMgrClient = PowerMgrClient::GetInstance();
159 PowerMode modeFirst = PowerMode::EXTREME_POWER_SAVE_MODE;
160 PowerMode modeSecond = PowerMode::EXTREME_POWER_SAVE_MODE;
161 for (int i = 0; i < 100; i++) {
162 powerMgrClient.SetDeviceMode(modeFirst);
163 }
164 modeFirst = powerMgrClient.GetDeviceMode();
165 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_005 fail to SetDeviceMode";
166 POWER_HILOGI(LABEL_TEST, "PowerSavemode_005 end.");
167 GTEST_LOG_(INFO) << "PowerSavemode_005: SetDeviceMode end.";
168 }
169
170 /**
171 * @tc.name: PowerSavemode_006
172 * @tc.desc: test GetDeviceMode in proxy
173 * @tc.type: FUNC
174 * @tc.require: issueI5MJZJ
175 */
176 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_006, TestSize.Level2)
177 {
178 GTEST_LOG_(INFO) << "PowerSavemode_006: GetDeviceMode start.";
179 POWER_HILOGI(LABEL_TEST, "PowerSavemode_006 start.");
180 int PARM_ZERO = 0;
181 auto& powerMgrClient = PowerMgrClient::GetInstance();
182 PowerMode modeFirst = static_cast<PowerMode>(PARM_ZERO);
183 PowerMode modeSecond = PowerMode::NORMAL_MODE;
184 modeFirst = powerMgrClient.GetDeviceMode();
185 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_006 fail to GetDeviceMode";
186 POWER_HILOGI(LABEL_TEST, "PowerSavemode_006 end.");
187 GTEST_LOG_(INFO) << "PowerSavemode_006: GetDeviceMode end.";
188 }
189
190 /**
191 * @tc.name: PowerSavemode_007
192 * @tc.desc: test GetDeviceMode in proxy
193 * @tc.type: FUNC
194 * @tc.require: issueI5MJZJ
195 */
196 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_007, TestSize.Level2)
197 {
198 GTEST_LOG_(INFO) << "PowerSavemode_007: GetDeviceMode start.";
199 POWER_HILOGI(LABEL_TEST, "PowerSavemode_007 start.");
200 auto& powerMgrClient = PowerMgrClient::GetInstance();
201 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
202 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
203 powerMgrClient.SetDeviceMode(modeFirst);
204 for (int i = 0; i < 100; i++) {
205 modeFirst = powerMgrClient.GetDeviceMode();
206 }
207 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_007 fail to GetDeviceMode";
208 POWER_HILOGI(LABEL_TEST, "PowerSavemode_007 start.");
209 GTEST_LOG_(INFO) << "PowerSavemode_007: GetDeviceMode end.";
210 }
211
212 /**
213 * @tc.name: PowerSavemode_008
214 * @tc.desc: test PowerModeCallback
215 * @tc.type: FUNC
216 * @tc.require: issueI5MJZJ
217 */
218 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_008, TestSize.Level0)
219 {
220 GTEST_LOG_(INFO) << "PowerSavemode_008: RegisterPowerModeCallback start.";
221 POWER_HILOGI(LABEL_TEST, "PowerSavemode_008 start.");
222 auto& powerMgrClient = PowerMgrClient::GetInstance();
223 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
224 powerMgrClient.RegisterPowerModeCallback(callBack);
225 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
226 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
227 powerMgrClient.SetDeviceMode(modeFirst);
228 modeFirst = powerMgrClient.GetDeviceMode();
229 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_008 fail to PowerModeCallback";
230 POWER_HILOGI(LABEL_TEST, "PowerSavemode_008 end.");
231 GTEST_LOG_(INFO) << "PowerSavemode_008: RegisterPowerModeCallback end.";
232 }
233
234 /**
235 * @tc.name: PowerSavemode_009
236 * @tc.desc: test PowerModeCallback
237 * @tc.type: FUNC
238 * @tc.require: issueI5MJZJ
239 */
240 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_009, TestSize.Level0)
241 {
242 GTEST_LOG_(INFO) << "PowerSavemode_009: RegisterPowerModeCallback start.";
243 POWER_HILOGI(LABEL_TEST, "PowerSavemode_009 Start.");
244 int PARM_ONE = 1;
245 auto& powerMgrClient = PowerMgrClient::GetInstance();
246 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
247 powerMgrClient.RegisterPowerModeCallback(callBack);
248
249 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
250 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
251 powerMgrClient.SetDeviceMode(modeFirst);
252 modeFirst = powerMgrClient.GetDeviceMode();
253 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_009 fail to PowerModeCallback";
254 POWER_HILOGI(LABEL_TEST, "PowerSavemode_009 end.");
255 GTEST_LOG_(INFO) << "PowerSavemode_009: RegisterPowerModeCallback end.";
256 }
257
258 /**
259 * @tc.name: PowerSavemode_010
260 * @tc.desc: test PowerModeCallback
261 * @tc.type: FUNC
262 * @tc.require: issueI5MJZJ
263 */
264 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_010, TestSize.Level0)
265 {
266 GTEST_LOG_(INFO) << "PowerSavemode_010: RegisterPowerModeCallback start.";
267 POWER_HILOGI(LABEL_TEST, "PowerSavemode_010 start.");
268 auto& powerMgrClient = PowerMgrClient::GetInstance();
269 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
270 for (int i = 0; i < 100; i++) {
271 powerMgrClient.RegisterPowerModeCallback(callBack);
272 }
273 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
274 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
275 powerMgrClient.SetDeviceMode(modeFirst);
276 modeFirst = powerMgrClient.GetDeviceMode();
277 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_010 fail to PowerModeCallback";
278 POWER_HILOGI(LABEL_TEST, "PowerSavemode_010 end.");
279 GTEST_LOG_(INFO) << "PowerSavemode_010: RegisterPowerModeCallback end.";
280 }
281
282 /**
283 * @tc.name: PowerSavemode_011
284 * @tc.desc: test PowerModeCallback
285 * @tc.type: FUNC
286 * @tc.require: issueI5MJZJ
287 */
288 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_011, TestSize.Level0)
289 {
290 GTEST_LOG_(INFO) << "PowerSavemode_011: UnRegisterPowerModeCallback start.";
291 POWER_HILOGI(LABEL_TEST, "PowerSavemode_011 start.");
292 auto& powerMgrClient = PowerMgrClient::GetInstance();
293 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
294 powerMgrClient.UnRegisterPowerModeCallback(callBack);
295 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
296 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
297 powerMgrClient.SetDeviceMode(modeFirst);
298 modeFirst = powerMgrClient.GetDeviceMode();
299 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_011 fail to PowerModeCallback";
300 POWER_HILOGI(LABEL_TEST, "PowerSavemode_011 end.");
301 GTEST_LOG_(INFO) << "PowerSavemode_011: UnRegisterPowerModeCallback end.";
302 }
303
304 /**
305 * @tc.name: PowerSavemode_012
306 * @tc.desc: test PowerModeCallback
307 * @tc.type: FUNC
308 * @tc.require: issueI5MJZJ
309 */
310 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_012, TestSize.Level0)
311 {
312 GTEST_LOG_(INFO) << "PowerSavemode_012: UnRegisterPowerModeCallback start.";
313 POWER_HILOGI(LABEL_TEST, "PowerSavemode_012 UnRegisterPowerModeCallback start.");
314 int PARM_ONE = 1;
315 auto& powerMgrClient = PowerMgrClient::GetInstance();
316 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
317 powerMgrClient.UnRegisterPowerModeCallback(callBack);
318 PowerMode modeFirst = static_cast<PowerMode>(PARM_ONE);
319 PowerMode modeSecond = static_cast<PowerMode>(PARM_ONE);
320 powerMgrClient.SetDeviceMode(modeFirst);
321 modeFirst = powerMgrClient.GetDeviceMode();
322 EXPECT_NE(modeFirst, modeSecond) << "PowerSavemode_012 fail to PowerModeCallback";
323 POWER_HILOGI(LABEL_TEST, "PowerSavemode_012 UnRegisterPowerModeCallback end.");
324 GTEST_LOG_(INFO) << "PowerSavemode_012: UnRegisterPowerModeCallback end.";
325 }
326
327 /**
328 * @tc.name: PowerSavemode_013
329 * @tc.desc: test PowerModeCallback
330 * @tc.type: FUNC
331 * @tc.require: issueI5MJZJ
332 */
333 HWTEST_F(PowerMgrPowerSavemodeTest, PowerSavemode_013, TestSize.Level0)
334 {
335 GTEST_LOG_(INFO) << "PowerSavemode_013: UnRegisterPowerModeCallback start.";
336 POWER_HILOGI(LABEL_TEST, "PowerSavemode_013 start.");
337 auto& powerMgrClient = PowerMgrClient::GetInstance();
338 const sptr<IPowerModeCallback> callBack = new PowerModeTest1Callback();
339 for (int i = 0; i < 100; i++) {
340 powerMgrClient.UnRegisterPowerModeCallback(callBack);
341 }
342 PowerMode modeFirst = PowerMode::POWER_SAVE_MODE;
343 PowerMode modeSecond = PowerMode::POWER_SAVE_MODE;
344 powerMgrClient.SetDeviceMode(modeFirst);
345 modeFirst = powerMgrClient.GetDeviceMode();
346 EXPECT_EQ(modeFirst, modeSecond) << "PowerSavemode_013 fail to PowerModeCallback";
347 POWER_HILOGI(LABEL_TEST, "PowerSavemode_013 end.");
348 GTEST_LOG_(INFO) << "PowerSavemode_013: UnRegisterPowerModeCallback end.";
349 }
350 } // namespace