1 /*
2 * Copyright (c) 2021-2023 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 "power_mgr_service_test.h"
17
18 #include <csignal>
19 #include <iostream>
20
21 #include <if_system_ability_manager.h>
22 #include <ipc_skeleton.h>
23 #include <iservice_registry.h>
24 #include <string_ex.h>
25 #include <system_ability_definition.h>
26
27 #include "power_common.h"
28 #include "power_mgr_client.h"
29 #include "power_mgr_service.h"
30
31 using namespace testing::ext;
32 using namespace OHOS::PowerMgr;
33 using namespace OHOS;
34 using namespace std;
35
SetUpTestCase(void)36 void PowerMgrServiceTest::SetUpTestCase(void)
37 {
38 }
39
TearDownTestCase(void)40 void PowerMgrServiceTest::TearDownTestCase(void)
41 {
42 }
43
SetUp(void)44 void PowerMgrServiceTest::SetUp(void)
45 {
46 }
47
TearDown(void)48 void PowerMgrServiceTest::TearDown(void)
49 {
50 }
51
52 namespace {
53 /**
54 * @tc.name: PowerMgrService01
55 * @tc.desc: Test PowerMgrService service ready.
56 * @tc.type: FUNC
57 */
58 HWTEST_F (PowerMgrServiceTest, PowerMgrService001, TestSize.Level0)
59 {
60 sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
61 ASSERT_TRUE(sam != nullptr) << "PowerMgrService01 fail to get GetSystemAbilityManager";
62 sptr<IRemoteObject> remoteObject_ = sam->CheckSystemAbility(POWER_MANAGER_SERVICE_ID);
63 ASSERT_TRUE(remoteObject_ != nullptr) << "GetSystemAbility failed.";
64 }
65
66 /**
67 * @tc.name: PowerMgrService002
68 * @tc.desc: Test PowerMgrService Start and stop.
69 * @tc.type: FUNC
70 */
71 HWTEST_F (PowerMgrServiceTest, PowerMgrService002, TestSize.Level0)
72 {
73 if (false) {
74 auto pmsTest_ = DelayedSpSingleton<PowerMgrService>::GetInstance();
75 ASSERT_TRUE(pmsTest_ != nullptr) << "PowerMgrService02 fail to get PowerMgrService";
76 ASSERT_TRUE(!pmsTest_->IsServiceReady()) << "SetUpTestCase pmsTest_ is ready";
77 pmsTest_->OnStart();
78 ASSERT_TRUE(pmsTest_->IsServiceReady()) << "SetUpTestCase pmsTest_ is not ready";
79 pmsTest_->OnStop();
80 ASSERT_TRUE(!pmsTest_->IsServiceReady()) << "SetUpTestCase pmsTest_ stop fail";
81 pmsTest_->OnStart();
82 ASSERT_TRUE(pmsTest_->IsServiceReady()) << "SetUpTestCase pmsTest_ is not ready";
83 pmsTest_->OnStop();
84 ASSERT_TRUE(!pmsTest_->IsServiceReady()) << "SetUpTestCase pmsTest_ stop fail";
85 }
86 }
87
88 /**
89 * @tc.name: PowerMgrService003
90 * @tc.desc: Test overrideScreenOffTime in screenon
91 * @tc.type: FUNC
92 */
93 HWTEST_F (PowerMgrServiceTest, PowerMgrService003, TestSize.Level0)
94 {
95 auto& powerMgrClient = PowerMgrClient::GetInstance();
96 powerMgrClient.WakeupDevice();
97 EXPECT_TRUE(powerMgrClient.OverrideScreenOffTime(1000));
98 sleep(2);
99 EXPECT_EQ(powerMgrClient.IsScreenOn(), false) << "PowerMgrService003: Prepare Fail, Screen is ON.";
100 EXPECT_TRUE(powerMgrClient.RestoreScreenOffTime());
101 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService003 end.");
102 }
103
104 /**
105 * @tc.name: PowerMgrService004
106 * @tc.desc: Test overrideScreenOffTime in screenon
107 * @tc.type: FUNC
108 */
109 HWTEST_F (PowerMgrServiceTest, PowerMgrService004, TestSize.Level0)
110 {
111 auto& powerMgrClient = PowerMgrClient::GetInstance();
112 powerMgrClient.WakeupDevice();
113 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(0));
114 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService004: Prepare Fail, Screen is ON.";
115
116 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService004 end.");
117 }
118
119 /**
120 * @tc.name: PowerMgrService005
121 * @tc.desc: Test overrideScreenOffTime in screenon
122 * @tc.type: FUNC
123 */
124 HWTEST_F (PowerMgrServiceTest, PowerMgrService005, TestSize.Level0)
125 {
126 auto& powerMgrClient = PowerMgrClient::GetInstance();
127 powerMgrClient.WakeupDevice();
128 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(-1));
129 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService005: Prepare Fail, Screen is OFF.";
130
131 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService005 end.");
132 }
133
134 /**
135 * @tc.name: PowerMgrService006
136 * @tc.desc: Test overrideScreenOffTime in screenoff
137 * @tc.type: FUNC
138 */
139 HWTEST_F (PowerMgrServiceTest, PowerMgrService006, TestSize.Level0)
140 {
141 auto& powerMgrClient = PowerMgrClient::GetInstance();
142 powerMgrClient.SuspendDevice();
143 EXPECT_TRUE(powerMgrClient.OverrideScreenOffTime(1000));
144 powerMgrClient.WakeupDevice();
145 sleep(2);
146 EXPECT_EQ(powerMgrClient.IsScreenOn(), false) << "PowerMgrService006: Prepare Fail, Screen is ON.";
147 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService006 end.");
148 }
149
150 /**
151 * @tc.name: PowerMgrService007
152 * @tc.desc: Test overrideScreenOffTime in screenoff
153 * @tc.type: FUNC
154 */
155 HWTEST_F (PowerMgrServiceTest, PowerMgrService007, TestSize.Level0)
156 {
157 auto& powerMgrClient = PowerMgrClient::GetInstance();
158 powerMgrClient.SuspendDevice();
159 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(0));
160 powerMgrClient.WakeupDevice();
161 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService007: Prepare Fail, Screen is ON.";
162
163 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService007 end.");
164 }
165
166 /**
167 * @tc.name: PowerMgrService008
168 * @tc.desc: Test overrideScreenOffTime in screenoff
169 * @tc.type: FUNC
170 */
171 HWTEST_F (PowerMgrServiceTest, PowerMgrService008, TestSize.Level0)
172 {
173 auto& powerMgrClient = PowerMgrClient::GetInstance();
174 powerMgrClient.SuspendDevice();
175 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(-1));
176 powerMgrClient.WakeupDevice();
177 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService008: Prepare Fail, Screen is OFF.";
178
179 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService008 end.");
180 }
181
182 /**
183 * @tc.name: PowerMgrService009
184 * @tc.desc: Test restoreScreenOffTime in screenon
185 * @tc.type: FUNC
186 */
187 HWTEST_F (PowerMgrServiceTest, PowerMgrService009, TestSize.Level0)
188 {
189 auto& powerMgrClient = PowerMgrClient::GetInstance();
190 powerMgrClient.WakeupDevice();
191 EXPECT_TRUE(powerMgrClient.OverrideScreenOffTime(1000));
192 EXPECT_TRUE(powerMgrClient.RestoreScreenOffTime());
193 sleep(2);
194 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService009: Prepare Fail, Screen is OFF.";
195
196 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService009 end.");
197 }
198
199 /**
200 * @tc.name: PowerMgrService010
201 * @tc.desc: Test restoreScreenOffTime in screenon
202 * @tc.type: FUNC
203 */
204 HWTEST_F (PowerMgrServiceTest, PowerMgrService010, TestSize.Level0)
205 {
206 auto& powerMgrClient = PowerMgrClient::GetInstance();
207 powerMgrClient.WakeupDevice();
208 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(0));
209 EXPECT_FALSE(powerMgrClient.RestoreScreenOffTime());
210 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService010: Prepare Fail, Screen is OFF.";
211
212 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService010 end.");
213 }
214
215 /**
216 * @tc.name: PowerMgrService011
217 * @tc.desc: Test restoreScreenOffTime in screenon
218 * @tc.type: FUNC
219 */
220 HWTEST_F (PowerMgrServiceTest, PowerMgrService011, TestSize.Level0)
221 {
222 auto& powerMgrClient = PowerMgrClient::GetInstance();
223 powerMgrClient.WakeupDevice();
224 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(-1));;
225 EXPECT_FALSE(powerMgrClient.RestoreScreenOffTime());
226 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService011: Prepare Fail, Screen is OFF.";
227
228 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService011 end.");
229 }
230
231 /**
232 * @tc.name: PowerMgrService012
233 * @tc.desc: Test restoreScreenOffTime in screenoff
234 * @tc.type: FUNC
235 */
236 HWTEST_F (PowerMgrServiceTest, PowerMgrService012, TestSize.Level0)
237 {
238 auto& powerMgrClient = PowerMgrClient::GetInstance();
239 powerMgrClient.SuspendDevice();
240 EXPECT_TRUE(powerMgrClient.OverrideScreenOffTime(1000));
241 EXPECT_TRUE(powerMgrClient.RestoreScreenOffTime());
242 powerMgrClient.WakeupDevice();
243 sleep(2);
244 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService012: Prepare Fail, Screen is OFF.";
245
246 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService012 end.");
247 }
248
249 /**
250 * @tc.name: PowerMgrService013
251 * @tc.desc: Test restoreScreenOffTime in screenoff
252 * @tc.type: FUNC
253 */
254 HWTEST_F (PowerMgrServiceTest, PowerMgrService013, TestSize.Level0)
255 {
256 auto& powerMgrClient = PowerMgrClient::GetInstance();
257 powerMgrClient.SuspendDevice();
258 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(0));
259 EXPECT_FALSE(powerMgrClient.RestoreScreenOffTime());
260 powerMgrClient.WakeupDevice();
261 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService013: Prepare Fail, Screen is OFF.";
262
263 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService013 end.");
264 }
265
266 /**
267 * @tc.name: PowerMgrService014
268 * @tc.desc: Test restoreScreenOffTime in screenoff
269 * @tc.type: FUNC
270 */
271 HWTEST_F (PowerMgrServiceTest, PowerMgrService014, TestSize.Level0)
272 {
273 auto& powerMgrClient = PowerMgrClient::GetInstance();
274 powerMgrClient.SuspendDevice();
275 EXPECT_FALSE(powerMgrClient.OverrideScreenOffTime(-1));
276 EXPECT_FALSE(powerMgrClient.RestoreScreenOffTime());
277 powerMgrClient.WakeupDevice();
278 EXPECT_EQ(powerMgrClient.IsScreenOn(), true) << "PowerMgrService014: Prepare Fail, Screen is OFF.";
279
280 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService014 end.");
281 }
282
283 /**
284 * @tc.name: PowerMgrService015
285 * @tc.desc: Test Dump
286 * @tc.type: FUNC
287 * @tc.require: issueI650CX
288 */
289 HWTEST_F(PowerMgrServiceTest, PowerMgrService015, TestSize.Level2)
290 {
291 auto& powerMgrClient = PowerMgrClient::GetInstance();
292 std::vector<std::string> dumpArgs {};
293 std::string expectedDebugInfo = "Power manager dump options";
294 std::string actualDebugInfo = powerMgrClient.Dump(dumpArgs);
295 auto index = actualDebugInfo.find(expectedDebugInfo);
296 EXPECT_TRUE(index != string::npos);
297 }
298
299 /**
300 * @tc.name: PowerMgrService016
301 * @tc.desc: Test IsStandby
302 * @tc.type: FUNC
303 * @tc.require: issueI7QHBE
304 */
305 HWTEST_F(PowerMgrServiceTest, PowerMgrService016, TestSize.Level2)
306 {
307 auto& powerMgrClient = PowerMgrClient::GetInstance();
308 bool standby = false;
309 EXPECT_EQ(powerMgrClient.IsStandby(standby), PowerErrors::ERR_OK);
310 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService016 end.");
311 }
312
313 /**
314 * @tc.name: PowerMgrService017
315 * @tc.desc: Test QueryRunningLockLists
316 * @tc.type: FUNC
317 * @tc.require: issueI8FCZA
318 */
319 HWTEST_F(PowerMgrServiceTest, PowerMgrService017, TestSize.Level2)
320 {
321 auto& powerMgrClient = PowerMgrClient::GetInstance();
322 std::map<std::string, RunningLockInfo> runningLockLists;
323 bool ret = powerMgrClient.QueryRunningLockLists(runningLockLists);
324 EXPECT_EQ(ret, true);
325 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService017 end.");
326 }
327
328 /**
329 * @tc.name: PowerMgrService018
330 * @tc.desc: Test RunningLock Deconstructor unlock
331 * @tc.type: FUNC
332 */
333 HWTEST_F (PowerMgrServiceTest, PowerMgrService018, TestSize.Level0)
334 {
335 auto& powerMgrClient = PowerMgrClient::GetInstance();
336 auto runningLock1 = powerMgrClient.CreateRunningLock("runninglock1", RunningLockType::RUNNINGLOCK_SCREEN);
337 ASSERT_TRUE(runningLock1 != nullptr);
338 runningLock1->Lock();
339 ASSERT_TRUE(runningLock1->IsUsed()) << "runningLock1->IsUsed() != true";
340 runningLock1->UnLock();
341 POWER_HILOGD(LABEL_TEST, "PowerMgrServiceTest::PowerMgrService018 end.");
342 }
343 }
344