1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <string>
17
18 #include <gtest/gtest.h>
19 #include "system_ability_definition.h"
20
21 #include "bundle_active_power_state_callback_service.h"
22 #include "bundle_active_stub.h"
23 #include "bundle_active_core.h"
24 #include "bundle_active_continuous_task_observer.h"
25 #include "bundle_active_bundle_mgr_helper.h"
26 #include "bundle_active_app_state_observer.h"
27 #include "bundle_active_usage_database.h"
28 #include "bundle_active_account_helper.h"
29 #include "bundle_active_power_state_callback_service.h"
30 #include "bundle_active_open_callback.h"
31 #include "bundle_active_shutdown_callback_service.h"
32 #include "bundle_active_binary_search.h"
33 #include "bundle_active_debug_mode.h"
34
35 using namespace testing::ext;
36
37 namespace OHOS {
38 namespace DeviceUsageStats {
39
40 class BundleActiveTotalTest : public testing::Test {
41 public:
42 static void SetUpTestCase(void);
43 static void TearDownTestCase(void);
44 void SetUp();
45 void TearDown();
46 };
47
SetUpTestCase(void)48 void BundleActiveTotalTest::SetUpTestCase(void)
49 {
50 }
51
TearDownTestCase(void)52 void BundleActiveTotalTest::TearDownTestCase(void)
53 {
54 }
55
SetUp(void)56 void BundleActiveTotalTest::SetUp(void)
57 {
58 }
59
TearDown(void)60 void BundleActiveTotalTest::TearDown(void)
61 {
62 }
63
64 /*
65 * @tc.name: BundleActiveAccountHelperTest_001
66 * @tc.desc: test the interface of bundle_active_account_helper
67 * @tc.type: FUNC
68 * @tc.require: DTS2023121404861
69 */
70 HWTEST_F(BundleActiveTotalTest, BundleActiveAccountHelperTest_001, Function | MediumTest | Level0)
71 {
72 std::vector<int32_t> activatedOsAccountIds;
73 BundleActiveAccountHelper::GetActiveUserId(activatedOsAccountIds);
74 SUCCEED();
75 }
76
77 /*
78 * @tc.name: BundleActiveContinuousTaskObserverTest_001
79 * @tc.desc: test the interface of bundle_active_continuous_task_observer
80 * @tc.type: FUNC
81 * @tc.require: DTS2023121404861
82 */
83 HWTEST_F(BundleActiveTotalTest, BundleActiveContinuousTaskObserverTest_001, Function | MediumTest | Level0)
84 {
85 #ifdef BGTASKMGR_ENABLE
86 #ifdef OS_ACCOUNT_PART_ENABLED
87 std::shared_ptr<AppExecFwk::EventRunner> runner;
88 auto reportHandler = std::make_shared<BundleActiveReportHandler>(runner);
89 auto reportHandler1 = std::make_shared<BundleActiveReportHandler>(runner);
90 BundleActiveContinuousTaskObserver test;
91 test.Init(reportHandler);
92 test.Init(reportHandler1);
93 SUCCEED();
94
95 std::shared_ptr<OHOS::BackgroundTaskMgr::ContinuousTaskCallbackInfo> continuousTaskCallbackInfo;
96 test.OnContinuousTaskStart(continuousTaskCallbackInfo);
97
98 test.ReportContinuousTaskEvent(continuousTaskCallbackInfo, true);
99 test.ReportContinuousTaskEvent(continuousTaskCallbackInfo, false);
100 SUCCEED();
101
102 test.GetBundleMgr();
103 test.bundleMgr_ = nullptr;
104 test.GetBundleMgr();
105 SUCCEED();
106 #endif
107 #endif
108 }
109
110 /*
111 * @tc.name: BundleActiveBundleMgrHelperTest_001
112 * @tc.desc: test the interface of bundle_active_bundle_mgr_helper
113 * @tc.type: FUNC
114 * @tc.require: DTS2023121404861
115 */
116 HWTEST_F(BundleActiveTotalTest, BundleActiveBundleMgrHelperTest_001, Function | MediumTest | Level0)
117 {
118 AppExecFwk::ApplicationFlag flag = AppExecFwk::GET_BASIC_APPLICATION_INFO;
119 AppExecFwk::ApplicationInfo appInfo;
120 AppExecFwk::BundleInfo bundleInfo;
121 BundleActiveBundleMgrHelper test;
122
123 std::string string = "test";
124 test.GetNameForUid(0, string);
125 test.GetApplicationInfo(string, flag, 0, appInfo);
126 test.GetBundleInfo(string, AppExecFwk::BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO, bundleInfo, 0);
127 SUCCEED();
128
129 test.bundleMgr_ = nullptr;
130 test.GetNameForUid(0, string);
131 test.GetApplicationInfo(string, flag, 0, appInfo);
132 test.GetBundleInfo(string, AppExecFwk::BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO, bundleInfo, 0);
133 SUCCEED();
134 }
135
136 /*
137 * @tc.name: BundleActiveBundleMgrHelperTest_002
138 * @tc.desc: test GetApplicationInfos
139 * @tc.type: FUNC
140 * @tc.require: issuesI9SQ6G
141 */
142 HWTEST_F(BundleActiveTotalTest, BundleActiveBundleMgrHelperTest_002, Function | MediumTest | Level0)
143 {
144 AppExecFwk::ApplicationFlag flag = AppExecFwk::GET_BASIC_APPLICATION_INFO;
145 std::vector<AppExecFwk::ApplicationInfo> appInfos;
146 BundleActiveBundleMgrHelper::GetInstance()->GetApplicationInfos(flag, 0, appInfos);
147 SUCCEED();
148 }
149
150 /*
151 * @tc.name: BundleActiveBundleMgrHelperTest_003
152 * @tc.desc: test is launcherApp
153 * @tc.type: FUNC
154 * @tc.require: issuesI9SQ6G
155 */
156 HWTEST_F(BundleActiveTotalTest, BundleActiveBundleMgrHelperTest_003, Function | MediumTest | Level0)
157 {
158 BundleActiveBundleMgrHelper::GetInstance()->InitLauncherAppMap();
159 BundleActiveBundleMgrHelper::GetInstance()->IsLauncherApp("test", 0);
160 BundleActiveBundleMgrHelper::GetInstance()->launcherAppMap_["test"] = false;
161 BundleActiveBundleMgrHelper::GetInstance()->IsLauncherApp("test", 0);
162 SUCCEED();
163 }
164
165 /*
166 * @tc.name: BundleActiveBundleMgrHelperTest_004
167 * @tc.desc: test is packageContainUidMap
168 * @tc.type: FUNC
169 * @tc.require: issuesI9SQ6G
170 */
171 HWTEST_F(BundleActiveTotalTest, BundleActiveBundleMgrHelperTest_004, Function | MediumTest | Level0)
172 {
173 BundleActiveBundleMgrHelper::GetInstance()->packageContainUidMap_.clear();
174 BundleActiveBundleMgrHelper::GetInstance()->InsertPackageUid("test", 0);
175 EXPECT_NE(BundleActiveBundleMgrHelper::GetInstance()->packageContainUidMap_.size(), 0);
176 BundleActiveBundleMgrHelper::GetInstance()->DeletePackageUid("test", 0);
177 EXPECT_EQ(BundleActiveBundleMgrHelper::GetInstance()->packageContainUidMap_.size(), 0);
178 BundleActiveBundleMgrHelper::GetInstance()->InsertPackageUid("test", 0);
179 auto uidSet = BundleActiveBundleMgrHelper::GetInstance()->GetPackageUidSet("test");
180 EXPECT_NE(uidSet.size(), 0);
181 BundleActiveBundleMgrHelper::GetInstance()->DeleteMemPackage("test");
182 uidSet = BundleActiveBundleMgrHelper::GetInstance()->GetPackageUidSet("test");
183 EXPECT_EQ(uidSet.size(), 0);
184 }
185
186 /*
187 * @tc.name: BundleActiveAppStateObserverTest_001
188 * @tc.desc: test the interface of bundle_active_app_state_observer
189 * @tc.type: FUNC
190 * @tc.require: DTS2023121404861
191 */
192 HWTEST_F(BundleActiveTotalTest, BundleActiveAppStateObserverTest_001, Function | MediumTest | Level0)
193 {
194 AbilityStateData abilityStateData;
195 auto reportHandler = std::make_shared<BundleActiveReportHandler>();
196 BundleActiveAppStateObserver test;
197 test.Init(reportHandler);
198 test.OnAbilityStateChanged(abilityStateData);
199
200 test.Init(reportHandler);
201 abilityStateData.abilityState = static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_FOREGROUND);
202 test.OnAbilityStateChanged(abilityStateData);
203 SUCCEED();
204
205 abilityStateData.abilityState = static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_BACKGROUND);
206 test.OnAbilityStateChanged(abilityStateData);
207 SUCCEED();
208
209 abilityStateData.abilityState = static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_TERMINATED);
210 test.OnAbilityStateChanged(abilityStateData);
211 SUCCEED();
212 }
213
214 /*
215 * @tc.name: BundleActiveUsageDatabaseTest_001
216 * @tc.desc: test the interface of bundle_active_usage_database
217 * @tc.type: FUNC
218 * @tc.require: DTS2023121404861
219 */
220 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_001, Function | MediumTest | Level0)
221 {
222 BundleActiveUsageDatabase test;
223 test.InitDatabaseTableInfo(test.ParseStartTime(test.eventTableName_)-1);
224 SUCCEED();
225 }
226
227 /*
228 * @tc.name: BundleActiveUsageDatabaseTest_002
229 * @tc.desc: test the interface of bundle_active_usage_database
230 * @tc.type: FUNC
231 * @tc.require: DTS2023121404861
232 */
233 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_002, Function | MediumTest | Level0)
234 {
235 BundleActiveUsageDatabase test;
236 test.debugDatabase_ = true;
237 test.DeleteExcessiveTableData(100);
238 test.DeleteExcessiveTableData(0);
239 SUCCEED();
240 }
241
242 /*
243 * @tc.name: BundleActiveUsageDatabaseTest_003
244 * @tc.desc: test the interface of bundle_active_usage_database
245 * @tc.type: FUNC
246 * @tc.require: DTS2023121404861
247 */
248 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_003, Function | MediumTest | Level0)
249 {
250 BundleActiveUsageDatabase test;
251 test.GetOverdueTableCreateTime(100, 0);
252 SUCCEED();
253 }
254
255 /*
256 * @tc.name: BundleActiveUsageDatabaseTest_005
257 * @tc.desc: test the interface of bundle_active_usage_database
258 * @tc.type: FUNC
259 * @tc.require: DTS2023121404861
260 */
261 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_005, Function | MediumTest | Level0)
262 {
263 BundleActiveUsageDatabase test;
264 test.bundleHistoryTableName_ = "unknownTableName";
265 std::shared_ptr<map<string, std::shared_ptr<BundleActivePackageHistory>>> userHistory;
266 test.PutBundleHistoryData(0, userHistory);
267 test.GetTableIndexSql(0, 0, true, 0);
268 test.GetTableIndexSql(5, 0, true, 0);
269 test.GetTableIndexSql(5, 0, false, 0);
270 test.GetTableIndexSql(5, 0, false, 1);
271 test.GetTableIndexSql(5, 0, false, 2);
272 test.GetTableIndexSql(0, 0, false, 0);
273 SUCCEED();
274 }
275
276 /*
277 * @tc.name: BundleActiveUsageDatabaseTest_006
278 * @tc.desc: test the interface of bundle_active_usage_database
279 * @tc.type: FUNC
280 * @tc.require: DTS2023121404861
281 */
282 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_006, Function | MediumTest | Level0)
283 {
284 BundleActiveUsageDatabase test;
285 std::shared_ptr<NativeRdb::RdbStore> rdbStore;
286 test.SetNewIndexWhenTimeChanged(5, 0, 0, rdbStore);
287 SUCCEED();
288 test.RenameTableName(0, 0, 0);
289 test.ExecuteRenameTableName("test", 0, 0, rdbStore);
290 SUCCEED();
291 }
292
293 /*
294 * @tc.name: BundleActiveUsageDatabaseTest_007
295 * @tc.desc: test the interface of bundle_active_usage_database
296 * @tc.type: FUNC
297 * @tc.require: DTS2023121404861
298 */
299 HWTEST_F(BundleActiveTotalTest, BundleActiveUsageDatabaseTest_007, Function | MediumTest | Level0)
300 {
301 BundleActiveUsageDatabase test;
302 std::shared_ptr<NativeRdb::RdbStore> rdbStore;
303 BundleActiveFormRecord formRecord;
304 test.UpdateFormData(0, "test", "test", formRecord, rdbStore);
305 test.GetSystemEventName(0);
306 test.JudgeQueryCondition(0, 0, 1);
307 SUCCEED();
308 }
309
310 /*
311 * @tc.name: BundleActivePowerStateCallbackServiceTest_001
312 * @tc.desc: test the interface of bundle_active_usage_database
313 * @tc.type: FUNC
314 * @tc.require: DTS2023121404861
315 */
316 HWTEST_F(BundleActiveTotalTest, BundleActivePowerStateCallbackServiceTest_001, Function | MediumTest | Level0)
317 {
318 #ifdef DEVICE_USAGES_STATISTICS_POWERMANGER_ENABLE
319 BundleActivePowerStateCallbackService test1(nullptr);
320
321 std::shared_ptr<BundleActiveCore> bundleActiveCore = std::make_shared<BundleActiveCore>();
322 BundleActivePowerStateCallbackService test2(bundleActiveCore);
323
324 test2.OnPowerStateChanged(PowerState::AWAKE);
325 SUCCEED();
326 test2.OnPowerStateChanged(PowerState::SLEEP);
327 SUCCEED();
328 #endif
329 }
330
331 /*
332 * @tc.name: BundleActiveBinarySearchTest_001
333 * @tc.desc: test the interface of bundle_active_binary_search
334 * @tc.type: FUNC
335 * @tc.require: DTS2023121404861
336 */
337 HWTEST_F(BundleActiveTotalTest, BundleActiveBinarySearchTest_001, Function | MediumTest | Level0)
338 {
339 std::vector<int64_t> tableNameArray;
340 BundleActiveBinarySearch test;
341 test.BinarySearch(tableNameArray, 0);
342 test.BinarySearch(tableNameArray, -100);
343 SUCCEED();
344 }
345 }
346 }