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