1 /*
2 * Copyright (c) 2022-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 "stats_util_test.h"
17 #include "stats_log.h"
18
19 #include "battery_stats_parser.h"
20 #include "stats_helper.h"
21 #include "stats_hisysevent.h"
22 #include "stats_utils.h"
23
24 using namespace testing::ext;
25 using namespace OHOS::PowerMgr;
26 using namespace std;
27
SetUpTestCase()28 void StatsUtilTest::SetUpTestCase()
29 {
30 }
31
TearDownTestCase()32 void StatsUtilTest::TearDownTestCase()
33 {
34 }
35
SetUp()36 void StatsUtilTest::SetUp()
37 {
38 StatsHelper::SetOnBattery(true);
39 }
40
TearDown()41 void StatsUtilTest::TearDown()
42 {
43 StatsHelper::SetOnBattery(false);
44 }
45
46 namespace {
47 /**
48 * @tc.name: StatsHiSysEvent_001
49 * @tc.desc: test StatsHiSysEvent function
50 * @tc.type: FUNC
51 * @tc.require: issueI5X13X
52 */
HWTEST_F(StatsUtilTest, StatsHiSysEvent_001, TestSize.Level0)53 HWTEST_F (StatsUtilTest, StatsHiSysEvent_001, TestSize.Level0)
54 {
55 STATS_HILOGI(LABEL_TEST, "StatsHiSysEvent_001 start");
56 EXPECT_TRUE(StatsHiSysEvent::CheckHiSysEvent(StatsHiSysEvent::POWER_RUNNINGLOCK));
57 EXPECT_FALSE(StatsHiSysEvent::CheckHiSysEvent("POWER_RUNNINGLOCK_WRONG"));
58 STATS_HILOGI(LABEL_TEST, "StatsHiSysEvent_001 end");
59 }
60
61 /**
62 * @tc.name: StatsUtils_001
63 * @tc.desc: test class StatsUtils ConvertStatsType function
64 * @tc.type: FUNC
65 * @tc.require: issueI5X13X
66 */
HWTEST_F(StatsUtilTest, StatsUtils_001, TestSize.Level0)67 HWTEST_F (StatsUtilTest, StatsUtils_001, TestSize.Level0)
68 {
69 STATS_HILOGI(LABEL_TEST, "StatsUtils_001 start");
70 EXPECT_EQ("", StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_INVALID));
71 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_BLUETOOTH_BR_ON),
72 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_BLUETOOTH_BR_ON));
73 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_BLUETOOTH_BR_SCAN),
74 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_BLUETOOTH_BR_SCAN));
75 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_BLUETOOTH_BLE_ON),
76 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_BLUETOOTH_BLE_ON));
77 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_BLUETOOTH_BLE_SCAN),
78 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_BLUETOOTH_BLE_SCAN));
79 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_WIFI_ON),
80 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_WIFI_ON));
81 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_WIFI_SCAN),
82 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_WIFI_SCAN));
83 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_PHONE_ACTIVE),
84 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_PHONE_ACTIVE));
85 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_PHONE_DATA),
86 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_PHONE_DATA));
87 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_BATTERY),
88 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_BATTERY));
89 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_WORKSCHEDULER),
90 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_WORKSCHEDULER));
91 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_THERMAL),
92 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_THERMAL));
93 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_DISTRIBUTEDSCHEDULER),
94 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_DISTRIBUTEDSCHEDULER));
95 STATS_HILOGI(LABEL_TEST, "StatsUtils_001 end");
96 }
97
98 /**
99 * @tc.name: StatsUtils_002
100 * @tc.desc: test class StatsUtils ConvertStatsType function
101 * @tc.type: FUNC
102 * @tc.require: issueI5X13X
103 */
HWTEST_F(StatsUtilTest, StatsUtils_002, TestSize.Level0)104 HWTEST_F (StatsUtilTest, StatsUtils_002, TestSize.Level0)
105 {
106 STATS_HILOGI(LABEL_TEST, "StatsUtils_002 start");
107 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CAMERA_ON),
108 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CAMERA_ON));
109 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CAMERA_FLASHLIGHT_ON),
110 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CAMERA_FLASHLIGHT_ON));
111 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_FLASHLIGHT_ON),
112 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_FLASHLIGHT_ON));
113 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_GNSS_ON),
114 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_GNSS_ON));
115 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_SENSOR_GRAVITY_ON),
116 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_SENSOR_GRAVITY_ON));
117 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_SENSOR_PROXIMITY_ON),
118 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_SENSOR_PROXIMITY_ON));
119 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_AUDIO_ON),
120 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_AUDIO_ON));
121 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_SCREEN_ON),
122 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_SCREEN_ON));
123 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_SCREEN_BRIGHTNESS),
124 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_SCREEN_BRIGHTNESS));
125 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_ALARM),
126 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_ALARM));
127 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_WAKELOCK_HOLD),
128 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_WAKELOCK_HOLD));
129 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_PHONE_IDLE),
130 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_PHONE_IDLE));
131 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CPU_CLUSTER),
132 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CPU_CLUSTER));
133 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CPU_SPEED),
134 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CPU_SPEED));
135 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CPU_ACTIVE),
136 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CPU_ACTIVE));
137 EXPECT_EQ(GET_VARIABLE_NAME(STATS_TYPE_CPU_SUSPEND),
138 StatsUtils::ConvertStatsType(StatsUtils::StatsType::STATS_TYPE_CPU_SUSPEND));
139 STATS_HILOGI(LABEL_TEST, "StatsUtils_002 end");
140 }
141
142 /**
143 * @tc.name: StatsHelper_001
144 * @tc.desc: test class ActiveTimer function
145 * @tc.type: FUNC
146 * @tc.require: issueI5X13X
147 */
HWTEST_F(StatsUtilTest, StatsHelper_001, TestSize.Level0)148 HWTEST_F (StatsUtilTest, StatsHelper_001, TestSize.Level0)
149 {
150 STATS_HILOGI(LABEL_TEST, "StatsHelper_001 start");
151 int64_t activeTimeMs = StatsUtils::DEFAULT_VALUE;
152 int64_t devTimeMs = StatsUtils::DEFAULT_VALUE;
153 std::shared_ptr<StatsHelper::ActiveTimer> timer = std::make_shared<StatsHelper::ActiveTimer>();
154 EXPECT_TRUE(timer != nullptr);
155
156 timer->StartRunning();
157 usleep(TIMER_DURATION_MS * US_PER_MS);
158 timer->StopRunning();
159 activeTimeMs = timer->GetRunningTimeMs();
160 devTimeMs = abs(activeTimeMs - TIMER_DURATION_MS);
161 EXPECT_LE(devTimeMs, DEVIATION_TIMER_THRESHOLD);
162
163 int64_t addTimeMs = 20;
164 timer->AddRunningTimeMs(addTimeMs);
165 activeTimeMs = timer->GetRunningTimeMs();
166 devTimeMs = abs(activeTimeMs - TIMER_DURATION_MS - addTimeMs);
167 EXPECT_LE(devTimeMs, DEVIATION_TIMER_THRESHOLD);
168
169 timer->AddRunningTimeMs(StatsUtils::DEFAULT_VALUE);
170 EXPECT_EQ(timer->GetRunningTimeMs(), activeTimeMs);
171
172 timer->Reset();
173 activeTimeMs = timer->GetRunningTimeMs();
174 EXPECT_EQ(activeTimeMs, StatsUtils::DEFAULT_VALUE);
175 STATS_HILOGI(LABEL_TEST, "StatsHelper_001 end");
176 }
177
178 /**
179 * @tc.name: StatsHelper_002
180 * @tc.desc: test class ActiveTimer function
181 * @tc.type: FUNC
182 * @tc.require: issueI5X13X
183 */
HWTEST_F(StatsUtilTest, StatsHelper_002, TestSize.Level0)184 HWTEST_F (StatsUtilTest, StatsHelper_002, TestSize.Level0)
185 {
186 STATS_HILOGI(LABEL_TEST, "StatsHelper_002 start");
187 int64_t activeTimeMs = StatsUtils::DEFAULT_VALUE;
188 int64_t devTimeMs = StatsUtils::DEFAULT_VALUE;
189 std::shared_ptr<StatsHelper::ActiveTimer> timer = std::make_shared<StatsHelper::ActiveTimer>();
190 EXPECT_TRUE(timer != nullptr);
191
192 timer->StartRunning();
193 usleep(TIMER_DURATION_MS * US_PER_MS);
194 activeTimeMs = timer->GetRunningTimeMs();
195 devTimeMs = abs(activeTimeMs - TIMER_DURATION_MS);
196 EXPECT_LE(devTimeMs, DEVIATION_TIMER_THRESHOLD);
197 timer->StopRunning();
198
199 timer->Reset();
200 activeTimeMs = timer->GetRunningTimeMs();
201 EXPECT_EQ(activeTimeMs, StatsUtils::DEFAULT_VALUE);
202 STATS_HILOGI(LABEL_TEST, "StatsHelper_002 end");
203 }
204
205 /**
206 * @tc.name: StatsHelper_003
207 * @tc.desc: test class ActiveTimer function
208 * @tc.type: FUNC
209 * @tc.require: issueI5X13X
210 */
HWTEST_F(StatsUtilTest, StatsHelper_003, TestSize.Level0)211 HWTEST_F (StatsUtilTest, StatsHelper_003, TestSize.Level0)
212 {
213 STATS_HILOGI(LABEL_TEST, "StatsHelper_003 start");
214 int64_t activeTimeMs = StatsUtils::DEFAULT_VALUE;
215 int64_t devTimeMs = StatsUtils::DEFAULT_VALUE;
216 std::shared_ptr<StatsHelper::ActiveTimer> timer = std::make_shared<StatsHelper::ActiveTimer>();
217 EXPECT_TRUE(timer != nullptr);
218
219 StatsHelper::SetOnBattery(false);
220 EXPECT_FALSE(StatsHelper::IsOnBattery());
221 timer->StartRunning();
222 usleep(TIMER_DURATION_MS * US_PER_MS);
223 StatsHelper::SetOnBattery(true);
224 EXPECT_TRUE(StatsHelper::IsOnBattery());
225 usleep(TIMER_DURATION_MS * US_PER_MS);
226 timer->StopRunning();
227
228 activeTimeMs = timer->GetRunningTimeMs();
229 devTimeMs = abs(activeTimeMs - TIMER_DURATION_MS);
230 EXPECT_LE(devTimeMs, DEVIATION_TIMER_THRESHOLD);
231
232 timer->Reset();
233 activeTimeMs = timer->GetRunningTimeMs();
234 EXPECT_EQ(activeTimeMs, StatsUtils::DEFAULT_VALUE);
235 STATS_HILOGI(LABEL_TEST, "StatsHelper_003 end");
236 }
237
238 /**
239 * @tc.name: StatsHelper_004
240 * @tc.desc: test class Counter function
241 * @tc.type: FUNC
242 * @tc.require: issueI5X13X
243 */
HWTEST_F(StatsUtilTest, StatsHelper_004, TestSize.Level0)244 HWTEST_F (StatsUtilTest, StatsHelper_004, TestSize.Level0)
245 {
246 STATS_HILOGI(LABEL_TEST, "StatsHelper_004 start");
247 int64_t activeCount = StatsUtils::DEFAULT_VALUE;
248 int64_t addCount = 20;
249 std::shared_ptr<StatsHelper::Counter> counter = std::make_shared<StatsHelper::Counter>();
250 EXPECT_TRUE(counter != nullptr);
251
252 StatsHelper::SetOnBattery(false);
253 EXPECT_FALSE(StatsHelper::IsOnBattery());
254 counter->AddCount(addCount);
255 counter->AddCount(StatsUtils::DEFAULT_VALUE);
256 StatsHelper::SetOnBattery(true);
257 EXPECT_TRUE(StatsHelper::IsOnBattery());
258 counter->AddCount(addCount);
259
260 activeCount = counter->GetCount();
261 EXPECT_EQ(activeCount, addCount);
262
263 counter->Reset();
264 activeCount = counter->GetCount();
265 EXPECT_EQ(activeCount, StatsUtils::DEFAULT_VALUE);
266 STATS_HILOGI(LABEL_TEST, "StatsHelper_004 end");
267 }
268
269 /**
270 * @tc.name: StatsHelper_005
271 * @tc.desc: test class Counter function
272 * @tc.type: FUNC
273 * @tc.require: issueI5X13X
274 */
HWTEST_F(StatsUtilTest, StatsHelper_005, TestSize.Level0)275 HWTEST_F (StatsUtilTest, StatsHelper_005, TestSize.Level0)
276 {
277 STATS_HILOGI(LABEL_TEST, "StatsHelper_005 start");
278 StatsHelper::SetOnBattery(false);
279 EXPECT_FALSE(StatsHelper::IsOnBattery());
280 StatsHelper::SetScreenOff(false);
281 EXPECT_FALSE(StatsHelper::IsOnBatteryScreenOff());
282
283 StatsHelper::SetOnBattery(false);
284 EXPECT_FALSE(StatsHelper::IsOnBattery());
285 StatsHelper::SetScreenOff(true);
286 EXPECT_FALSE(StatsHelper::IsOnBatteryScreenOff());
287
288 StatsHelper::SetOnBattery(true);
289 EXPECT_TRUE(StatsHelper::IsOnBattery());
290 StatsHelper::SetScreenOff(false);
291 EXPECT_FALSE(StatsHelper::IsOnBatteryScreenOff());
292
293 StatsHelper::SetOnBattery(true);
294 EXPECT_TRUE(StatsHelper::IsOnBattery());
295 StatsHelper::SetScreenOff(true);
296 EXPECT_TRUE(StatsHelper::IsOnBatteryScreenOff());
297
298 StatsHelper::SetScreenOff(false);
299 STATS_HILOGI(LABEL_TEST, "StatsHelper_005 end");
300 }
301
302 /**
303 * @tc.name: StatsHelper_006
304 * @tc.desc: test class Counter function
305 * @tc.type: FUNC
306 * @tc.require: issueI5X13X
307 */
HWTEST_F(StatsUtilTest, StatsHelper_006, TestSize.Level0)308 HWTEST_F (StatsUtilTest, StatsHelper_006, TestSize.Level0)
309 {
310 STATS_HILOGI(LABEL_TEST, "StatsHelper_006 start");
311 int64_t timeMs = StatsUtils::DEFAULT_VALUE;
312 int64_t durationTimeMs = StatsUtils::DEFAULT_VALUE;
313 int64_t devTimeMs = StatsUtils::DEFAULT_VALUE;
314 StatsHelper::SetOnBattery(false);
315 EXPECT_FALSE(StatsHelper::IsOnBattery());
316 timeMs = StatsHelper::GetOnBatteryUpTimeMs();
317 usleep(TIMER_DURATION_MS * US_PER_MS);
318 durationTimeMs = abs(StatsHelper::GetOnBatteryUpTimeMs() - timeMs);
319 EXPECT_EQ(durationTimeMs, 0);
320
321 StatsHelper::SetOnBattery(true);
322 EXPECT_TRUE(StatsHelper::IsOnBattery());
323 timeMs = StatsHelper::GetOnBatteryUpTimeMs();
324 usleep(TIMER_DURATION_MS * US_PER_MS);
325 durationTimeMs = abs(StatsHelper::GetOnBatteryUpTimeMs() - timeMs);
326 devTimeMs = abs(durationTimeMs - TIMER_DURATION_MS);
327 EXPECT_LE(devTimeMs, DEVIATION_TIMER_THRESHOLD);
328 STATS_HILOGI(LABEL_TEST, "StatsHelper_006 end");
329 }
330
331 /**
332 * @tc.name: StatsParserTest_001
333 * @tc.desc: test Init
334 * @tc.type: FUNC
335 */
HWTEST_F(StatsUtilTest, StatsParserTest_001, TestSize.Level0)336 HWTEST_F (StatsUtilTest, StatsParserTest_001, TestSize.Level0)
337 {
338 STATS_HILOGI(LABEL_TEST, "StatsParserTest_001 start");
339 auto parser = std::make_shared<BatteryStatsParser>();
340 EXPECT_TRUE(parser != nullptr);
341 bool ret = parser->Init();
342 EXPECT_TRUE(ret);
343 STATS_HILOGI(LABEL_TEST, "StatsParserTest_001 end");
344 }
345 }