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