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 <string>
17 #include <thread>
18
19 #include <gtest/gtest.h>
20 #include "system_ability_definition.h"
21
22 #include "bundle_active_service.h"
23 #include "bundle_active_user_service.h"
24 #include "bundle_active_event.h"
25 #include "app_group_callback_stub.h"
26 #include "app_group_callback_info.h"
27 #include "bundle_active_usage_database.h"
28 #include "bundle_active_user_history.h"
29 #include "bundle_active_group_controller.h"
30 #include "bundle_active_log.h"
31 #include "bundle_active_config_reader.h"
32 #include "accesstoken_kit.h"
33 #include "token_setproc.h"
34 #include "nativetoken_kit.h"
35 #include "bundle_active_report_controller.h"
36 #include "bundle_active_test_util.h"
37 #include "bundle_active_util.h"
38 #include "bundle_active_constant.h"
39
40 using namespace testing::ext;
41
42 namespace OHOS {
43 namespace DeviceUsageStats {
44 using namespace Security::AccessToken;
45 const char* CONFIG_PATH =
46 "/sys_prod/etc/device_usage_statistics/device_usage_statistics_config.json";
47 const char* CONFIG_TEST1_PATH =
48 "/sys_prod/etc/device_usage_statistics/device_usage_statistics_config_test1.json";
49 const char* CONFIG_TEST2_PATH =
50 "/sys_prod/etc/device_usage_statistics/device_usage_statistics_config_test2.json";
51 class DeviceUsageStatisticsServiceTest : public testing::Test {
52 public:
53 static void SetUpTestCase(void);
54 static void TearDownTestCase(void);
55 void SetUp();
56 void TearDown();
57 static std::shared_ptr<BundleActiveCore> bundleActiveCore_;
58 };
59
60 std::shared_ptr<BundleActiveCore> DeviceUsageStatisticsServiceTest::bundleActiveCore_ = nullptr;
61
SetUpTestCase(void)62 void DeviceUsageStatisticsServiceTest::SetUpTestCase(void)
63 {
64 static const char *perms[] = {
65 "ohos.permission.BUNDLE_ACTIVE_INFO",
66 };
67 uint64_t tokenId;
68 NativeTokenInfoParams infoInstance = {
69 .dcapsNum = 0,
70 .permsNum = 1,
71 .aclsNum = 0,
72 .dcaps = nullptr,
73 .perms = perms,
74 .acls = nullptr,
75 .processName = "DeviceUsageStatisticsServiceTest",
76 .aplStr = "system_core",
77 };
78 tokenId = GetAccessTokenId(&infoInstance);
79 SetSelfTokenID(tokenId);
80 AccessTokenKit::ReloadNativeTokenInfo();
81 bundleActiveCore_ = BundleActiveTestUtil::TestInit();
82 }
83
TearDownTestCase(void)84 void DeviceUsageStatisticsServiceTest::TearDownTestCase(void)
85 {
86 bundleActiveCore_->DeInit();
87 BundleActiveTestUtil::TestDeInit();
88 int64_t sleepTime = 10;
89 std::this_thread::sleep_for(std::chrono::seconds(sleepTime));
90 }
91
SetUp(void)92 void DeviceUsageStatisticsServiceTest::SetUp(void)
93 {
94 }
95
TearDown(void)96 void DeviceUsageStatisticsServiceTest::TearDown(void)
97 {
98 int64_t sleepTime = 300;
99 std::this_thread::sleep_for(std::chrono::milliseconds(sleepTime));
100 }
101
102 class TestServiceAppGroupChangeCallback : public AppGroupCallbackStub {
103 public:
104 ErrCode OnAppGroupChanged(const AppGroupCallbackInfo &appGroupCallbackInfo) override;
105 };
106
OnAppGroupChanged(const AppGroupCallbackInfo & appGroupCallbackInfo)107 ErrCode TestServiceAppGroupChangeCallback::OnAppGroupChanged(const AppGroupCallbackInfo &appGroupCallbackInfo)
108 {
109 BUNDLE_ACTIVE_LOGI("TestServiceAppGroupChangeCallback::OnAppGroupChanged!");
110 return ERR_OK;
111 }
112
113 /*
114 * @tc.name: DeviceUsageStatisticsServiceTest_GetServiceObject_001
115 * @tc.desc: get service object
116 * @tc.type: FUNC
117 * @tc.require: issuesI5SOZY
118 */
119 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetServiceObject_001,
120 Function | MediumTest | TestSize.Level0)
121 {
122 sptr<ISystemAbilityManager> systemAbilityManager =
123 SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
124 EXPECT_NE(systemAbilityManager, nullptr);
125
126 sptr<IRemoteObject> remoteObject =
127 systemAbilityManager->GetSystemAbility(BACKGROUND_TASK_MANAGER_SERVICE_ID);
128 EXPECT_NE(remoteObject, nullptr);
129 }
130
131 /*
132 * @tc.name: DeviceUsageStatisticsServiceTest_GetNameAndIndexForUid_001
133 * @tc.desc: get service object
134 * @tc.type: FUNC
135 * @tc.require: issuesI5SOZY
136 */
137 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetNameAndIndexForUid_001,
138 Function | MediumTest | TestSize.Level0)
139 {
140 auto bundleActiveService = std::make_shared<BundleActiveService>();
141 int32_t uid = 10;
142 int32_t result = bundleActiveService->GetNameAndIndexForUid(uid);
143 EXPECT_TRUE(result == -1);
144 }
145
146 /*
147 * @tc.name: DeviceUsageStatisticsServiceTest_dump_001
148 * @tc.desc: test dump
149 * @tc.type: FUNC
150 * @tc.require: issuesI5SOZY
151 */
152 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_dump_001,
153 Function | MediumTest | TestSize.Level0)
154 {
155 auto bundleActiveService = std::make_shared<BundleActiveService>();
156 bundleActiveService->bundleActiveCore_ = std::make_shared<BundleActiveCore>();
157 bundleActiveService->bundleActiveCore_->Init();
158 BUNDLE_ACTIVE_LOGI("DeviceUsageStatisticsServiceTest create BundleActiveService!");
159
160 std::vector<std::string> dumpOption{"-A", "Events"};
161 std::vector<std::string> dumpInfo;
162 bundleActiveService->ShellDump(dumpOption, dumpInfo);
163
164 dumpOption.clear();
165 dumpInfo.clear();
166 dumpOption = {"-A", "Events", "0", "20000000000000", "100"};
167 bundleActiveService->ShellDump(dumpOption, dumpInfo);
168
169 dumpOption.clear();
170 dumpInfo.clear();
171 dumpOption = {"-A", "PackageUsage"};
172 bundleActiveService->ShellDump(dumpOption, dumpInfo);
173
174 dumpOption.clear();
175 dumpInfo.clear();
176 dumpOption = {"-A", "PackageUsage", "1", "0", "20000000000000", "100"};
177 bundleActiveService->ShellDump(dumpOption, dumpInfo);
178
179 dumpOption.clear();
180 dumpInfo.clear();
181 dumpOption = {"-A", "ModuleUsage"};
182 int32_t ret;
183 ret = bundleActiveService->ShellDump(dumpOption, dumpInfo);
184 EXPECT_TRUE(ret == -1);
185
186 dumpOption.clear();
187 dumpInfo.clear();
188 dumpOption = {"-A", "ModuleUsage", "1", "100"};
189 bundleActiveService->ShellDump(dumpOption, dumpInfo);
190
191 dumpOption.clear();
192 dumpInfo.clear();
193 dumpOption = {"-A", "HighFreqHourUsage", "100"};
194 bundleActiveService->ShellDump(dumpOption, dumpInfo);
195
196 std::vector<std::u16string> args;
197 bundleActiveService->Dump(-1, args);
198
199 args.clear();
200 args = {to_utf16("-h")};
201 bundleActiveService->Dump(-1, args);
202
203 args.clear();
204 args = {to_utf16("-A")};
205 bundleActiveService->Dump(-1, args);
206
207 args.clear();
208 args = {to_utf16("-D")};
209 bundleActiveService->Dump(-1, args);
210 }
211
212 /*
213 * @tc.name: DeviceUsageStatisticsServiceTest_QueryModuleUsageRecords_001
214 * @tc.desc: QueryModuleUsageRecords
215 * @tc.type: FUNC
216 * @tc.require: issuesI5SOZY
217 */
218 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryModuleUsageRecords_001,
219 Function | MediumTest | TestSize.Level0)
220 {
221 auto bundleActiveService = std::make_shared<BundleActiveService>();
222 std::vector<BundleActiveModuleRecord> results;
223 int32_t maxNum = 0;
224 ErrCode code = bundleActiveService->QueryModuleUsageRecords(maxNum, results, 100);
225 EXPECT_NE(code, 0);
226
227 maxNum = 1001;
228 code = bundleActiveService->QueryModuleUsageRecords(maxNum, results, 100);
229 EXPECT_NE(code, 0);
230 }
231
232 /*
233 * @tc.name: DeviceUsageStatisticsServiceTest_AppGroupCallback_001
234 * @tc.desc: AppGroupCallback
235 * @tc.type: FUNC
236 * @tc.require: issuesI5SOZY
237 */
238 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_AppGroupCallback_001,
239 Function | MediumTest | TestSize.Level0)
240 {
241 auto bundleActiveService = std::make_shared<BundleActiveService>();
242 BUNDLE_ACTIVE_LOGI("DeviceUsageStatisticsServiceTest create BundleActiveService!");
243 sptr<TestServiceAppGroupChangeCallback> observer = new (std::nothrow) TestServiceAppGroupChangeCallback();
244 bundleActiveService->bundleActiveCore_ = std::make_shared<BundleActiveCore>();
245 EXPECT_EQ(bundleActiveService->RegisterAppGroupCallBack(observer), ERR_OK);
246 EXPECT_NE(bundleActiveService->RegisterAppGroupCallBack(observer), ERR_OK);
247 bundleActiveService->bundleActiveCore_->AddObserverDeathRecipient(observer);
248
249 EXPECT_EQ(bundleActiveService->UnRegisterAppGroupCallBack(observer), ERR_OK);
250 EXPECT_NE(bundleActiveService->UnRegisterAppGroupCallBack(observer), ERR_OK);
251
252 observer = nullptr;
253 EXPECT_NE(bundleActiveService->RegisterAppGroupCallBack(observer), ERR_OK);
254
255 bundleActiveService->bundleActiveCore_->AddObserverDeathRecipient(observer);
256 bundleActiveService->bundleActiveCore_->RemoveObserverDeathRecipient(observer);
257
258 wptr<IRemoteObject> remote = nullptr;
259 bundleActiveService->bundleActiveCore_->OnObserverDied(remote);
260 bundleActiveService->bundleActiveCore_->OnObserverDiedInner(remote);
261 }
262
263 /*
264 * @tc.name: DeviceUsageStatisticsServiceTest_AppGroupCallback_002
265 * @tc.desc: AppGroupCallback
266 * @tc.type: FUNC
267 * @tc.require: issuesI5SOZY
268 */
269 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_AppGroupCallback_002,
270 Function | MediumTest | TestSize.Level0)
271 {
272 sptr<TestServiceAppGroupChangeCallback> observer = new (std::nothrow) TestServiceAppGroupChangeCallback();
273 Security::AccessToken::AccessTokenID tokenId {};
274 bundleActiveCore_->groupChangeObservers_[tokenId] = observer;
275 int32_t userId = 100;
276 int32_t newGroup = 10;
277 int32_t oldGroup = 60;
278 int32_t reasonInGroup = 0;
279 AppGroupCallbackInfo appGroupCallbackInfo(userId, newGroup, oldGroup, reasonInGroup, "test");
280 bundleActiveCore_->OnAppGroupChanged(appGroupCallbackInfo);
281 SUCCEED();
282 }
283
284 /*
285 * @tc.name: DeviceUsageStatisticsServiceTest_OnUserRemoved_001
286 * @tc.desc: OnUserRemoved
287 * @tc.type: FUNC
288 * @tc.require: issuesI5SOZY
289 */
290 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_OnUserRemoved_001,
291 Function | MediumTest | TestSize.Level0)
292 {
293 int userId = 100;
294 bundleActiveCore_->RestoreToDatabase(userId);
295 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
296 bundleActiveCore_->userStatServices_[userId] = userService;
297
298 BundleActiveEvent event;
299 bundleActiveCore_->ReportEventToAllUserId(event);
300 bundleActiveCore_->currentUsedUser_ = userId;
301 bundleActiveCore_->OnUserRemoved(userId);
302 bundleActiveCore_->OnUserSwitched(userId);
303 EXPECT_NE(bundleActiveCore_, nullptr);
304 }
305
306 /*
307 * @tc.name: DeviceUsageStatisticsServiceTest_RestoreAllData_001
308 * @tc.desc: RestoreAllData
309 * @tc.type: FUNC
310 * @tc.require: issuesI5SOZY
311 */
312 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RestoreAllData_001,
313 Function | MediumTest | TestSize.Level0)
314 {
315 int userId = 100;
316 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
317 int64_t timeStamp = 20000000000000;
318 userService->Init(timeStamp);
319 bundleActiveCore_->userStatServices_[userId] = userService;
320 userId = 101;
321 bundleActiveCore_->userStatServices_[userId] = nullptr;
322 bundleActiveCore_->RestoreAllData();
323
324 BundleActiveEvent event;
325 bundleActiveCore_->ReportEventToAllUserId(event);
326 EXPECT_NE(bundleActiveCore_, nullptr);
327 }
328
329 /*
330 * @tc.name: DeviceUsageStatisticsServiceTest_ObtainSystemEventName_001
331 * @tc.desc: ObtainSystemEventName
332 * @tc.type: FUNC
333 * @tc.require: issuesI5SOZY
334 */
335 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ObtainSystemEventName_001,
336 Function | MediumTest | TestSize.Level0)
337 {
338 BundleActiveEvent event;
339 event.eventId_ = BundleActiveEvent::SYSTEM_LOCK;
340 bundleActiveCore_->ObtainSystemEventName(event);
341
342 event.eventId_ = BundleActiveEvent::SYSTEM_UNLOCK;
343 bundleActiveCore_->ObtainSystemEventName(event);
344
345 event.eventId_ = BundleActiveEvent::SYSTEM_SLEEP;
346 bundleActiveCore_->ObtainSystemEventName(event);
347
348 event.eventId_ = BundleActiveEvent::SYSTEM_WAKEUP;
349 bundleActiveCore_->ObtainSystemEventName(event);
350 EXPECT_NE(bundleActiveCore_, nullptr);
351 }
352
353 /*
354 * @tc.name: DeviceUsageStatisticsServiceTest_JudgeQueryCondition_001
355 * @tc.desc: JudgeQueryCondition
356 * @tc.type: FUNC
357 * @tc.require: issuesI5SOZY
358 */
359 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_JudgeQueryCondition_001,
360 Function | MediumTest | TestSize.Level0)
361 {
362 auto database = std::make_shared<BundleActiveUsageDatabase>();
363 int64_t beginTime = 0;
364 int64_t endTime = 0;
365 int64_t eventTableTime = 0;
366 database->eventTableName_ = "defaultTableName";
367 EXPECT_EQ(database->JudgeQueryCondition(beginTime, endTime, eventTableTime), QUERY_CONDITION_INVALID);
368
369 endTime = 10;
370 eventTableTime = 11;
371 EXPECT_EQ(database->JudgeQueryCondition(beginTime, endTime, eventTableTime), QUERY_CONDITION_INVALID);
372 }
373
374 /*
375 * @tc.name: DeviceUsageStatisticsServiceTest_GetSystemEventName_001
376 * @tc.desc: GetSystemEventName
377 * @tc.type: FUNC
378 * @tc.require: issuesI5SOZY
379 */
380 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetSystemEventName_001,
381 Function | MediumTest | TestSize.Level0)
382 {
383 auto database = std::make_shared<BundleActiveUsageDatabase>();
384 int32_t userId = BundleActiveEvent::SYSTEM_LOCK;
385 EXPECT_EQ(database->GetSystemEventName(userId), "SYSTEM_LOCK");
386
387 userId = BundleActiveEvent::SYSTEM_UNLOCK;
388 EXPECT_EQ(database->GetSystemEventName(userId), "SYSTEM_UNLOCK");
389
390 userId = BundleActiveEvent::SYSTEM_SLEEP;
391 EXPECT_EQ(database->GetSystemEventName(userId), "SYSTEM_SLEEP");
392
393 userId = BundleActiveEvent::SYSTEM_WAKEUP;
394 EXPECT_EQ(database->GetSystemEventName(userId), "SYSTEM_WAKEUP");
395
396 userId = BundleActiveEvent::ABILITY_FOREGROUND;
397 EXPECT_EQ(database->GetSystemEventName(userId), "");
398 }
399
400 /*
401 * @tc.name: DeviceUsageStatisticsServiceTest_GetOverdueTableCreateTime_001
402 * @tc.desc: GetOverdueTableCreateTime
403 * @tc.type: FUNC
404 * @tc.require: issuesI5SOZY
405 */
406 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetOverdueTableCreateTime_001,
407 Function | MediumTest | TestSize.Level0)
408 {
409 auto database = std::make_shared<BundleActiveUsageDatabase>();
410 uint32_t databaseType = 4;
411 int64_t currentTimeMillis = 20000000000000;
412 database->GetOverdueTableCreateTime(databaseType, currentTimeMillis);
413
414 databaseType = 0;
415 database->GetOverdueTableCreateTime(databaseType, currentTimeMillis);
416 EXPECT_NE(database, nullptr);
417 }
418
419 /*
420 * @tc.name: DeviceUsageStatisticsServiceTest_DeleteInvalidTable_001
421 * @tc.desc: DeleteInvalidTable
422 * @tc.type: FUNC
423 * @tc.require: issuesI5SOZY
424 */
425 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DeleteInvalidTable_001,
426 Function | MediumTest | TestSize.Level0)
427 {
428 auto database = std::make_shared<BundleActiveUsageDatabase>();
429 uint32_t databaseType = 4;
430 int64_t currentTimeMillis = 20000000000000;
431 database->DeleteInvalidTable(databaseType, currentTimeMillis);
432
433 databaseType = 0;
434 database->DeleteInvalidTable(databaseType, currentTimeMillis);
435 EXPECT_NE(database, nullptr);
436 }
437
438 /*
439 * @tc.name: DeviceUsageStatisticsServiceTest_CreatePackageLogTable_001
440 * @tc.desc: CreatePackageLogTable
441 * @tc.type: FUNC
442 * @tc.require: issuesI5SOZY
443 */
444 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CreatePackageLogTable_001,
445 Function | MediumTest | TestSize.Level0)
446 {
447 auto database = std::make_shared<BundleActiveUsageDatabase>();
448 uint32_t databaseType = 0;
449 int64_t currentTimeMillis = 20000000000000;
450 database->CreatePackageLogTable(databaseType, currentTimeMillis);
451 EXPECT_NE(database, nullptr);
452 }
453
454 /*
455 * @tc.name: DeviceUsageStatisticsServiceTest_CreateModuleRecordTable_001
456 * @tc.desc: CreateModuleRecordTable
457 * @tc.type: FUNC
458 * @tc.require: issuesI5SOZY
459 */
460 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CreateModuleRecordTable_001,
461 Function | MediumTest | TestSize.Level0)
462 {
463 auto database = std::make_shared<BundleActiveUsageDatabase>();
464 uint32_t databaseType = 0;
465 int64_t currentTimeMillis = 20000000000000;
466 database->CreateModuleRecordTable(databaseType, currentTimeMillis);
467 EXPECT_NE(database, nullptr);
468 }
469
470 /*
471 * @tc.name: DeviceUsageStatisticsServiceTest_CreateFormRecordTable_001
472 * @tc.desc: CreateFormRecordTable
473 * @tc.type: FUNC
474 * @tc.require: issuesI5SOZY
475 */
476 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CreateFormRecordTable_001,
477 Function | MediumTest | TestSize.Level0)
478 {
479 auto database = std::make_shared<BundleActiveUsageDatabase>();
480 uint32_t databaseType = 0;
481 int64_t currentTimeMillis = 20000000000000;
482 database->CreateFormRecordTable(databaseType, currentTimeMillis);
483 EXPECT_NE(database, nullptr);
484 }
485
486 /*
487 * @tc.name: DeviceUsageStatisticsServiceTest_CreateDurationTable_001
488 * @tc.desc: CreateDurationTable
489 * @tc.type: FUNC
490 * @tc.require: issuesI5SOZY
491 */
492 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CreateDurationTable_001,
493 Function | MediumTest | TestSize.Level0)
494 {
495 auto database = std::make_shared<BundleActiveUsageDatabase>();
496 int32_t databaseType = DAILY_DATABASE_INDEX;
497 bool forModuleRecords = true;
498 database->InitUsageGroupDatabase(databaseType, forModuleRecords);
499 EXPECT_NE(database, nullptr);
500 }
501
502 /*
503 * @tc.name: DeviceUsageStatisticsServiceTest_CreateBundleHistoryTable_001
504 * @tc.desc: CreateBundleHistoryTable
505 * @tc.type: FUNC
506 * @tc.require: issuesI5SOZY
507 */
508 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CreateBundleHistoryTable_001,
509 Function | MediumTest | TestSize.Level0)
510 {
511 auto database = std::make_shared<BundleActiveUsageDatabase>();
512 uint32_t databaseType = 0;
513 database->CreateBundleHistoryTable(databaseType);
514 EXPECT_NE(database, nullptr);
515 }
516
517 /*
518 * @tc.name: DeviceUsageStatisticsServiceTest_PutBundleHistoryData_001
519 * @tc.desc: PutBundleHistoryData
520 * @tc.type: FUNC
521 * @tc.require: issuesI5SOZY
522 */
523 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_PutBundleHistoryData_001,
524 Function | MediumTest | TestSize.Level0)
525 {
526 auto database = std::make_shared<BundleActiveUsageDatabase>();
527 int32_t userId = 100;
528 std::shared_ptr<std::map<std::string, std::shared_ptr<BundleActivePackageHistory>>> userHistory = nullptr;
529 database->PutBundleHistoryData(userId, userHistory);
530
531 userHistory = std::make_shared<std::map<string, std::shared_ptr<BundleActivePackageHistory>>>();
532 userHistory->emplace("defaultTest", std::make_shared<BundleActivePackageHistory>());
533 database->PutBundleHistoryData(userId, userHistory);
534 database->PutBundleHistoryData(userId, userHistory);
535 EXPECT_NE(database, nullptr);
536 }
537
538 /*
539 * @tc.name: DeviceUsageStatisticsServiceTest_GetBundleHistoryData_001
540 * @tc.desc: GetBundleHistoryData
541 * @tc.type: FUNC
542 * @tc.require: issuesI5SOZY
543 */
544 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetBundleHistoryData_001,
545 Function | MediumTest | TestSize.Level0)
546 {
547 auto database = std::make_shared<BundleActiveUsageDatabase>();
548 int32_t userId = 100;
549 database->GetBundleHistoryData(userId);
550 EXPECT_NE(database, nullptr);
551 }
552
553 /*
554 * @tc.name: DeviceUsageStatisticsServiceTest_FlushPackageInfo_001
555 * @tc.desc: FlushPackageInfo
556 * @tc.type: FUNC
557 * @tc.require: issuesI5SOZY
558 */
559 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_FlushPackageInfo_001,
560 Function | MediumTest | TestSize.Level0)
561 {
562 auto database = std::make_shared<BundleActiveUsageDatabase>();
563 uint32_t databaseType = 0;
564 BundleActivePeriodStats stats;
565 stats.bundleStats_.emplace("defaultTest", std::make_shared<BundleActivePackageStats>());
566 database->FlushPackageInfo(databaseType, stats);
567 EXPECT_NE(database, nullptr);
568 }
569
570 /*
571 * @tc.name: DeviceUsageStatisticsServiceTest_GetCurrentUsageData_001
572 * @tc.desc: GetCurrentUsageData
573 * @tc.type: FUNC
574 * @tc.require: issuesI5SOZY
575 */
576 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetCurrentUsageData_001,
577 Function | MediumTest | TestSize.Level0)
578 {
579 auto database = std::make_shared<BundleActiveUsageDatabase>();
580 int32_t databaseType = -1;
581 int32_t userId = 100;
582 database->GetCurrentUsageData(databaseType, userId);
583
584 databaseType = 4;
585 database->GetCurrentUsageData(databaseType, userId);
586
587 databaseType = 0;
588 database->GetCurrentUsageData(databaseType, userId);
589 EXPECT_NE(database, nullptr);
590 }
591
592 /*
593 * @tc.name: DeviceUsageStatisticsServiceTest_GetTableIndexSql_001
594 * @tc.desc: GetTableIndexSql
595 * @tc.type: FUNC
596 * @tc.require: issuesI5SOZY
597 */
598 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetTableIndexSql_001,
599 Function | MediumTest | TestSize.Level0)
600 {
601 auto database = std::make_shared<BundleActiveUsageDatabase>();
602 uint32_t databaseType = 0;
603 int64_t tableTime = 20000000000000;
604 bool createFlag = false;
605 int32_t indexFlag = 0;
606 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
607
608 createFlag = true;
609 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
610
611 databaseType = 4;
612 createFlag = false;
613 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
614
615 databaseType = 5;
616 createFlag = false;
617 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
618 indexFlag = BUNDLE_ACTIVE_DB_INDEX_MODULE;
619 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
620
621 createFlag = true;
622 indexFlag = BUNDLE_ACTIVE_DB_INDEX_NORMAL;
623 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
624
625 indexFlag = BUNDLE_ACTIVE_DB_INDEX_MODULE;
626 database->GetTableIndexSql(databaseType, tableTime, createFlag, indexFlag);
627 EXPECT_NE(database, nullptr);
628 }
629
630 /*
631 * @tc.name: DeviceUsageStatisticsServiceTest_RenameTableName_001
632 * @tc.desc: RenameTableName
633 * @tc.type: FUNC
634 * @tc.require: issuesI5SOZY
635 */
636 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RenameTableName_001,
637 Function | MediumTest | TestSize.Level0)
638 {
639 auto database = std::make_shared<BundleActiveUsageDatabase>();
640 uint32_t databaseType = 0;
641 int64_t tableOldTime = 0;
642 int64_t tableNewTime = 20000000000000;
643 database->RenameTableName(databaseType, tableOldTime, tableNewTime);
644
645 databaseType = 4;
646 database->RenameTableName(databaseType, tableOldTime, tableNewTime);
647
648 databaseType = 5;
649 database->RenameTableName(databaseType, tableOldTime, tableNewTime);
650 EXPECT_NE(database, nullptr);
651 }
652
653 /*
654 * @tc.name: DeviceUsageStatisticsServiceTest_RemoveOldData_001
655 * @tc.desc: RemoveOldData
656 * @tc.type: FUNC
657 * @tc.require: issuesI5SOZY
658 */
659 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RemoveOldData_001,
660 Function | MediumTest | TestSize.Level0)
661 {
662 auto database = std::make_shared<BundleActiveUsageDatabase>();
663 int64_t currentTime = 20000000000000;
664 database->RemoveOldData(currentTime);
665 EXPECT_NE(database, nullptr);
666 }
667
668 /*
669 * @tc.name: DeviceUsageStatisticsServiceTest_QueryDatabaseUsageStats_001
670 * @tc.desc: QueryDatabaseUsageStats
671 * @tc.type: FUNC
672 * @tc.require: issuesI5SOZY
673 */
674 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryDatabaseUsageStats_001,
675 Function | MediumTest | TestSize.Level0)
676 {
677 auto database = std::make_shared<BundleActiveUsageDatabase>();
678 int32_t databaseType = -1;
679 int64_t beginTime = 0;
680 int64_t endTime = 0;
681 int32_t userId = 100;
682 EXPECT_EQ(database->QueryDatabaseUsageStats(databaseType, beginTime, endTime, userId).size(), 0);
683
684 databaseType = 4;
685 EXPECT_EQ(database->QueryDatabaseUsageStats(databaseType, beginTime, endTime, userId).size(), 0);
686
687 databaseType = 0;
688 EXPECT_EQ(database->QueryDatabaseUsageStats(databaseType, beginTime, endTime, userId).size(), 0);
689
690 databaseType = 0;
691 endTime = 20000000000000;
692 database->QueryDatabaseUsageStats(databaseType, beginTime, endTime, userId);
693 EXPECT_NE(database, nullptr);
694 }
695
696 /*
697 * @tc.name: DeviceUsageStatisticsServiceTest_ReportEvent_001
698 * @tc.desc: ReportEvent
699 * @tc.type: FUNC
700 * @tc.require: issuesI5SOZY
701 */
702 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ReportEvent_001,
703 Function | MediumTest | TestSize.Level0)
704 {
705 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
706 bundleActiveCore->Init();
707 bundleActiveCore->InitBundleGroupController();
708 BundleActiveEvent event;
709 int32_t userId = 0;
710 EXPECT_NE(bundleActiveCore->ReportEvent(event, userId), ERR_OK);
711
712 userId = 101;
713 event.bundleName_ = "com.ohos.launcher";
714 EXPECT_EQ(bundleActiveCore->ReportEvent(event, userId), ERR_OK);
715
716 event.bundleName_ = "com.ohos.settings";
717 event.eventId_ = 15;
718 EXPECT_EQ(bundleActiveCore->ReportEvent(event, userId), ERR_OK);
719
720 event.eventId_ = 16;
721 EXPECT_EQ(bundleActiveCore->ReportEvent(event, userId), ERR_OK);
722 }
723
724 /*
725 * @tc.name: DeviceUsageStatisticsServiceTest_InitBundleGroupController_001
726 * @tc.desc: InitBundleGroupController
727 * @tc.type: FUNC
728 * @tc.require: issuesI5SOZY
729 */
730 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_InitBundleGroupController_001,
731 Function | MediumTest | TestSize.Level0)
732 {
733 bundleActiveCore_->InitBundleGroupController();
734 }
735
736 /*
737 * @tc.name: DeviceUsageStatisticsServiceTest_ReportEventToAllUserId_001
738 * @tc.desc: ReportEventToAllUserId
739 * @tc.type: FUNC
740 * @tc.require: issuesI5SOZY
741 */
742 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ReportEventToAllUserId_001,
743 Function | MediumTest | TestSize.Level0)
744 {
745 int userId = 100;
746 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
747 bundleActiveCore_->userStatServices_[userId] = userService;
748 userId = 101;
749 bundleActiveCore_->userStatServices_[userId] = nullptr;
750 BundleActiveEvent event;
751 bundleActiveCore_->ReportEventToAllUserId(event);
752
753 bundleActiveCore_->Init();
754 bundleActiveCore_->InitBundleGroupController();
755 bundleActiveCore_->ReportEventToAllUserId(event);
756 EXPECT_NE(bundleActiveCore_, nullptr);
757 }
758
759 /*
760 * @tc.name: DeviceUsageStatisticsServiceTest_RestoreToDatabase_001
761 * @tc.desc: RestoreToDatabase
762 * @tc.type: FUNC
763 * @tc.require: issuesI5SOZY
764 */
765 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RestoreToDatabase_001,
766 Function | MediumTest | TestSize.Level0)
767 {
768 auto coreObject = std::make_shared<BundleActiveCore>();
769 coreObject->Init();
770 coreObject->InitBundleGroupController();
771 int userId = 100;
772 auto userService = std::make_shared<BundleActiveUserService>(userId, *(coreObject.get()), false);
773 int64_t timeStamp = 20000000000000;
774 userService->Init(timeStamp);
775 coreObject->userStatServices_[userId] = userService;
776 coreObject->RestoreToDatabase(userId);
777
778 userId = 101;
779 coreObject->RestoreToDatabase(userId);
780 EXPECT_NE(coreObject, nullptr);
781 }
782
783 /*
784 * @tc.name: BundleActiveGroupControllerTest_001
785 * @tc.desc: test the interface
786 * @tc.type: FUNC
787 * @tc.require: DTS2023121404861
788 */
789 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_001,
790 Function | MediumTest | TestSize.Level0)
791 {
792 int userId = 100;
793 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
794 int64_t timeStamp = 20000000000000;
795 userService->Init(timeStamp);
796 bundleActiveCore_->userStatServices_[userId] = userService;
797 bundleActiveCore_->OnUserRemoved(userId);
798 SUCCEED();
799 }
800
801 /*
802 * @tc.name: BundleActiveGroupControllerTest_002
803 * @tc.desc: test the interface
804 * @tc.type: FUNC
805 * @tc.require: DTS2023121404861
806 */
807 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_002,
808 Function | MediumTest | TestSize.Level0)
809 {
810 int userId = 100;
811 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
812 int64_t timeStamp = 20000000000000;
813 userService->Init(timeStamp);
814 bundleActiveCore_->userStatServices_[userId] = userService;
815 BundleActiveGroupController::GetInstance().Init(false);
816 BundleActiveGroupController::GetInstance().OnUserSwitched(userId, userId);
817 SUCCEED();
818 }
819
820 /*
821 * @tc.name: BundleActiveGroupControllerTest_003
822 * @tc.desc: test the interface
823 * @tc.type: FUNC
824 * @tc.require: DTS2023121404861
825 */
826 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_003,
827 Function | MediumTest | TestSize.Level0)
828 {
829 int userId = 100;
830 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
831 int64_t timeStamp = 20000000000000;
832 userService->Init(timeStamp);
833 bundleActiveCore_->userStatServices_[userId] = userService;
834 EXPECT_EQ(BundleActiveGroupController::GetInstance().GetNewGroup("test", userId, timeStamp, 0), -1);
835 }
836
837 /*
838 * @tc.name: BundleActiveGroupControllerTest_004
839 * @tc.desc: test the interface
840 * @tc.type: FUNC
841 * @tc.require: DTS2023121404861
842 */
843 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_004,
844 Function | MediumTest | TestSize.Level0)
845 {
846 int userId = 100;
847 BundleActiveEvent event;
848 int64_t timeStamp = 20000000000000;
849 BundleActiveGroupController::GetInstance().ReportEvent(event, timeStamp, userId);
850 SUCCEED();
851 BundleActiveGroupController::GetInstance().ReportEvent(event, timeStamp, 19);
852 SUCCEED();
853 BundleActiveGroupController::GetInstance().ReportEvent(event, timeStamp, 7);
854 SUCCEED();
855 BundleActiveGroupController::GetInstance().bundleGroupEnable_ = false;
856 SUCCEED();
857 BundleActiveGroupController::GetInstance().ReportEvent(event, timeStamp, userId);
858 SUCCEED();
859 }
860
861 /*
862 * @tc.name: BundleActiveGroupControllerTest_005
863 * @tc.desc: test the interface
864 * @tc.type: FUNC
865 * @tc.require: DTS2023121404861
866 */
867 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_005,
868 Function | MediumTest | TestSize.Level0)
869 {
870 int userId = 100;
871 int64_t timeStamp = 20000000000000;
872 BundleActiveGroupController::GetInstance().CheckAndUpdateGroup("test", userId, 0, timeStamp);
873 SUCCEED();
874 }
875
876 /*
877 * @tc.name: BundleActiveGroupControllerTest_006
878 * @tc.desc: test the interface
879 * @tc.type: FUNC
880 * @tc.require: DTS2023121404861
881 */
882 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_006,
883 Function | MediumTest | TestSize.Level0)
884 {
885 int userId = 100;
886 int64_t time = 20000000000000;
887 EXPECT_EQ(BundleActiveGroupController::GetInstance().SetAppGroup("test", userId, 0, 0, time, true),
888 ERR_NO_APP_GROUP_INFO_IN_DATABASE);
889 }
890
891 /*
892 * @tc.name: BundleActiveGroupControllerTest_007
893 * @tc.desc: test the interface
894 * @tc.type: FUNC
895 * @tc.require: DTS2023121404861
896 */
897 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_007,
898 Function | MediumTest | TestSize.Level0)
899 {
900 int userId = 100;
901 EXPECT_EQ(BundleActiveGroupController::GetInstance().IsBundleIdle("test", userId), -1);
902 }
903
904 /*
905 * @tc.name: BundleActiveGroupControllerTest_009
906 * @tc.desc: test the interface
907 * @tc.type: FUNC
908 * @tc.require: DTS2023121404861
909 */
910 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_009,
911 Function | MediumTest | TestSize.Level0)
912 {
913 bundleActiveCore_->InitBundleGroupController();
914 int userId = 100;
915 EXPECT_EQ(BundleActiveGroupController::GetInstance().IsBundleInstalled("test", userId), false);
916 EXPECT_EQ(BundleActiveGroupController::GetInstance().IsBundleInstalled("test", userId), false);
917 }
918
919 /*
920 * @tc.name: BundleActiveGroupControllerTest_010
921 * @tc.desc: test the interface
922 * @tc.type: FUNC
923 * @tc.require: DTS2023121404861
924 */
925 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_010,
926 Function | MediumTest | TestSize.Level0)
927 {
928 int userId = 100;
929 int64_t timeStamp = 20000000000000;
930 BundleActiveGroupController::GetInstance().ShutDown(timeStamp, userId);
931 SUCCEED();
932 }
933
934 /*
935 * @tc.name: BundleActiveGroupControllerTest_011
936 * @tc.desc: test the interface
937 * @tc.type: FUNC
938 * @tc.require: IssuesIA9M7I
939 */
940 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_011,
941 Function | MediumTest | TestSize.Level0)
942 {
943 bool isScreenOn = true;
944 int64_t timeStamp = 0;
945 BundleActiveGroupController::GetInstance().OnScreenChanged(isScreenOn, timeStamp);
946 SUCCEED();
947 }
948
949 /*
950 * @tc.name: BundleActiveGroupControllerTest_012
951 * @tc.desc: test the interface
952 * @tc.type: FUNC
953 * @tc.require: IssuesIA9M7I
954 */
955 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_012,
956 Function | MediumTest | TestSize.Level0)
957 {
958 BundleActiveGroupController::GetInstance().ShutDown(1, 10);
959 EXPECT_NE(BundleActiveGroupController::GetInstance().bundleUserHistory_, nullptr);
960 }
961
962 /*
963 * @tc.name: BundleActiveGroupControllerTest_013
964 * @tc.desc: test the interface
965 * @tc.type: FUNC
966 * @tc.require: IssuesIA9M7I
967 */
968 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_013,
969 Function | MediumTest | TestSize.Level0)
970 {
971 BundleActiveGroupController::GetInstance().OnUserRemoved(10);
972 EXPECT_NE(BundleActiveGroupController::GetInstance().bundleUserHistory_, nullptr);
973 }
974
975 /*
976 * @tc.name: BundleActiveGroupControllerTest_014
977 * @tc.desc: test the interface
978 * @tc.type: FUNC
979 * @tc.require: IssuesIA9M7I
980 */
981 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveGroupControllerTest_014,
982 Function | MediumTest | TestSize.Level0)
983 {
984 BundleActiveGroupController::GetInstance().OnUserSwitched(1, 10);
985 EXPECT_NE(BundleActiveGroupController::GetInstance().bundleUserHistory_, nullptr);
986 }
987
988 /*
989 * @tc.name: BundleActiveUserHistoryTest_001
990 * @tc.desc: test the interface
991 * @tc.type: FUNC
992 * @tc.require: DTS2023121404861
993 */
994 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveUserHistoryTest_001,
995 Function | MediumTest | TestSize.Level0)
996 {
997 int64_t bootBasedTimeStamp = 2000;
998 std::vector<int64_t> screenTimeLevel;
999 std::vector<int64_t> bootFromTimeLevel;
1000 auto bundleUserHistory_ = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1001 bundleUserHistory_->GetLevelIndex("test", 0, 20000, screenTimeLevel, bootFromTimeLevel, 0);
1002 }
1003
1004 /*
1005 * @tc.name: BundleActiveUserHistoryTest_002
1006 * @tc.desc: test the interface
1007 * @tc.type: FUNC
1008 * @tc.require: DTS2023121404861
1009 */
1010 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveUserHistoryTest_002,
1011 Function | MediumTest | TestSize.Level0)
1012 {
1013 int64_t bootBasedTimeStamp = 2000;
1014 auto bundleUserHistory_ = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1015 bundleUserHistory_->WriteDeviceDuration();
1016 bundleUserHistory_->OnBundleUninstalled(0, "test", 0, 0);
1017 SUCCEED();
1018 }
1019
1020 /*
1021 * @tc.name: BundleActiveUserHistoryTest_003
1022 * @tc.desc: test the interface
1023 * @tc.type: FUNC
1024 * @tc.require: DTS2023121404861
1025 */
1026 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveUserHistoryTest_003,
1027 Function | MediumTest | TestSize.Level0)
1028 {
1029 int64_t bootBasedTimeStamp = 2000;
1030 auto oneBundleUsageHistory = std::make_shared<BundleActivePackageHistory>();
1031 auto bundleUserHistory_ = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1032 BundleActiveEvent event;
1033 bundleUserHistory_->ReportUsage(oneBundleUsageHistory, event, 0, 0, 1000, 2000, 100);
1034 SUCCEED();
1035 bundleUserHistory_->ReportUsage(oneBundleUsageHistory, event, 0, 0, 2000, 1000, 100);
1036 SUCCEED();
1037 bundleUserHistory_->ReportUsage(oneBundleUsageHistory, event, 10, 0, 1000, 2000, 100);
1038 SUCCEED();
1039 bundleUserHistory_->ReportUsage(oneBundleUsageHistory, event, 20, 0, 1000, 2000, 100);
1040 SUCCEED();
1041 bundleUserHistory_->ReportUsage(oneBundleUsageHistory, event, 20, 0, 0, 2000, 100);
1042 SUCCEED();
1043 }
1044
1045 /*
1046 * @tc.name: BundleActiveUserHistoryTest_004
1047 * @tc.desc: test the interface
1048 * @tc.type: FUNC
1049 * @tc.require: DTS2023121404861
1050 */
1051 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveUserHistoryTest_004,
1052 Function | MediumTest | TestSize.Level0)
1053 {
1054 int32_t userId = 100;
1055 int64_t bootBasedTimeStamp = 2000;
1056 int32_t newgroup = 0;
1057 uint32_t groupReason = 0;
1058 int32_t uid = 0;
1059 auto bundleUserHistory_ = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1060 bundleUserHistory_->SetAppGroup("test", userId, uid, bootBasedTimeStamp, newgroup, groupReason, true);
1061 SUCCEED();
1062 bundleUserHistory_->SetAppGroup("test", userId, uid, bootBasedTimeStamp, newgroup, groupReason, false);
1063 SUCCEED();
1064 }
1065
1066 /*
1067 * @tc.name: BundleActiveUserHistoryTest_005
1068 * @tc.desc: test the interface
1069 * @tc.type: FUNC
1070 * @tc.require: DTS2023121404861
1071 */
1072 HWTEST_F(DeviceUsageStatisticsServiceTest, BundleActiveUserHistoryTest_005,
1073 Function | MediumTest | TestSize.Level0)
1074 {
1075 int64_t bootBasedTimeStamp = 2000;
1076 auto bundleUserHistory_ = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1077 bundleUserHistory_->PrintData(0);
1078 SUCCEED();
1079 }
1080
1081 /*
1082 * @tc.name: DeviceUsageStatisticsServiceTest_ShutDown_001
1083 * @tc.desc: ShutDown
1084 * @tc.type: FUNC
1085 * @tc.require: issuesI5SOZY
1086 */
1087 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ShutDown_001,
1088 Function | MediumTest | TestSize.Level0)
1089 {
1090 bundleActiveCore_->ShutDown();
1091 EXPECT_NE(bundleActiveCore_, nullptr);
1092 }
1093
1094 /*
1095 * @tc.name: DeviceUsageStatisticsServiceTest_CheckTimeChangeAndGetWallTime_001
1096 * @tc.desc: CheckTimeChangeAndGetWallTime
1097 * @tc.type: FUNC
1098 * @tc.require: issuesI5SOZY
1099 */
1100 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CheckTimeChangeAndGetWallTime_001,
1101 Function | MediumTest | TestSize.Level0)
1102 {
1103 int userId = 100;
1104 bundleActiveCore_->OnUserRemoved(100);
1105 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
1106 int64_t timeStamp = 20000000000000;
1107 userService->Init(timeStamp);
1108 bundleActiveCore_->userStatServices_[userId] = userService;
1109 bundleActiveCore_->CheckTimeChangeAndGetWallTime(userId);
1110 bundleActiveCore_->OnUserSwitched(userId);
1111 EXPECT_NE(bundleActiveCore_, nullptr);
1112 }
1113
1114 /*
1115 * @tc.name: DeviceUsageStatisticsServiceTest_QueryAppGroup_001
1116 * @tc.desc: QueryAppGroup
1117 * @tc.type: FUNC
1118 * @tc.require: issuesI5SOZY
1119 */
1120 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryAppGroup_001,
1121 Function | MediumTest | TestSize.Level0)
1122 {
1123 int32_t appGroup = 10;
1124 std::string bundleName = "";
1125 int32_t userId = 100;
1126 EXPECT_NE(BundleActiveGroupController::GetInstance().QueryAppGroup(appGroup, bundleName, userId), ERR_OK);
1127
1128 bundleName = "defaultBundleName";
1129 EXPECT_NE(BundleActiveGroupController::GetInstance().QueryAppGroup(appGroup, bundleName, userId), ERR_OK);
1130 }
1131
1132 /*
1133 * @tc.name: DeviceUsageStatisticsServiceTest_ControllerReportEvent_001
1134 * @tc.desc: ControllerReportEvent
1135 * @tc.type: FUNC
1136 * @tc.require: issuesI5SOZY
1137 */
1138 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ControllerReportEvent_001,
1139 Function | MediumTest | TestSize.Level0)
1140 {
1141 int64_t bootBasedTimeStamp = 20000000000000;
1142 BundleActiveEvent event;
1143 int32_t userId = 100;
1144 BundleActiveGroupController::GetInstance().bundleGroupEnable_ = false;
1145 BundleActiveGroupController::GetInstance().ReportEvent(event, bootBasedTimeStamp, userId);
1146
1147 BundleActiveGroupController::GetInstance().bundleGroupEnable_ = true;
1148 event.bundleName_ = "com.ohos.camera";
1149 BundleActiveGroupController::GetInstance().ReportEvent(event, bootBasedTimeStamp, userId);
1150
1151 event.eventId_ = BundleActiveEvent::NOTIFICATION_SEEN;
1152 BundleActiveGroupController::GetInstance().ReportEvent(event, bootBasedTimeStamp, userId);
1153
1154 event.eventId_ = BundleActiveEvent::SYSTEM_INTERACTIVE;
1155 BundleActiveGroupController::GetInstance().ReportEvent(event, bootBasedTimeStamp, userId);
1156 EXPECT_NE(bundleActiveCore_, nullptr);
1157 }
1158
1159 /*
1160 * @tc.name: DeviceUsageStatisticsServiceTest_CheckAndUpdateGroup_001
1161 * @tc.desc: CheckAndUpdateGroup
1162 * @tc.type: FUNC
1163 * @tc.require: issuesI5SOZY
1164 */
1165 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_CheckAndUpdateGroup_001,
1166 Function | MediumTest | TestSize.Level0)
1167 {
1168 std::string bundleName = "com.ohos.camera";
1169 int32_t userId = 100;
1170 int64_t bootBasedTimeStamp = 20000000000000;
1171 int32_t newGroup = 30;
1172 uint32_t reason = GROUP_CONTROL_REASON_TIMEOUT;
1173 bool isFlush = false;
1174
1175 int32_t appGroup = 0;
1176 BundleActiveGroupController::GetInstance().QueryAppGroup(appGroup, bundleName, userId);
1177
1178 BundleActiveGroupController::GetInstance().SetAppGroup(bundleName, userId, newGroup, reason,
1179 bootBasedTimeStamp, isFlush);
1180 BundleActiveGroupController::GetInstance().CheckAndUpdateGroup(bundleName, 0, userId, bootBasedTimeStamp);
1181
1182 newGroup = 20;
1183 reason = GROUP_CONTROL_REASON_CALCULATED;
1184 BundleActiveGroupController::GetInstance().SetAppGroup(bundleName, userId, newGroup, reason,
1185 bootBasedTimeStamp, isFlush);
1186 BundleActiveGroupController::GetInstance().CheckAndUpdateGroup(bundleName, 0, userId, bootBasedTimeStamp);
1187 EXPECT_NE(bundleActiveCore_, nullptr);
1188 }
1189
1190 /*
1191 * @tc.name: DeviceUsageStatisticsServiceTest_PreservePowerStateInfo_001
1192 * @tc.desc: PreservePowerStateInfo
1193 * @tc.type: FUNC
1194 * @tc.require: issuesI5SOZY
1195 */
1196 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_PreservePowerStateInfo_001,
1197 Function | MediumTest | TestSize.Level0)
1198 {
1199 int32_t eventId = BundleActiveEvent::ABILITY_FOREGROUND;
1200 bundleActiveCore_->PreservePowerStateInfo(eventId);
1201 EXPECT_NE(bundleActiveCore_, nullptr);
1202 }
1203
1204 /*
1205 * @tc.name: DeviceUsageStatisticsServiceTest_UpdateModuleData_001
1206 * @tc.desc: UpdateModuleData
1207 * @tc.type: FUNC
1208 * @tc.require: issuesI5SOZY
1209 */
1210 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_UpdateModuleData_001,
1211 Function | MediumTest | TestSize.Level0)
1212 {
1213 auto database = std::make_shared<BundleActiveUsageDatabase>();
1214 auto moduleRecords = std::map<std::string, std::shared_ptr<BundleActiveModuleRecord>>();
1215 int64_t timeStamp = 20000000000;
1216 int32_t userId = 100;
1217 database->UpdateModuleData(userId, moduleRecords, timeStamp);
1218 EXPECT_NE(database, nullptr);
1219 }
1220
1221 /*
1222 * @tc.name: DeviceUsageStatisticsServiceTest_QueryNotificationEventStats_001
1223 * @tc.desc: QueryNotificationEventStats
1224 * @tc.type: FUNC
1225 * @tc.require: issuesI5SOZY
1226 */
1227 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryNotificationEventStats_001,
1228 Function | MediumTest | TestSize.Level0)
1229 {
1230 auto database = std::make_shared<BundleActiveUsageDatabase>();
1231
1232 int32_t eventId = 2;
1233 int64_t beginTime = 0;
1234 int64_t endTime = 0;
1235 auto notificationEventStats = std::map<std::string, BundleActiveEventStats>();
1236 int32_t userId = 100;
1237 BUNDLE_ACTIVE_LOGI("database->QueryNotificationEventStats");
1238 database->QueryNotificationEventStats(eventId, beginTime, endTime, notificationEventStats, userId);
1239 EXPECT_NE(database, nullptr);
1240 }
1241
1242 /*
1243 * @tc.name: DeviceUsageStatisticsServiceTest_QueryDeviceEventStats_001
1244 * @tc.desc: QueryDeviceEventStats
1245 * @tc.type: FUNC
1246 * @tc.require: issuesI5SOZY
1247 */
1248 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryDeviceEventStats_001,
1249 Function | MediumTest | TestSize.Level0)
1250 {
1251 auto database = std::make_shared<BundleActiveUsageDatabase>();
1252
1253 int32_t eventId = 2;
1254 int64_t beginTime = 0;
1255 int64_t endTime = 0;
1256 auto eventStats = std::map<std::string, BundleActiveEventStats>();
1257 int32_t userId = 100;
1258 BUNDLE_ACTIVE_LOGI("database->QueryDeviceEventStats");
1259 database->QueryDeviceEventStats(eventId, beginTime, endTime, eventStats, userId);
1260 EXPECT_NE(database, nullptr);
1261 }
1262
1263 /*
1264 * @tc.name: DeviceUsageStatisticsServiceTest_QueryDatabaseEvents_001
1265 * @tc.desc: QueryDatabaseEvents
1266 * @tc.type: FUNC
1267 * @tc.require: issuesI5SOZY
1268 */
1269 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryDatabaseEvents_001,
1270 Function | MediumTest | TestSize.Level0)
1271 {
1272 auto database = std::make_shared<BundleActiveUsageDatabase>();
1273
1274 int64_t beginTime = 0;
1275 int64_t endTime = 0;
1276 std::string bundleName;
1277 int32_t userId = 100;
1278 BUNDLE_ACTIVE_LOGI("database->QueryDatabaseEvents");
1279 database->QueryDatabaseEvents(beginTime, endTime, userId, bundleName);
1280
1281 bundleName = "com.ohos.camera";
1282 database->QueryDatabaseEvents(beginTime, endTime, userId, bundleName);
1283 EXPECT_NE(database, nullptr);
1284 }
1285
1286 /*
1287 * @tc.name: DeviceUsageStatisticsServiceTest_UpdateEventData_001
1288 * @tc.desc: UpdateEventData
1289 * @tc.type: FUNC
1290 * @tc.require: issuesI5SOZY
1291 */
1292 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_UpdateEventData_001,
1293 Function | MediumTest | TestSize.Level0)
1294 {
1295 auto database = std::make_shared<BundleActiveUsageDatabase>();
1296
1297 int32_t databaseType = WEEKLY_DATABASE_INDEX;
1298 BundleActivePeriodStats stats;
1299 database->UpdateEventData(databaseType, stats);
1300
1301 databaseType = DAILY_DATABASE_INDEX;
1302 database->UpdateEventData(databaseType, stats);
1303 EXPECT_NE(database, nullptr);
1304 }
1305
1306 /*
1307 * @tc.name: DeviceUsageStatisticsServiceTest_UpdateBundleUsageData_001
1308 * @tc.desc: UpdateBundleUsageData
1309 * @tc.type: FUNC
1310 * @tc.require: issuesI5SOZY
1311 */
1312 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_UpdateBundleUsageData_001,
1313 Function | MediumTest | TestSize.Level0)
1314 {
1315 auto database = std::make_shared<BundleActiveUsageDatabase>();
1316
1317 int32_t databaseType = -1;
1318 BundleActivePeriodStats stats;
1319 database->UpdateBundleUsageData(databaseType, stats);
1320
1321 databaseType = EVENT_DATABASE_INDEX;
1322 database->UpdateBundleUsageData(databaseType, stats);
1323
1324 databaseType = DAILY_DATABASE_INDEX;
1325 database->UpdateBundleUsageData(databaseType, stats);
1326 EXPECT_NE(database, nullptr);
1327 }
1328
1329 /*
1330 * @tc.name: DeviceUsageStatisticsServiceTest_RenewTableTime_001
1331 * @tc.desc: RenewTableTime
1332 * @tc.type: FUNC
1333 * @tc.require: issuesI5SOZY
1334 */
1335 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RenewTableTime_001,
1336 Function | MediumTest | TestSize.Level0)
1337 {
1338 auto database = std::make_shared<BundleActiveUsageDatabase>();
1339
1340 int64_t timeDiffMillis = 0;
1341 database->sortedTableArray_[0] = {-1, 0};
1342 database->RenewTableTime(timeDiffMillis);
1343
1344 database->eventTableName_ = "";
1345 database->RenewTableTime(timeDiffMillis);
1346
1347 database->eventTableName_ = "defaultTableName";
1348 database->RenewTableTime(timeDiffMillis);
1349
1350 database->formRecordsTableName_ = "defaultFormRecordsTableName";
1351 database->RenewTableTime(timeDiffMillis);
1352
1353 database->moduleRecordsTableName_ = "defaultModuleRecordsTableName_";
1354 database->RenewTableTime(timeDiffMillis);
1355 EXPECT_NE(database, nullptr);
1356 }
1357
1358 /*
1359 * @tc.name: DeviceUsageStatisticsServiceTest_SetNewIndexWhenTimeChanged_001
1360 * @tc.desc: SetNewIndexWhenTimeChanged
1361 * @tc.type: FUNC
1362 * @tc.require: issuesI5SOZY
1363 */
1364 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_SetNewIndexWhenTimeChanged_001,
1365 Function | MediumTest | TestSize.Level0)
1366 {
1367 auto database = std::make_shared<BundleActiveUsageDatabase>();
1368
1369 uint32_t databaseType = APP_GROUP_DATABASE_INDEX;
1370 int64_t tableOldTime = 0;
1371 int64_t tableNewTime = 20000000000000;
1372 std::shared_ptr<NativeRdb::RdbStore> rdbStore = nullptr;
1373 EXPECT_NE(database->SetNewIndexWhenTimeChanged(databaseType, tableOldTime, tableNewTime, rdbStore), ERR_OK);
1374
1375 rdbStore = database->GetBundleActiveRdbStore(databaseType);
1376 database->SetNewIndexWhenTimeChanged(databaseType, tableOldTime, tableNewTime, rdbStore);
1377 EXPECT_NE(database, nullptr);
1378 }
1379
1380 /*
1381 * @tc.name: DeviceUsageStatisticsServiceTest_ReportContinuousTaskEvent_001
1382 * @tc.desc: ReportContinuousTaskEvent
1383 * @tc.type: FUNC
1384 * @tc.require: issuesI5SOZY
1385 */
1386 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ReportContinuousTaskEvent_001,
1387 Function | MediumTest | TestSize.Level0)
1388 {
1389 #ifdef BGTASKMGR_ENABLE
1390 auto bgtaskObserver = std::make_shared<BundleActiveContinuousTaskObserver>();
1391 auto continuousTaskCallbackInfo = std::make_shared<OHOS::BackgroundTaskMgr::ContinuousTaskCallbackInfo>();
1392 continuousTaskCallbackInfo->creatorUid_ = 20000000;
1393 bgtaskObserver->OnContinuousTaskStart(continuousTaskCallbackInfo);
1394 bgtaskObserver->OnContinuousTaskStop(continuousTaskCallbackInfo);
1395 bool isStart = false;
1396 bgtaskObserver->ReportContinuousTaskEvent(continuousTaskCallbackInfo, isStart);
1397
1398 isStart = true;
1399 bgtaskObserver->ReportContinuousTaskEvent(continuousTaskCallbackInfo, isStart);
1400 EXPECT_NE(bgtaskObserver, nullptr);
1401 #endif
1402 }
1403
1404 /*
1405 * @tc.name: DeviceUsageStatisticsServiceTest_RemoveFormData_001
1406 * @tc.desc: RemoveFormData
1407 * @tc.type: FUNC
1408 * @tc.require: issuesI5SOZY
1409 */
1410 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RemoveFormData_001,
1411 Function | MediumTest | TestSize.Level0)
1412 {
1413 auto database = std::make_shared<BundleActiveUsageDatabase>();
1414 int32_t userId = 100;
1415 std::string bundleName = "defaultBundleName";
1416 std::string moduleName = "defaultModuleName";
1417 std::string formName = "defaultFormName";
1418 database->InitUsageGroupDatabase(0, true);
1419 database->RemoveFormData(userId, bundleName, moduleName, formName, 0, 0, 0);
1420 EXPECT_NE(database, nullptr);
1421 }
1422
1423 /*
1424 * @tc.name: DeviceUsageStatisticsServiceTest_UpdateFormData_001
1425 * @tc.desc: UpdateFormData
1426 * @tc.type: FUNC
1427 * @tc.require: issuesI5SOZY
1428 */
1429 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_UpdateFormData_001,
1430 Function | MediumTest | TestSize.Level0)
1431 {
1432 auto database = std::make_shared<BundleActiveUsageDatabase>();
1433 int32_t userId = 100;
1434 std::string bundleName = "defaultBundleName";
1435 std::string moduleName = "defaultModuleName";
1436 std::string formName = "defaultFormName";
1437 std::vector<NativeRdb::ValuesBucket> formValueBuckets;
1438 database->InitUsageGroupDatabase(0, true);
1439 BundleActiveFormRecord formRecord;
1440 auto rdbStore = database->GetBundleActiveRdbStore(0);
1441 database->UpdateFormData(userId, bundleName, moduleName, formRecord, rdbStore, formValueBuckets);
1442 EXPECT_NE(database, nullptr);
1443 }
1444
1445 /*
1446 * @tc.name: DeviceUsageStatisticsServiceTest_DeleteUninstalledBundleStats_001
1447 * @tc.desc: onstart
1448 * @tc.type: FUNC
1449 * @tc.require: issuesI9Q9ZJ
1450 */
1451 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DeleteUninstalledBundleStats_001,
1452 Function | MediumTest | TestSize.Level0)
1453 {
1454 int userId = 100;
1455 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
1456 int appIndex = 1;
1457 std::vector<std::shared_ptr<BundleActivePeriodStats>> curStats;
1458 std::shared_ptr<BundleActivePeriodStats> stats = std::make_shared<BundleActivePeriodStats>();
1459 stats->bundleStats_["test0"] = std::make_shared<BundleActivePackageStats>();
1460 stats->bundleStats_["test1"] = std::make_shared<BundleActivePackageStats>();
1461 stats->bundleStats_["test2"] = std::make_shared<BundleActivePackageStats>();
1462 curStats.push_back(stats);
1463 userService->currentStats_ = curStats;
1464 userService->DeleteUninstalledBundleStats("test", 0, appIndex);
1465 appIndex = 0;
1466 userService->DeleteUninstalledBundleStats("test", 0, appIndex);
1467 userService->OnUserRemoved();
1468 userService->NotifyNewUpdate();
1469 }
1470
1471 /*
1472 * @tc.name: DeviceUsageStatisticsServiceTest_DeleteUninstalledBundleStats_002
1473 * @tc.desc: onstart
1474 * @tc.type: FUNC
1475 * @tc.require: issuesI9Q9ZJ
1476 */
1477 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DeleteUninstalledBundleStats_002,
1478 Function | MediumTest | TestSize.Level0)
1479 {
1480 int userId = 100;
1481 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore_.get()), false);
1482 int appIndex = 1;
1483 std::vector<std::shared_ptr<BundleActivePeriodStats>> curStats;
1484 std::shared_ptr<BundleActivePeriodStats> stats = std::make_shared<BundleActivePeriodStats>();
1485 stats->bundleStats_["test0"] = std::make_shared<BundleActivePackageStats>();
1486 stats->bundleStats_["test1"] = std::make_shared<BundleActivePackageStats>();
1487 stats->bundleStats_["test2"] = std::make_shared<BundleActivePackageStats>();
1488
1489 BundleActiveEvent event;
1490 event.bundleName_ = "test";
1491 event.uid_ = 0;
1492 stats->events_.Insert(event);
1493 BundleActiveEvent event2;
1494 event.bundleName_ = "test";
1495 event.uid_ = 1;
1496 stats->events_.Insert(event);
1497 curStats.push_back(stats);
1498 userService->moduleRecords_["test0"] = std::make_shared<BundleActiveModuleRecord>();
1499 userService->moduleRecords_["test1"] = std::make_shared<BundleActiveModuleRecord>();
1500 userService->moduleRecords_["test2"] = std::make_shared<BundleActiveModuleRecord>();
1501 userService->currentStats_ = curStats;
1502 userService->DeleteUninstalledBundleStats("test", 100, appIndex);
1503 appIndex = 0;
1504 userService->DeleteUninstalledBundleStats("test", 100, appIndex);
1505 }
1506
1507 /*
1508 * @tc.name: DeviceUsageStatisticsServiceTest_ConfigReader_001
1509 * @tc.desc: ConfigReader
1510 * @tc.type: FUNC
1511 * @tc.require: issuesIBCE1G
1512 */
1513 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ConfigReader_001,
1514 Function | MediumTest | TestSize.Level0)
1515 {
1516 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1517 EXPECT_NE(bundleActiveConfigReader, nullptr);
1518 bundleActiveConfigReader->LoadConfig();
1519 EXPECT_NE(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 0);
1520 }
1521
1522 /*
1523 * @tc.name: DeviceUsageStatisticsServiceTest_ConfigReader_002
1524 * @tc.desc: ConfigReader
1525 * @tc.type: FUNC
1526 * @tc.require: issuesIBCE1G
1527 */
1528 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ConfigReader_002,
1529 Function | MediumTest | TestSize.Level0)
1530 {
1531 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1532 EXPECT_NE(bundleActiveConfigReader, nullptr);
1533 cJSON* root = cJSON_CreateObject();
1534 bundleActiveConfigReader->LoadApplicationUsePeriodically(root);
1535 cJSON_Delete(root);
1536 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 0);
1537 }
1538
1539 /*
1540 * @tc.name: DeviceUsageStatisticsServiceTest_ConfigReader_003
1541 * @tc.desc: ConfigReader
1542 * @tc.type: FUNC
1543 * @tc.require: issuesIBCE1G
1544 */
1545 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ConfigReader_003,
1546 Function | MediumTest | TestSize.Level0)
1547 {
1548 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1549 EXPECT_NE(bundleActiveConfigReader, nullptr);
1550 const char *path = "test";
1551 cJSON *root = nullptr;
1552 bool result = bundleActiveConfigReader->GetJsonFromFile(path, root);
1553 EXPECT_EQ(result, false);
1554 }
1555
1556 /*
1557 * @tc.name: DeviceUsageStatisticsServiceTest_ConfigReader_004
1558 * @tc.desc: ConfigReader
1559 * @tc.type: FUNC
1560 * @tc.require: issuesIBCE1G
1561 */
1562 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ConfigReader_004,
1563 Function | MediumTest | TestSize.Level0)
1564 {
1565 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1566 EXPECT_NE(bundleActiveConfigReader, nullptr);
1567 std::string partialPath = "test";
1568 std::string fullPath = "";
1569 bool result = bundleActiveConfigReader->ConvertFullPath(partialPath, fullPath);
1570 EXPECT_EQ(result, false);
1571 }
1572
1573 /*
1574 * @tc.name: DeviceUsageStatisticsServiceTest_MergePackageStats_001
1575 * @tc.desc: MergePackageStats
1576 * @tc.type: FUNC
1577 * @tc.require: IC0GWV
1578 */
1579 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_MergePackageStats_001,
1580 Function | MediumTest | TestSize.Level0)
1581 {
1582 std::vector<BundleActivePackageStats> bundleActivePackageStatsVector;
1583 BundleActivePackageStats bundleActivePackageStats;
1584 bundleActivePackageStats.bundleName_ = "test";
1585 bundleActivePackageStats.uid_ = 1;
1586 bundleActivePackageStatsVector.push_back(bundleActivePackageStats);
1587 BundleActivePackageStats bundleActivePackageStats2;
1588 bundleActivePackageStats2.bundleName_ = "test";
1589 bundleActivePackageStats2.uid_ = 1;
1590 bundleActivePackageStatsVector.push_back(bundleActivePackageStats2);
1591 BundleActivePackageStats bundleActivePackageStats3;
1592 bundleActivePackageStats3.bundleName_ = "test";
1593 bundleActivePackageStats3.uid_ = 2;
1594 bundleActivePackageStatsVector.push_back(bundleActivePackageStats3);
1595 auto bundleActiveService = std::make_shared<BundleActiveService>();
1596 auto MergeResult = bundleActiveService->MergePackageStats(bundleActivePackageStatsVector);
1597 EXPECT_EQ(MergeResult.size(), 2);
1598 }
1599
1600 /*
1601 * @tc.name: DeviceUsageStatisticsServiceTest_IsUsedOverOneWeek_001
1602 * @tc.desc: IsUsedOverOneWeek
1603 * @tc.type: FUNC
1604 * @tc.require: issuesICCZ27
1605 */
1606 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_IsUsedOverOneWeek_001,
1607 Function | MediumTest | TestSize.Level0)
1608 {
1609 std::string bundleName = "test";
1610 int32_t userId = 100;
1611 BundleActiveGroupController::GetInstance().bundleUserHistory_ = nullptr;
1612 EXPECT_FALSE(BundleActiveGroupController::GetInstance().IsUsedOverOneWeek(bundleName, userId));
1613 BundleActiveGroupController::GetInstance().CreateUserHistory(0, bundleActiveCore_);
1614 EXPECT_FALSE(BundleActiveGroupController::GetInstance().IsUsedOverOneWeek(bundleName, userId));
1615 auto userHistory = BundleActiveGroupController::GetInstance().bundleUserHistory_->GetUserHistory(userId, true);
1616 EXPECT_NE(userHistory, nullptr);
1617 std::shared_ptr<BundleActivePackageHistory> usageHistoryInserted =
1618 std::make_shared<BundleActivePackageHistory>();
1619 usageHistoryInserted->bundleName_ = bundleName;
1620
1621 (*userHistory)[bundleName] = usageHistoryInserted;
1622 EXPECT_FALSE(BundleActiveGroupController::GetInstance().IsUsedOverOneWeek(bundleName, userId));
1623 int64_t curTime = BundleActiveUtil::GetSystemTimeMs();
1624 int64_t testTime = 100000;
1625 usageHistoryInserted->bundlefirstUseTimeStamp_ = curTime - (ONE_WEEK_TIME - testTime);
1626 (*userHistory)[bundleName] = usageHistoryInserted;
1627 EXPECT_TRUE(BundleActiveGroupController::GetInstance().IsUsedOverOneWeek(bundleName, userId));
1628 }
1629
1630 /*
1631 * @tc.name: DeviceUsageStatisticsServiceTest_GetFirstUseTime_001
1632 * @tc.desc: GetFirstUseTime
1633 * @tc.type: FUNC
1634 * @tc.require: issuesICCZ27
1635 */
1636 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetFirstUseTime_001,
1637 Function | MediumTest | TestSize.Level0)
1638 {
1639 int64_t bootBasedTimeStamp = 2000;
1640 auto bundleUserHistory = std::make_shared<BundleActiveUserHistory>(bootBasedTimeStamp, bundleActiveCore_);
1641 std::string bundleName = "com.ohos.camera";
1642 int32_t userId = 100;
1643 EXPECT_EQ(bundleUserHistory->GetFirstUseTime(bundleName, userId), MAX_END_TIME);
1644 auto userHistoryMap = bundleUserHistory->GetUserHistory(userId, true);
1645 (*userHistoryMap)[bundleName] = nullptr;
1646 EXPECT_EQ(bundleUserHistory->GetFirstUseTime(bundleName, userId), MAX_END_TIME);
1647 (*userHistoryMap)[bundleName] = std::make_shared<BundleActivePackageHistory>();
1648 EXPECT_EQ(bundleUserHistory->GetFirstUseTime(bundleName, userId), MAX_END_TIME);
1649 (*userHistoryMap)[bundleName]->bundlefirstUseTimeStamp_ = 100;
1650 EXPECT_EQ(bundleUserHistory->GetFirstUseTime(bundleName, userId), 100);
1651 }
1652
1653 /*
1654 * @tc.name: DeviceUsageStatisticsServiceTest_LoadConfigFile_001
1655 * @tc.desc: LoadConfigFile
1656 * @tc.type: FUNC
1657 * @tc.require: SR20250319441801 AR20250322520501
1658 */
1659 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadConfigFile_001,
1660 Function | MediumTest | TestSize.Level0)
1661 {
1662 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1663 EXPECT_NE(bundleActiveConfigReader, nullptr);
1664 std::string path = "test";
1665 bundleActiveConfigReader->LoadConfigFile(path.c_str());
1666 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 5 * 1024 * 1024);
1667 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 0);
1668 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 0);
1669 }
1670
1671 /*
1672 * @tc.name: DeviceUsageStatisticsServiceTest_LoadConfigFile_002
1673 * @tc.desc: LoadConfigFile
1674 * @tc.type: FUNC
1675 * @tc.require: SR20250319441801 AR20250322520501
1676 */
1677 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadConfigFile_002,
1678 Function | MediumTest | TestSize.Level0)
1679 {
1680 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1681 bundleActiveConfigReader->maxDataSize_ = 1;
1682 EXPECT_NE(bundleActiveConfigReader, nullptr);
1683 bundleActiveConfigReader->LoadConfigFile(CONFIG_PATH);
1684 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 6);
1685 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 5);
1686 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 5);
1687 }
1688
1689 /*
1690 * @tc.name: DeviceUsageStatisticsServiceTest_LoadConfigFile_003
1691 * @tc.desc: LoadConfigFile
1692 * @tc.type: FUNC
1693 * @tc.require: SR20250319441801 AR20250322520501
1694 */
1695 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadConfigFile_003,
1696 Function | MediumTest | TestSize.Level0)
1697 {
1698 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1699 bundleActiveConfigReader->maxDataSize_ = 1;
1700 EXPECT_NE(bundleActiveConfigReader, nullptr);
1701 bundleActiveConfigReader->LoadConfigFile(CONFIG_TEST1_PATH);
1702 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 1);
1703 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 5);
1704 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 4);
1705 }
1706
1707 /*
1708 * @tc.name: DeviceUsageStatisticsServiceTest_LoadConfigFile_004
1709 * @tc.desc: LoadConfigFile
1710 * @tc.type: FUNC
1711 * @tc.require: SR20250319441801 AR20250322520501
1712 */
1713 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadConfigFile_004,
1714 Function | MediumTest | TestSize.Level0)
1715 {
1716 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1717 EXPECT_NE(bundleActiveConfigReader, nullptr);
1718 bundleActiveConfigReader->LoadConfigFile(nullptr);
1719 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 5 * 1024 * 1024);
1720 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 0);
1721 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 0);
1722 }
1723
1724 /*
1725 * @tc.name: DeviceUsageStatisticsServiceTest_LoadMaxDataSize_001
1726 * @tc.desc: ConfigReader
1727 * @tc.type: FUNC
1728 * @tc.require: issuesIC2FBU
1729 */
1730 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadMaxDataSize_001,
1731 Function | MediumTest | TestSize.Level0)
1732 {
1733 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1734 bundleActiveConfigReader->maxDataSize_ = 0;
1735 EXPECT_NE(bundleActiveConfigReader, nullptr);
1736 cJSON* root = nullptr;
1737 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_PATH, root) || !root) {
1738 cJSON_Delete(root);
1739 FAIL() << "GetJsonFromFile failed";
1740 }
1741 bundleActiveConfigReader->LoadMaxDataSize(root);
1742 cJSON_Delete(root);
1743 EXPECT_EQ(bundleActiveConfigReader->maxDataSize_, 6);
1744 }
1745
1746 /*
1747 * @tc.name: DeviceUsageStatisticsServiceTest_LoadMaxDataSize_002
1748 * @tc.desc: ConfigReader
1749 * @tc.type: FUNC
1750 * @tc.require: issuesIC2FBU
1751 */
1752 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadMaxDataSize_002,
1753 Function | MediumTest | TestSize.Level0)
1754 {
1755 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1756 bundleActiveConfigReader->maxDataSize_ = 0;
1757 EXPECT_NE(bundleActiveConfigReader, nullptr);
1758 cJSON* root = nullptr;
1759 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_TEST1_PATH, root) || !root) {
1760 cJSON_Delete(root);
1761 FAIL() << "GetJsonFromFile failed";
1762 }
1763 bundleActiveConfigReader->LoadMaxDataSize(root);
1764 cJSON_Delete(root);
1765 EXPECT_EQ(bundleActiveConfigReader->maxDataSize_, 0);
1766 }
1767
1768 /*
1769 * @tc.name: DeviceUsageStatisticsServiceTest_LoadMaxDataSize_003
1770 * @tc.desc: ConfigReader
1771 * @tc.type: FUNC
1772 * @tc.require: issuesIC2FBU
1773 */
1774 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadMaxDataSize_003,
1775 Function | MediumTest | TestSize.Level0)
1776 {
1777 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1778 bundleActiveConfigReader->maxDataSize_ = 0;
1779 EXPECT_NE(bundleActiveConfigReader, nullptr);
1780 cJSON* root = nullptr;
1781 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_TEST2_PATH, root) || !root) {
1782 cJSON_Delete(root);
1783 FAIL() << "GetJsonFromFile failed";
1784 }
1785 bundleActiveConfigReader->LoadMaxDataSize(root);
1786 cJSON_Delete(root);
1787 EXPECT_EQ(bundleActiveConfigReader->maxDataSize_, 0);
1788 }
1789
1790 /*
1791 * @tc.name: DeviceUsageStatisticsServiceTest_LoadApplicationUsePeriodically_001
1792 * @tc.desc: ConfigReader
1793 * @tc.type: FUNC
1794 * @tc.require: SR20250319441801 AR20250322520501
1795 */
1796 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadApplicationUsePeriodically_001,
1797 Function | MediumTest | TestSize.Level0)
1798 {
1799 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1800 EXPECT_NE(bundleActiveConfigReader, nullptr);
1801 cJSON* root = cJSON_CreateObject();
1802 bundleActiveConfigReader->LoadApplicationUsePeriodically(root);
1803 cJSON_Delete(root);
1804 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 0);
1805 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().maxUseTimes, 0);
1806 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseDays, 0);
1807 }
1808
1809 /*
1810 * @tc.name: DeviceUsageStatisticsServiceTest_LoadApplicationUsePeriodically_002
1811 * @tc.desc: ConfigReader
1812 * @tc.type: FUNC
1813 * @tc.require: SR20250319441801 AR20250322520501
1814 */
1815 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadApplicationUsePeriodically_002,
1816 Function | MediumTest | TestSize.Level0)
1817 {
1818 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1819 EXPECT_NE(bundleActiveConfigReader, nullptr);
1820 cJSON* root = nullptr;
1821 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_PATH, root) || !root) {
1822 cJSON_Delete(root);
1823 FAIL() << "GetJsonFromFile failed";
1824 }
1825 bundleActiveConfigReader->LoadApplicationUsePeriodically(root);
1826 cJSON_Delete(root);
1827 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseTimes, 5);
1828 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().maxUseTimes, 15);
1829 EXPECT_EQ(bundleActiveConfigReader->GetApplicationUsePeriodicallyConfig().minUseDays, 6);
1830 }
1831
1832 /*
1833 * @tc.name: DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_001
1834 * @tc.desc: ConfigReader
1835 * @tc.type: FUNC
1836 * @tc.require: SR20250319441801 AR20250322520501
1837 */
1838 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_001,
1839 Function | MediumTest | TestSize.Level0)
1840 {
1841 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1842 EXPECT_NE(bundleActiveConfigReader, nullptr);
1843 cJSON* root = cJSON_CreateObject();
1844 bundleActiveConfigReader->LoadAppHighFreqPeriodThresholdConfig(root);
1845 cJSON_Delete(root);
1846 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 0);
1847 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTopUseHoursLimit, 0);
1848 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minHourUseDays, 0);
1849 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().maxHighFreqHourNum, 0);
1850 }
1851
1852 /*
1853 * @tc.name: DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_002
1854 * @tc.desc: ConfigReader
1855 * @tc.type: FUNC
1856 * @tc.require: SR20250319441801 AR20250322520501
1857 */
1858 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_002,
1859 Function | MediumTest | TestSize.Level0)
1860 {
1861 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1862 EXPECT_NE(bundleActiveConfigReader, nullptr);
1863 cJSON* root = nullptr;
1864 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_PATH, root) || !root) {
1865 cJSON_Delete(root);
1866 FAIL() << "GetJsonFromFile failed";
1867 }
1868 bundleActiveConfigReader->LoadAppHighFreqPeriodThresholdConfig(root);
1869 cJSON_Delete(root);
1870 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 5);
1871 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTopUseHoursLimit, 5);
1872 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minHourUseDays, 5);
1873 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().maxHighFreqHourNum, 3);
1874 }
1875
1876 /*
1877 * @tc.name: DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_003
1878 * @tc.desc: ConfigReader
1879 * @tc.type: FUNC
1880 * @tc.require: SR20250319441801 AR20250322520501
1881 */
1882 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_003,
1883 Function | MediumTest | TestSize.Level0)
1884 {
1885 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1886 EXPECT_NE(bundleActiveConfigReader, nullptr);
1887 cJSON* root = nullptr;
1888 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_TEST1_PATH, root) || !root) {
1889 cJSON_Delete(root);
1890 FAIL() << "GetJsonFromFile failed";
1891 }
1892 bundleActiveConfigReader->LoadAppHighFreqPeriodThresholdConfig(root);
1893 cJSON_Delete(root);
1894 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 4);
1895 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTopUseHoursLimit, 5);
1896 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minHourUseDays, 4);
1897 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().maxHighFreqHourNum, 3);
1898 }
1899
1900 /*
1901 * @tc.name: DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_004
1902 * @tc.desc: ConfigReader
1903 * @tc.type: FUNC
1904 * @tc.require: SR20250319441801 AR20250322520501
1905 */
1906 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_LoadAppHighFreqPeriodThresholdConfig_004,
1907 Function | MediumTest | TestSize.Level0)
1908 {
1909 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1910 EXPECT_NE(bundleActiveConfigReader, nullptr);
1911 cJSON* root = nullptr;
1912 if (!bundleActiveConfigReader->GetJsonFromFile(CONFIG_TEST2_PATH, root) || !root) {
1913 cJSON_Delete(root);
1914 FAIL() << "GetJsonFromFile failed";
1915 }
1916 bundleActiveConfigReader->LoadAppHighFreqPeriodThresholdConfig(root);
1917 cJSON_Delete(root);
1918 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTotalUseDays, 5);
1919 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minTopUseHoursLimit, 6);
1920 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().minHourUseDays, 4);
1921 EXPECT_EQ(bundleActiveConfigReader->GetAppHighFrequencyPeriodThresholdConfig().maxHighFreqHourNum, 3);
1922 }
1923
1924 /*
1925 * @tc.name: DeviceUsageStatisticsServiceTest_GetMaxDataSize_001
1926 * @tc.desc: ConfigReader
1927 * @tc.type: FUNC
1928 * @tc.require: issuesIC2FBU
1929 */
1930 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetMaxDataSize_001,
1931 Function | MediumTest | TestSize.Level0)
1932 {
1933 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1934 bundleActiveConfigReader->maxDataSize_ = 0;
1935 EXPECT_NE(bundleActiveConfigReader, nullptr);
1936 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 5 * 1024 * 1024);
1937 }
1938
1939 /*
1940 * @tc.name: DeviceUsageStatisticsServiceTest_GetMaxDataSize_002
1941 * @tc.desc: ConfigReader
1942 * @tc.type: FUNC
1943 * @tc.require: issuesIC2FBU
1944 */
1945 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetMaxDataSize_002,
1946 Function | MediumTest | TestSize.Level0)
1947 {
1948 auto bundleActiveConfigReader = std::make_shared<BundleActiveConfigReader>();
1949 bundleActiveConfigReader->maxDataSize_ = 10;
1950 EXPECT_NE(bundleActiveConfigReader, nullptr);
1951 EXPECT_EQ(bundleActiveConfigReader->GetMaxDataSize(), 10);
1952 }
1953
1954 /*
1955 * @tc.name: DeviceUsageStatisticsServiceTest_RestoreToDatabase_002
1956 * @tc.desc: RestoreToDatabase
1957 * @tc.type: FUNC
1958 * @tc.require: issuesIC2FBU
1959 */
1960 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_RestoreToDatabase_002,
1961 Function | MediumTest | TestSize.Level0)
1962 {
1963 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
1964 bundleActiveCore->Init();
1965 bundleActiveCore->InitBundleGroupController();
1966 int userId = 100;
1967 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore.get()), false);
1968 int64_t timeStamp = 20000000000000;
1969 userService->Init(timeStamp);
1970 BundleActiveEvent event;
1971 userService->currentStats_[BundleActivePeriodStats::PERIOD_DAILY]->events_.Clear();
1972 userService->currentStats_[BundleActivePeriodStats::PERIOD_DAILY]->events_.Insert(event);
1973 EXPECT_EQ(userService->currentStats_[BundleActivePeriodStats::PERIOD_DAILY]->events_.Size(), 1);
1974 bundleActiveCore->userStatServices_[userId] = userService;
1975 bundleActiveCore->RestoreToDatabase(userId);
1976 bundleActiveCore->percentUserSpaceLimit_ = 0;
1977 bundleActiveCore->RestoreToDatabase(userId);
1978 EXPECT_EQ(userService->currentStats_[BundleActivePeriodStats::PERIOD_DAILY]->events_.Size(), 1);
1979 bundleActiveCore->percentUserSpaceLimit_ = 1;
1980 bundleActiveCore->RestoreToDatabase(userId);
1981 EXPECT_NE(bundleActiveCore, nullptr);
1982 }
1983
1984 /*
1985 * @tc.name: DeviceUsageStatisticsServiceTest_ProcessDataSize_001
1986 * @tc.desc: RestoreToDatabase
1987 * @tc.type: FUNC
1988 * @tc.require: issuesIC2FBU
1989 */
1990 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ProcessDataSize_001,
1991 Function | MediumTest | TestSize.Level0)
1992 {
1993 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
1994 bundleActiveCore->Init();
1995 bundleActiveCore->ProcessDataSize();
1996 bundleActiveCore->bundleActiveConfigReader_->maxDataSize_ = 0;
1997 bundleActiveCore->ProcessDataSize();
1998 EXPECT_NE(bundleActiveCore, nullptr);
1999 }
2000
2001 /*
2002 * @tc.name: DeviceUsageStatisticsServiceTest_DeleteExcessiveTableData_001
2003 * @tc.desc: RestoreToDatabase
2004 * @tc.type: FUNC
2005 * @tc.require: issuesIC2FBU
2006 */
2007 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DeleteExcessiveTableData_001,
2008 Function | MediumTest | TestSize.Level0)
2009 {
2010 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2011 bundleActiveCore->DeleteExcessiveTableData();
2012 bundleActiveCore->ProcessDataSize();
2013 bundleActiveCore->Init();
2014 bundleActiveCore->InitBundleGroupController();
2015 int userId = 100;
2016 auto userService = std::make_shared<BundleActiveUserService>(userId, *(bundleActiveCore.get()), false);
2017 int64_t timeStamp = 20000000000000;
2018 userService->Init(timeStamp);
2019 bundleActiveCore->userStatServices_[userId] = userService;
2020 bundleActiveCore->currentUsedUser_ = userId;
2021 bundleActiveCore->bundleActiveConfigReader_->maxDataSize_ = 1;
2022 bundleActiveCore->DeleteExcessiveTableData();
2023 bundleActiveCore->bundleActiveConfigReader_->maxDataSize_ = 10 * 1024 * 1024;
2024 bundleActiveCore->DeleteExcessiveTableData();
2025 EXPECT_NE(bundleActiveCore, nullptr);
2026 }
2027
2028 /*
2029 * @tc.name: DeviceUsageStatisticsServiceTest_ProcessEvents_001
2030 * @tc.desc: ProcessEvents
2031 * @tc.type: FUNC
2032 * @tc.require: SR20250319441801 AR20250322520501
2033 */
2034 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ProcessEvents_001,
2035 Function | MediumTest | TestSize.Level0)
2036 {
2037 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2038 std::vector<BundleActiveEvent> events;
2039 events.emplace_back(2, 1750349685948);
2040 events.emplace_back(3, 1750349694953);
2041 events.emplace_back(2, 1750349705944);
2042 events.emplace_back(4, 1750349715942);
2043 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2044 bundleActiveCore->ProcessEvents(appUsages, events);
2045 EXPECT_EQ(appUsages.size(), 1);
2046 const time_t timestampSeconds = 1750349685948 / 1000;
2047 std::tm* timeTm = std::localtime(×tampSeconds);
2048 if (timeTm == nullptr) {
2049 FAIL() << "localtime faild";
2050 }
2051 EXPECT_EQ(appUsages[""].dayUsage[timeTm->tm_wday], 2);
2052 EXPECT_EQ(appUsages[""].hourUsage[timeTm->tm_wday][timeTm->tm_hour], 2);
2053 EXPECT_EQ(appUsages[""].hourTotalUse[timeTm->tm_hour], 2);
2054 }
2055
2056 /*
2057 * @tc.name: DeviceUsageStatisticsServiceTest_ProcessEvents_002
2058 * @tc.desc: ProcessEvents
2059 * @tc.type: FUNC
2060 * @tc.require: SR20250319441801 AR20250322520501
2061 */
2062 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ProcessEvents_002,
2063 Function | MediumTest | TestSize.Level0)
2064 {
2065 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2066 std::vector<BundleActiveEvent> events;
2067 events.emplace_back(1, 1750349685948);
2068 events.emplace_back(2, 0);
2069 events.emplace_back(1, 1750349705944);
2070 events.emplace_back(1, 1750349715942);
2071 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2072 bundleActiveCore->ProcessEvents(appUsages, events);
2073 EXPECT_EQ(appUsages.size(), 1);
2074 const time_t timestampSeconds = 1750349685948 / 1000;
2075 std::tm* timeTm = std::localtime(×tampSeconds);
2076 if (timeTm == nullptr) {
2077 FAIL() << "localtime faild";
2078 }
2079 EXPECT_EQ(appUsages[""].dayUsage[timeTm->tm_wday], 0);
2080 EXPECT_EQ(appUsages[""].hourUsage[timeTm->tm_wday][timeTm->tm_hour], 0);
2081 EXPECT_EQ(appUsages[""].hourTotalUse[timeTm->tm_hour], 0);
2082 EXPECT_EQ(appUsages[""].startTime, 0);
2083 }
2084
2085 /*
2086 * @tc.name: DeviceUsageStatisticsServiceTest_ProcessEvents_003
2087 * @tc.desc: ProcessEvents
2088 * @tc.type: FUNC
2089 * @tc.require: SR20250319441801 AR20250322520501
2090 */
2091 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ProcessEvents_003,
2092 Function | MediumTest | TestSize.Level0)
2093 {
2094 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2095 std::vector<BundleActiveEvent> events;
2096 events.emplace_back(1, 1750349685948);
2097 events.emplace_back(1, 1750349694953);
2098 events.emplace_back(1, 1750349705944);
2099 events.emplace_back(1, 1750349715942);
2100 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2101 bundleActiveCore->ProcessEvents(appUsages, events);
2102 EXPECT_EQ(appUsages.size(), 0);
2103 }
2104
2105 /*
2106 * @tc.name: DeviceUsageStatisticsServiceTest_ProcessEvents_004
2107 * @tc.desc: ProcessEvents
2108 * @tc.type: FUNC
2109 * @tc.require: SR20250319441801 AR20250322520501
2110 */
2111 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_ProcessEvents_004,
2112 Function | MediumTest | TestSize.Level0)
2113 {
2114 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2115 std::vector<BundleActiveEvent> events;
2116 events.emplace_back(1, 1750349685948);
2117 events.emplace_back(1, 1750349694953);
2118 events.emplace_back(1, 1750349705944);
2119 events.emplace_back(3, 1750349715942);
2120 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2121 bundleActiveCore->ProcessEvents(appUsages, events);
2122 EXPECT_EQ(appUsages.size(), 0);
2123 }
2124
2125 /*
2126 * @tc.name: DeviceUsageStatisticsServiceTest_GetTopHourUsage_001
2127 * @tc.desc: GetTopHourUsage
2128 * @tc.type: FUNC
2129 * @tc.require: SR20250319441801 AR20250322520501
2130 */
2131 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetTopHourUsage_001,
2132 Function | MediumTest | TestSize.Level0)
2133 {
2134 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2135 bundleActiveCore->bundleActiveConfigReader_ = std::make_shared<BundleActiveConfigReader>();
2136 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTotalUseDays = 1;
2137 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTopUseHoursLimit = 1;
2138 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minHourUseDays = 1;
2139 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.maxHighFreqHourNum = 1;
2140 std::vector<std::vector<int32_t>> topHoursUsage;
2141 BundleActiveCore::AppUsage appUsage = {{300, 300, 300, 300, 300, 300, 300},
2142 {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2143 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2144 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2145 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2146 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2147 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2148 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}},
2149 {7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 140, 147, 154, 161, 168},
2150 1750349685948};
2151 bundleActiveCore->GetTopHourUsage(topHoursUsage, appUsage);
2152 EXPECT_EQ(topHoursUsage.size(), 1);
2153 }
2154
2155 /*
2156 * @tc.name: DeviceUsageStatisticsServiceTest_GetTopHourUsage_002
2157 * @tc.desc: GetTopHourUsage
2158 * @tc.type: FUNC
2159 * @tc.require: SR20250319441801 AR20250322520501
2160 */
2161 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetTopHourUsage_002,
2162 Function | MediumTest | TestSize.Level0)
2163 {
2164 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2165 bundleActiveCore->bundleActiveConfigReader_ = std::make_shared<BundleActiveConfigReader>();
2166 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTotalUseDays = 1;
2167 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTopUseHoursLimit = 1;
2168 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minHourUseDays = 1;
2169 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.maxHighFreqHourNum = 1;
2170 std::vector<std::vector<int32_t>> topHoursUsage;
2171 BundleActiveCore::AppUsage appUsage;
2172 bundleActiveCore->GetTopHourUsage(topHoursUsage, appUsage);
2173 EXPECT_EQ(topHoursUsage.size(), 0);
2174 }
2175
2176 /*
2177 * @tc.name: DeviceUsageStatisticsServiceTest_GetFreqBundleHours_001
2178 * @tc.desc: GetFreqBundleHours
2179 * @tc.type: FUNC
2180 * @tc.require: SR20250319441801 AR20250322520501
2181 */
2182 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetFreqBundleHours_001,
2183 Function | MediumTest | TestSize.Level0)
2184 {
2185 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2186 bundleActiveCore->bundleActiveConfigReader_ = std::make_shared<BundleActiveConfigReader>();
2187 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTotalUseDays = 1;
2188 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTopUseHoursLimit = 6;
2189 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minHourUseDays = 1;
2190 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.maxHighFreqHourNum = 1;
2191 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2192 BundleActiveCore::AppUsage appUsage = {{300, 300, 300, 300, 300, 300, 300},
2193 {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2194 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2195 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2196 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2197 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2198 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24},
2199 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}},
2200 {7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 140, 147, 154, 161, 168},
2201 1750349685948};
2202 appUsages["bundleNameA"] = appUsage;
2203 appUsages["bundleNameB"] = BundleActiveCore::AppUsage();
2204 std::vector<BundleActiveHighFrequencyPeriod> appFreqHours;
2205 bundleActiveCore->GetFreqBundleHours(appFreqHours, appUsages);
2206 EXPECT_EQ(appFreqHours.size(), 1);
2207 EXPECT_EQ(appFreqHours[0].bundleName_, "bundleNameA");
2208 EXPECT_EQ(appFreqHours[0].highFreqHours_.size(), 1);
2209 EXPECT_EQ(appFreqHours[0].highFreqHours_[0], 23);
2210 }
2211
2212 /*
2213 * @tc.name: DeviceUsageStatisticsServiceTest_GetFreqBundleHours_002
2214 * @tc.desc: GetFreqBundleHours
2215 * @tc.type: FUNC
2216 * @tc.require: SR20250319441801 AR20250322520501
2217 */
2218 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_GetFreqBundleHours_002,
2219 Function | MediumTest | TestSize.Level0)
2220 {
2221 auto bundleActiveCore = std::make_shared<BundleActiveCore>();
2222 bundleActiveCore->bundleActiveConfigReader_ = std::make_shared<BundleActiveConfigReader>();
2223 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTotalUseDays = 1;
2224 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minTopUseHoursLimit = 1;
2225 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.minHourUseDays = 1;
2226 bundleActiveCore->bundleActiveConfigReader_->appHighFreqPeriodThresholdConfig_.maxHighFreqHourNum = 1;
2227 std::unordered_map<std::string, BundleActiveCore::AppUsage> appUsages;
2228 appUsages["bundleNameA"] = BundleActiveCore::AppUsage();
2229 appUsages["bundleNameB"] = BundleActiveCore::AppUsage();
2230 std::vector<BundleActiveHighFrequencyPeriod> appFreqHours;
2231 bundleActiveCore->GetFreqBundleHours(appFreqHours, appUsages);
2232 EXPECT_EQ(appFreqHours.size(), 0);
2233 }
2234
2235 /*
2236 * @tc.name: DeviceUsageStatisticsServiceTest_DumpHighFreqHourUsage_001
2237 * @tc.desc: DumpHighFreqHourUsage
2238 * @tc.type: FUNC
2239 * @tc.require: SR20250319441801 AR20250322520501
2240 */
2241 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DumpHighFreqHourUsage_001,
2242 Function | MediumTest | TestSize.Level0)
2243 {
2244 auto bundleActiveService = std::make_shared<BundleActiveService>();
2245 std::vector<std::string> dumpOption = {"option1", "option2"};
2246 std::vector<std::string> dumpInfo;
2247 int32_t result = bundleActiveService->DumpHighFreqHourUsage(dumpOption, dumpInfo);
2248 EXPECT_EQ(result, -1);
2249 }
2250
2251 /*
2252 * @tc.name: DeviceUsageStatisticsServiceTest_DumpHighFreqHourUsage_002
2253 * @tc.desc: DumpHighFreqHourUsage
2254 * @tc.type: FUNC
2255 * @tc.require: SR20250319441801 AR20250322520501
2256 */
2257 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_DumpHighFreqHourUsage_002,
2258 Function | MediumTest | TestSize.Level0)
2259 {
2260 auto bundleActiveService = std::make_shared<BundleActiveService>();
2261 bundleActiveService->bundleActiveCore_ = std::make_shared<BundleActiveCore>();
2262 std::vector<std::string> dumpOption = {"option1", "option2", "0"};
2263 std::vector<std::string> dumpInfo;
2264
2265 int32_t result = bundleActiveService->DumpHighFreqHourUsage(dumpOption, dumpInfo);
2266 EXPECT_EQ(result, 0);
2267 EXPECT_EQ(dumpInfo.size(), 1);
2268 EXPECT_EQ(dumpInfo[0], "appFreqHour size 0\n");
2269 }
2270
2271 /*
2272 * @tc.name: DeviceUsageStatisticsServiceTest_QueryBundleTodayLatestUsedTime_001
2273 * @tc.desc: QueryBundleTodayLatestUsedTime
2274 * @tc.type: FUNC
2275 * @tc.require: SR20250319441801 AR20250322520501
2276 */
2277 HWTEST_F(DeviceUsageStatisticsServiceTest, DeviceUsageStatisticsServiceTest_QueryBundleTodayLatestUsedTime_001,
2278 Function | MediumTest | TestSize.Level0)
2279 {
2280 auto bundleActiveService = std::make_shared<BundleActiveService>();
2281 bundleActiveService->bundleActiveCore_ = std::make_shared<BundleActiveCore>();
2282 int64_t latestUsedTime = 0;
2283 ErrCode result = bundleActiveService->QueryBundleTodayLatestUsedTime(latestUsedTime, "testBundleName", -1);
2284 EXPECT_NE(result, 0);
2285 EXPECT_EQ(latestUsedTime, 0);
2286 result = bundleActiveService->QueryBundleTodayLatestUsedTime(latestUsedTime, "testBundleName", 100);
2287 EXPECT_NE(result, 0);
2288 EXPECT_EQ(latestUsedTime, 0);
2289 }
2290 } // namespace DeviceUsageStats
2291 } // namespace OHOS