• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(&timestampSeconds);
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(&timestampSeconds);
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