• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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