1 /*
2 * Copyright (c) 2021-2023 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 <gtest/gtest.h>
17 #include <limits>
18
19 #define private public
20 #include "app_mgr_service_inner.h"
21 #include "app_running_record.h"
22 #include "iservice_registry.h"
23 #include "module_running_record.h"
24 #undef private
25
26 #include "ability_info.h"
27 #include "ability_running_record.h"
28 #include "app_record_id.h"
29 #include "app_scheduler_host.h"
30 #include "application_info.h"
31 #include "bundle_mgr_interface.h"
32 #include "event_handler.h"
33 #include "hilog_tag_wrapper.h"
34 #include "if_system_ability_manager.h"
35 #include "iremote_object.h"
36 #include "mock_ability_token.h"
37 #include "mock_app_mgr_service_inner.h"
38 #include "mock_app_scheduler.h"
39 #include "mock_app_spawn_client.h"
40 #include "mock_bundle_installer_service.h"
41 #include "mock_bundle_manager_service.h"
42 #include "mock_iapp_state_callback.h"
43 #include "mock_render_scheduler.h"
44 #include "mock_system_ability_manager.h"
45 #include "param.h"
46 #include "refbase.h"
47 #include "ui_extension_utils.h"
48 #include "window_visibility_info.h"
49
50 using namespace testing::ext;
51 using testing::_;
52 using testing::Return;
53 using testing::SetArgReferee;
54 using ::testing::DoAll;
55
56 namespace OHOS {
57 namespace AppExecFwk {
58 namespace {
59 static constexpr int64_t NANOSECONDS = 1000000000; // NANOSECONDS mean 10^9 nano second
60 static constexpr int64_t MICROSECONDS = 1000000; // MICROSECONDS mean 10^6 millias second
61 constexpr int32_t BUNDLE_MGR_SERVICE_SYS_ABILITY_ID = 401;
62 sptr<MockBundleInstallerService> mockBundleInstaller = new (std::nothrow) MockBundleInstallerService();
63 sptr<MockBundleManagerService> mockBundleMgr = new (std::nothrow) MockBundleManagerService();
64 }
65 class AmsAppRunningRecordTest : public testing::Test {
66 public:
67 static void SetUpTestCase();
68 static void TearDownTestCase();
69 void SetUp();
70 void TearDown();
71 void MockBundleInstallerAndSA() const;
72 void MockBundleInstaller() const;
73 sptr<ISystemAbilityManager> iSystemAbilityMgr_ = nullptr;
74 sptr<AppExecFwk::MockSystemAbilityManager> mockSystemAbility_ = nullptr;
75
76 protected:
GetTestProcessName()77 static const std::string GetTestProcessName()
78 {
79 return "com.ohos.test.helloworld";
80 }
GetTestAppName()81 static const std::string GetTestAppName()
82 {
83 return "com.ohos.test.helloworld";
84 }
GetTestAbilityName()85 static const std::string GetTestAbilityName()
86 {
87 return "test_ability_name";
88 }
GetTestUid()89 static int GetTestUid()
90 {
91 // a valid inner uid value which is not border value.
92 const static int VALID_UID_VALUE = 1010;
93 return VALID_UID_VALUE;
94 }
95
96 std::shared_ptr<AppRunningRecord> GetTestAppRunningRecord();
97 sptr<IAppScheduler> GetMockedAppSchedulerClient() const;
98 std::shared_ptr<AppRunningRecord> StartLoadAbility(const sptr<IRemoteObject>& token,
99 const std::shared_ptr<AbilityInfo>& abilityInfo, const std::shared_ptr<ApplicationInfo>& appInfo,
100 const pid_t newPid) const;
GetMockToken() const101 sptr<MockAbilityToken> GetMockToken() const
102 {
103 return mock_token_;
104 }
105
106 protected:
107 std::shared_ptr<AbilityRunningRecord> testAbilityRecord_;
108 sptr<IAppScheduler> client_;
109 sptr<MockAppScheduler> mockAppSchedulerClient_;
110 std::shared_ptr<AppRunningRecord> testAppRecord_;
111 std::unique_ptr<AppMgrServiceInner> service_;
112 sptr<MockAbilityToken> mock_token_;
113 };
114
SetUpTestCase()115 void AmsAppRunningRecordTest::SetUpTestCase()
116 {}
117
TearDownTestCase()118 void AmsAppRunningRecordTest::TearDownTestCase()
119 {}
120
SetUp()121 void AmsAppRunningRecordTest::SetUp()
122 {
123 mockAppSchedulerClient_ = new (std::nothrow) MockAppScheduler();
124 service_.reset(new (std::nothrow) AppMgrServiceInner());
125 mock_token_ = new (std::nothrow) MockAbilityToken();
126 client_ = iface_cast<IAppScheduler>(mockAppSchedulerClient_.GetRefPtr());
127 mockSystemAbility_ = new (std::nothrow) AppExecFwk::MockSystemAbilityManager();
128 iSystemAbilityMgr_ = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
129 SystemAbilityManagerClient::GetInstance().systemAbilityManager_ = mockSystemAbility_;
130 }
131
TearDown()132 void AmsAppRunningRecordTest::TearDown()
133 {
134 testAbilityRecord_.reset();
135 testAppRecord_.reset();
136 SystemAbilityManagerClient::GetInstance().systemAbilityManager_ = iSystemAbilityMgr_;
137 }
138
MockBundleInstallerAndSA() const139 void AmsAppRunningRecordTest::MockBundleInstallerAndSA() const
140 {
141 auto mockGetBundleInstaller = []() { return mockBundleInstaller; };
142 auto mockGetSystemAbility = [bms = mockBundleMgr, saMgr = iSystemAbilityMgr_](int32_t systemAbilityId) {
143 if (systemAbilityId == BUNDLE_MGR_SERVICE_SYS_ABILITY_ID) {
144 return bms->AsObject();
145 } else {
146 return saMgr->GetSystemAbility(systemAbilityId);
147 }
148 };
149 }
150
MockBundleInstaller() const151 void AmsAppRunningRecordTest::MockBundleInstaller() const
152 {
153 auto mockGetBundleInstaller = []() { return mockBundleInstaller; };
154 }
155
GetMockedAppSchedulerClient() const156 sptr<IAppScheduler> AmsAppRunningRecordTest::GetMockedAppSchedulerClient() const
157 {
158 if (client_) {
159 return client_;
160 }
161 return nullptr;
162 }
163
GetTestAppRunningRecord()164 std::shared_ptr<AppRunningRecord> AmsAppRunningRecordTest::GetTestAppRunningRecord()
165 {
166 if (!testAppRecord_) {
167 auto appInfo = std::make_shared<ApplicationInfo>();
168 appInfo->name = GetTestAppName();
169 testAppRecord_ = std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
170 testAppRecord_->SetApplicationClient(GetMockedAppSchedulerClient());
171 }
172 return testAppRecord_;
173 }
174
StartLoadAbility(const sptr<IRemoteObject> & token,const std::shared_ptr<AbilityInfo> & abilityInfo,const std::shared_ptr<ApplicationInfo> & appInfo,const pid_t newPid) const175 std::shared_ptr<AppRunningRecord> AmsAppRunningRecordTest::StartLoadAbility(const sptr<IRemoteObject>& token,
176 const std::shared_ptr<AbilityInfo>& abilityInfo, const std::shared_ptr<ApplicationInfo>& appInfo,
177 const pid_t newPid) const
178 {
179 EXPECT_CALL(*mockBundleMgr, GetHapModuleInfo(testing::_, testing::_, testing::_))
180 .WillOnce(testing::Return(true))
181 .WillRepeatedly(testing::Return(true));
182 std::shared_ptr<MockAppSpawnClient> mockClientPtr = std::make_shared<MockAppSpawnClient>();
183 service_->SetAppSpawnClient(mockClientPtr);
184 EXPECT_CALL(*mockClientPtr, StartProcess(_, _)).Times(1).WillOnce(DoAll(SetArgReferee<1>(newPid), Return(ERR_OK)));
185 AbilityRuntime::LoadParam loadParam;
186 loadParam.token = token;
187 auto loadParamPtr = std::make_shared<AbilityRuntime::LoadParam>(loadParam);
188 service_->LoadAbility(abilityInfo, appInfo, nullptr, loadParamPtr);
189
190 BundleInfo bundleInfo;
191 bundleInfo.appId = "com.ohos.test.helloworld_code123";
192
193 auto record = service_->appRunningManager_->CheckAppRunningRecordIsExist(
194 appInfo->name, GetTestProcessName(), appInfo->uid, bundleInfo);
195
196 EXPECT_TRUE(record);
197 auto clent = GetMockedAppSchedulerClient();
198 record->SetApplicationClient(clent);
199 EXPECT_EQ(record->GetPriorityObject()->GetPid(), newPid);
200 EXPECT_NE(record->GetApplicationClient(), nullptr);
201 return record;
202 }
203
204 /*
205 * Feature: AMS
206 * Function: AppRunningRecord
207 * SubFunction: NA
208 * FunctionPoints: Create using correct args with app/ability not exists.
209 * EnvConditions: NA
210 * CaseDescription: Call CreateAppRunningRecord to get result.
211 */
212 HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_001, TestSize.Level1)
213 {
214 auto abilityInfo = std::make_shared<AbilityInfo>();
215 abilityInfo->name = GetTestAbilityName();
216 auto appInfo = std::make_shared<ApplicationInfo>();
217 appInfo->name = GetTestAppName();
218 BundleInfo bundleInfo;
219 bundleInfo.appId = "com.ohos.test.helloworld_code123";
220 bundleInfo.jointUserId = "joint456";
221 HapModuleInfo hapModuleInfo;
222 hapModuleInfo.moduleName = "module789";
223 EXPECT_TRUE(service_ != nullptr);
224 auto record = service_->CreateAppRunningRecord(
225 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
226
227 EXPECT_TRUE(record != nullptr);
228 EXPECT_EQ(record->GetName(), GetTestAppName());
229
230 EXPECT_EQ(record->GetProcessName(), GetTestProcessName());
231
232 auto abilityRecord = record->GetAbilityRunningRecordByToken(GetMockToken());
233 EXPECT_TRUE(abilityRecord != nullptr);
234 }
235
236 /*
237 * Feature: AMS
238 * Function: AppRunningRecord
239 * SubFunction: NA
240 * FunctionPoints Create using correct args with app/ability exists.
241 * EnvConditions: NA
242 * CaseDescription: Call CreateAppRunningRecord twice to create/get a AppRunningRecord.
243 */
244 HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_002, TestSize.Level1)
245 {
246 auto abilityInfo = std::make_shared<AbilityInfo>();
247 abilityInfo->name = GetTestAbilityName();
248 auto appInfo = std::make_shared<ApplicationInfo>();
249 appInfo->name = GetTestAppName();
250 abilityInfo->applicationInfo.uid = 1010;
251 appInfo->uid = 1010;
252 BundleInfo bundleInfo;
253 bundleInfo.appId = "com.ohos.test.helloworld_code123";
254 bundleInfo.jointUserId = "joint456";
255 HapModuleInfo hapModuleInfo;
256 hapModuleInfo.moduleName = "module789";
257 EXPECT_TRUE(service_ != nullptr);
258 // Create
259 sptr<IRemoteObject> token = GetMockToken();
260 auto record = service_->CreateAppRunningRecord(
261 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
262 record->SetUid(1010);
263 // Get
264 auto record1 = service_->CreateAppRunningRecord(
265 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
266 EXPECT_TRUE(record1 != nullptr);
267 EXPECT_EQ(record1->GetName(), GetTestAppName());
268 EXPECT_EQ(record1->GetProcessName(), GetTestProcessName());
269 }
270
271 /*
272 * Feature: AMS
273 * Function: AppRunningRecord
274 * SubFunction: NA
275 * FunctionPoints: Create using correct args with app exists but ability not.
276 * EnvConditions: NA
277 * CaseDescription: Call CreateAppRunningRecord twice which second call uses a different ability info.
278 */
279 HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_003, TestSize.Level1)
280 {
281 auto abilityInfo = std::make_shared<AbilityInfo>();
282 abilityInfo->name = GetTestAbilityName();
283 auto appInfo = std::make_shared<ApplicationInfo>();
284 appInfo->name = GetTestAppName();
285 appInfo->bundleName = GetTestAppName();
286 abilityInfo->applicationInfo.uid = 1010;
287 appInfo->uid = 1010;
288 BundleInfo bundleInfo;
289 bundleInfo.appId = "com.ohos.test.helloworld_code123";
290 bundleInfo.jointUserId = "joint456";
291 HapModuleInfo hapModuleInfo;
292 hapModuleInfo.moduleName = "module789";
293 EXPECT_TRUE(service_ != nullptr);
294 auto record = service_->CreateAppRunningRecord(
295 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
296 record->SetUid(1010);
297
298 auto anotherAbilityInfo = std::make_shared<AbilityInfo>();
299 anotherAbilityInfo->name = "Another_ability";
300 anotherAbilityInfo->applicationInfo.uid = 1010;
301 sptr<IRemoteObject> anotherToken = new (std::nothrow) MockAbilityToken();
302 auto record1 = service_->CreateAppRunningRecord(GetMockToken(),
303 anotherToken,
304 appInfo,
305 anotherAbilityInfo,
306 GetTestProcessName(),
307 bundleInfo,
308 hapModuleInfo,
309 nullptr, 0);
310 EXPECT_EQ(record1->GetName(), GetTestAppName());
311 EXPECT_EQ(record1->GetProcessName(), GetTestProcessName());
312
313 auto abilityRecord = record1->GetAbilityRunningRecordByToken(GetMockToken());
314 EXPECT_TRUE(abilityRecord != nullptr);
315 }
316
317 /*
318 * Feature: AMS
319 * Function: AppRunningRecord
320 * SubFunction: NA
321 * FunctionPoints: Create using empty appInfo.
322 * EnvConditions: NA
323 * CaseDescription: Call CreateAppRunningRecord using empty appInfo.
324 */
325 HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_004, TestSize.Level1)
326 {
327 auto abilityInfo = std::make_shared<AbilityInfo>();
328 abilityInfo->name = GetTestAbilityName();
329 auto appInfo = std::make_shared<ApplicationInfo>();
330 appInfo->name = GetTestAppName();
331 BundleInfo bundleInfo;
332 bundleInfo.appId = "com.ohos.test.helloworld_code123";
333 bundleInfo.jointUserId = "joint456";
334 HapModuleInfo hapModuleInfo;
335 hapModuleInfo.moduleName = "module789";
336 EXPECT_TRUE(service_ != nullptr);
337 // Create
338 auto record = service_->CreateAppRunningRecord(
339 GetMockToken(), nullptr, nullptr, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
340 EXPECT_TRUE(record == nullptr);
341 }
342
343 /*
344 * Feature: AMS
345 * Function: AppRunningRecord
346 * SubFunction: NA
347 * FunctionPoints: Create using empty abilityInfo.
348 * EnvConditions: NA
349 * CaseDescription: Call CreateAppRunningRecord using empty abilityInfo.
350 */
351 HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_005, TestSize.Level1)
352 {
353 auto appInfo = std::make_shared<ApplicationInfo>();
354 appInfo->name = GetTestAppName();
355 BundleInfo bundleInfo;
356 bundleInfo.appId = "com.ohos.test.helloworld_code123";
357 bundleInfo.jointUserId = "joint456";
358 HapModuleInfo hapModuleInfo;
359 hapModuleInfo.moduleName = "module789";
360 EXPECT_TRUE(service_ != nullptr);
361 // Create
362 auto record = service_->CreateAppRunningRecord(
363 GetMockToken(), nullptr, appInfo, nullptr, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
364 EXPECT_TRUE(record != nullptr);
365 }
366
367 /*
368 * Feature: AMS
369 * Function: AppRunningRecord
370 * SubFunction: NA
371 * FunctionPoints: Add RenderRecord.
372 * EnvConditions: NA
373 * CaseDescription: AddRenderRecord with empty renderRecord.
374 */
375 HWTEST_F(AmsAppRunningRecordTest, AddRenderRecord_001, TestSize.Level1)
376 {
377 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();;
378 std::shared_ptr<AppRunningRecord> appRunningRecord =
379 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
380 EXPECT_NE(appRunningRecord, nullptr);
381 std::shared_ptr<RenderRecord> renderRecord;
382 appRunningRecord->AddRenderRecord(renderRecord);
383 }
384
385 /*
386 * Feature: AMS
387 * Function: RemoveRenderRecord
388 * SubFunction: NA
389 * FunctionPoints: Remove RenderRecord.
390 * EnvConditions: NA
391 * CaseDescription: RemoveRenderRecord with empty renderRecord.
392 */
393 HWTEST_F(AmsAppRunningRecordTest, RemoveRenderRecord_001, TestSize.Level1)
394 {
395 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();;
396 std::shared_ptr<AppRunningRecord> appRunningRecord =
397 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
398 EXPECT_NE(appRunningRecord, nullptr);
399 std::shared_ptr<RenderRecord> renderRecord;
400 appRunningRecord->RemoveRenderRecord(renderRecord);
401 }
402
403 /*
404 * Feature: AMS
405 * Function: GetRenderRecordByPid
406 * SubFunction: NA
407 * FunctionPoints: Get RenderRecord by pid
408 * EnvConditions: NA
409 * CaseDescription: GetRenderRecordByPid with empty renderRecordMap.
410 */
411 HWTEST_F(AmsAppRunningRecordTest, GetRenderRecordByPid_001, TestSize.Level1)
412 {
413 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();
414 std::shared_ptr<AppRunningRecord> appRunningRecord =
415 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
416 EXPECT_NE(appRunningRecord, nullptr);
417 pid_t pid = 1;
418 EXPECT_EQ(appRunningRecord->GetRenderRecordByPid(pid), nullptr);
419 }
420
421 /*
422 * Feature: AMS
423 * Function: GetRenderRecordByPid
424 * SubFunction: NA
425 * FunctionPoints: Get RenderRecord by pid
426 * EnvConditions: NA
427 * CaseDescription: GetRenderRecordByPid with pid.
428 */
429 HWTEST_F(AmsAppRunningRecordTest, GetRenderRecordByPid_002, TestSize.Level1)
430 {
431 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();
432 appInfo->name = GetTestAppName();
433 appInfo->bundleName = GetTestAppName();
434 int32_t recordId = 11;
435 std::string processName = "processName";
436 std::shared_ptr<AppRunningRecord> appRunningRecord =
437 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
438 pid_t hostPid = 1;
439 std::string renderParam = "test_render_param";
440 int32_t ipcFd = 1;
441 int32_t sharedFd = 1;
442 int32_t crashFd = 1;
443 std::shared_ptr<AppRunningRecord> host;
444 std::shared_ptr<RenderRecord> renderRecord =
445 RenderRecord::CreateRenderRecord(hostPid, renderParam, ipcFd, sharedFd, crashFd, host);
446 EXPECT_NE(appRunningRecord, nullptr);
447 }
448
449 /*
450 * Feature: AMS
451 * Function: AppRunningRecord
452 * SubFunction: NA
453 * FunctionPoints: Test launch application.
454 * EnvConditions: NA
455 * CaseDescription: Create an AppRunningRecord and call LaunchApplication.
456 */
457 HWTEST_F(AmsAppRunningRecordTest, LaunchApplication_001, TestSize.Level1)
458 {
459 Configuration config;
460 auto record = GetTestAppRunningRecord();
461 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(2);
462 record->LaunchApplication(config);
463
464 std::string bundleName = "test_mainBundleName";
465 record->mainBundleName_ = bundleName;
466 auto appInfo = std::make_shared<ApplicationInfo>();
467 appInfo->name = GetTestAppName();
468 record->appInfos_.emplace(bundleName, appInfo);
469 record->LaunchApplication(config);
470
471 record->appLifeCycleDeal_->SetApplicationClient(nullptr);
472 record->LaunchApplication(config);
473 }
474
475 /*
476 * Feature: AMS
477 * Function: AppRunningRecord
478 * SubFunction: NA
479 * FunctionPoints: Test launch ability via AppRunningRecord using valid name.
480 * EnvConditions: NA
481 * CaseDescription: Create an AppRunningRecord and call LaunchAbility which is exists.
482 */
483 HWTEST_F(AmsAppRunningRecordTest, LaunchAbility_001, TestSize.Level1)
484 {
485 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbility_001 start");
486 auto appInfo = std::make_shared<ApplicationInfo>();
487 appInfo->name = GetTestAppName();
488 HapModuleInfo hapModuleInfo;
489 hapModuleInfo.moduleName = "module789";
490 auto record = GetTestAppRunningRecord();
491 EXPECT_TRUE(record);
492 record->AddModule(appInfo, nullptr, GetMockToken(), hapModuleInfo, nullptr, 0);
493 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
494 EXPECT_TRUE(moduleRecord);
495 auto abilityRecord = moduleRecord->GetAbilityRunningRecordByToken(GetMockToken());
496 EXPECT_EQ(nullptr, abilityRecord);
497 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(1);
498 record->LaunchAbility(abilityRecord);
499
500 std::string deviceName = "device";
501 std::string abilityName = "ServiceAbility";
502 std::string appName = "hiservcie";
503 std::string bundleName = "com.ix.hiservcie";
504 std::string moduleName = "entry";
505 AbilityInfo abilityInfo;
506 abilityInfo.visible = true;
507 abilityInfo.applicationName = appName;
508 abilityInfo.type = AbilityType::EXTENSION;
509 abilityInfo.name = abilityName;
510 abilityInfo.bundleName = bundleName;
511 abilityInfo.moduleName = moduleName;
512 abilityInfo.deviceId = deviceName;
513 std::shared_ptr<AbilityInfo> abilityInfo_sptr = std::make_shared<AbilityInfo>(abilityInfo);
514
515 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord =
516 std::make_shared<AbilityRunningRecord>(abilityInfo_sptr, nullptr, 0);
517 EXPECT_NE(nullptr, abilityRunningRecord);
518 EXPECT_EQ(nullptr, abilityRunningRecord->GetToken());
519 record->LaunchAbility(abilityRunningRecord);
520
521 sptr<IRemoteObject> token = new MockAbilityToken();
522 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord1 =
523 std::make_shared<AbilityRunningRecord>(abilityInfo_sptr, token, 0);
524 EXPECT_NE(nullptr, abilityRunningRecord1);
525 EXPECT_NE(nullptr, abilityRunningRecord1->GetToken());
526 record->LaunchAbility(abilityRunningRecord1);
527
528 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord2 =
529 std::make_shared<AbilityRunningRecord>(abilityInfo_sptr, GetMockToken(), 0);
530 EXPECT_NE(nullptr, abilityRunningRecord2);
531 record->AddModule(appInfo, abilityInfo_sptr, GetMockToken(), hapModuleInfo, nullptr, 0);
532 record->LaunchAbility(abilityRunningRecord2);
533
534 record->appLifeCycleDeal_ = nullptr;
535 record->LaunchAbility(abilityRecord);
536 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbility_001 end");
537 }
538
539 /*
540 * Feature: AMS
541 * Function: AppRunningRecord
542 * SubFunction: NA
543 * FunctionPoints: Test launch ability via AppRunningRecord using empty name.
544 * EnvConditions: NA
545 * CaseDescription: Create an AppRunningRecord and call LaunchAbility which is not exists.
546 */
547 HWTEST_F(AmsAppRunningRecordTest, LaunchAbility_002, TestSize.Level1)
548 {
549 auto appInfo = std::make_shared<ApplicationInfo>();
550 appInfo->name = GetTestAppName();
551 auto abilityInfo = std::make_shared<AbilityInfo>();
552 abilityInfo->name = GetTestAbilityName();
553 HapModuleInfo hapModuleInfo;
554 hapModuleInfo.moduleName = "module789";
555 auto record = GetTestAppRunningRecord();
556 record->AddModule(appInfo, abilityInfo, GetMockToken(), hapModuleInfo, nullptr, 0);
557 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
558 EXPECT_TRUE(moduleRecord);
559 auto abilityRecord = moduleRecord->GetAbilityRunningRecordByToken(GetMockToken());
560
561 EXPECT_TRUE(abilityRecord);
562 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(1);
563
564 record->LaunchAbility(abilityRecord);
565
566 EXPECT_EQ(AbilityState::ABILITY_STATE_READY, abilityRecord->GetState());
567 }
568
569 /*
570 * Feature: AMS
571 * Function: AppRunningRecord
572 * SubFunction: NA
573 * FunctionPoints: Schedule application terminate by AppRunningRecord.
574 * EnvConditions: NA
575 * CaseDescription: Create an AppRunningRecord and call ScheduleTerminate.
576 */
577 HWTEST_F(AmsAppRunningRecordTest, ScheduleTerminate_001, TestSize.Level1)
578 {
579 auto record = GetTestAppRunningRecord();
580 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleTerminateApplication(_)).Times(1);
581 record->ScheduleTerminate();
582
583 record->appLifeCycleDeal_ = nullptr;
584 record->ScheduleTerminate();
585 }
586
587 /*
588 * Feature: AMS
589 * Function: AppRunningRecord
590 * SubFunction: NA
591 * FunctionPoints: Schedule application foreground by AppRunningRecord.
592 * EnvConditions: NA
593 * CaseDescription: Create an AppRunningRecord and call ScheduleForegroundRunning.
594 */
595 HWTEST_F(AmsAppRunningRecordTest, ScheduleForegroundRunning_001, TestSize.Level1)
596 {
597 auto record = GetTestAppRunningRecord();
598 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleForegroundApplication()).Times(1);
599 record->ScheduleForegroundRunning();
600
601 record->appLifeCycleDeal_ = nullptr;
602 record->ScheduleForegroundRunning();
603 }
604
605 /*
606 * Feature: AMS
607 * Function: AppRunningRecord
608 * SubFunction: NA
609 * FunctionPoints: Schedule application background by AppRunningRecord.
610 * EnvConditions: NA
611 * CaseDescription: Create an AppRunningRecord and call ScheduleBackgroundRunning.
612 */
613 HWTEST_F(AmsAppRunningRecordTest, ScheduleBackgroundRunning_001, TestSize.Level1)
614 {
615 auto record = GetTestAppRunningRecord();
616 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleBackgroundApplication()).Times(1);
617 record->ScheduleBackgroundRunning();
618
619 record->appLifeCycleDeal_ = nullptr;
620 record->ScheduleBackgroundRunning();
621 }
622
623 /*
624 * Feature: AMS
625 * Function: AppRunningRecord
626 * SubFunction: NA
627 * FunctionPoints: Schedule process security exit by AppRunningRecord.
628 * EnvConditions: NA
629 * CaseDescription: Create an AppRunningRecord and call ScheduleProcessSecurityExit.
630 */
631 HWTEST_F(AmsAppRunningRecordTest, ScheduleProcessSecurityExit_001, TestSize.Level1)
632 {
633 auto record = GetTestAppRunningRecord();
634 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleProcessSecurityExit()).Times(1);
635 record->ScheduleProcessSecurityExit();
636
637 record->appLifeCycleDeal_ = nullptr;
638 record->ScheduleProcessSecurityExit();
639 }
640
641 /*
642 * Feature: AMS
643 * Function: AppRunningRecord
644 * SubFunction: NA
645 * FunctionPoints: Schedule memory level by AppRunningRecord.
646 * EnvConditions: NA
647 * CaseDescription: Create an AppRunningRecord and call ScheduleMemoryLevel.
648 */
649 HWTEST_F(AmsAppRunningRecordTest, ScheduleMemoryLevel_001, TestSize.Level1)
650 {
651 auto record = GetTestAppRunningRecord();
652 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleMemoryLevel(_)).Times(1);
653 record->ScheduleMemoryLevel(1);
654
655 record->appLifeCycleDeal_ = nullptr;
656 record->ScheduleMemoryLevel(1);
657 }
658
659 /*
660 * Feature: AMS
661 * Function: AppRunningRecord
662 * SubFunction: NA
663 * FunctionPoints: Schedule application trim memory by AppRunningRecord.
664 * EnvConditions: NA
665 * CaseDescription: Create an AppRunningRecord and call ScheduleTrimMemory.
666 */
667 HWTEST_F(AmsAppRunningRecordTest, ScheduleTrimMemory_001, TestSize.Level1)
668 {
669 auto record = GetTestAppRunningRecord();
670 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleShrinkMemory(_)).Times(1);
671 EXPECT_NE(nullptr, record->GetPriorityObject());
672 record->ScheduleTrimMemory();
673
674 record->appLifeCycleDeal_ = nullptr;
675 record->ScheduleTrimMemory();
676 }
677
678 /*
679 * Feature: AMS
680 * Function: AppRunningRecord
681 * SubFunction: NA
682 * FunctionPoints: Test low memory warning notification handling.
683 * EnvConditions: NA
684 * CaseDescription: Create an AppRunningRecord and call LowMemoryWarning.
685 */
686 HWTEST_F(AmsAppRunningRecordTest, LowMemoryWarning_001, TestSize.Level1)
687 {
688 auto record = GetTestAppRunningRecord();
689 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLowMemory()).Times(1);
690 record->LowMemoryWarning();
691
692 record->appLifeCycleDeal_ = nullptr;
693 record->LowMemoryWarning();
694 }
695
696 /*
697 * Feature: AMS
698 * Function: AppRunningRecord
699 * SubFunction: NA
700 * FunctionPoints: Update application state using correct args.
701 * EnvConditions: NA
702 * CaseDescription: Create an AppRunningRecord and call SetState in a for-each cycle.
703 */
704 HWTEST_F(AmsAppRunningRecordTest, UpdateAppRunningRecord_001, TestSize.Level1)
705 {
706 auto record = GetTestAppRunningRecord();
707 for (ApplicationState state = ApplicationState::APP_STATE_CREATE; state < ApplicationState::APP_STATE_END;
708 state = (ApplicationState)(static_cast<std::underlying_type<ApplicationState>::type>(state) + 1)) {
709 record->SetState(state);
710 EXPECT_EQ(record->GetState(), state);
711 }
712 }
713
714 /*
715 * Feature: AMS
716 * Function: AppRunningRecord
717 * SubFunction: NA
718 * FunctionPoints: Update application state using wrong args.
719 * EnvConditions: NA
720 * CaseDescription: Create an AppRunningRecord and call SetState using arg |APP_STATE_END|.
721 */
722 HWTEST_F(AmsAppRunningRecordTest, UpdateAppRunningRecord_002, TestSize.Level1)
723 {
724 auto record = GetTestAppRunningRecord();
725 record->SetState(ApplicationState::APP_STATE_END);
726 EXPECT_NE(record->GetState(), ApplicationState::APP_STATE_END);
727 }
728
729 /*
730 * Feature: AMS
731 * Function: AppRunningRecord
732 * SubFunction: NA
733 * FunctionPoints: Delete application record info when application terminated.
734 * EnvConditions: NA
735 * CaseDescription: Create an AppRunningRecord and call AppMgrService::ApplicationTerminated passing exists
736 |RecordId|.
737 */
738 HWTEST_F(AmsAppRunningRecordTest, DeleteAppRunningRecord_001, TestSize.Level1)
739 {
740 auto abilityInfo = std::make_shared<AbilityInfo>();
741 abilityInfo->name = GetTestAbilityName();
742 auto appInfo = std::make_shared<ApplicationInfo>();
743 appInfo->name = GetTestAppName();
744 BundleInfo bundleInfo;
745 bundleInfo.appId = "com.ohos.test.helloworld_code123";
746 bundleInfo.jointUserId = "joint456";
747 HapModuleInfo hapModuleInfo;
748 hapModuleInfo.moduleName = "module789";
749 EXPECT_TRUE(service_ != nullptr);
750 auto record = service_->CreateAppRunningRecord(
751 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
752 EXPECT_TRUE(record != nullptr);
753 record->SetState(ApplicationState::APP_STATE_BACKGROUND);
754 record->SetApplicationClient(GetMockedAppSchedulerClient());
755 service_->ApplicationTerminated(record->GetRecordId());
756 record = service_->GetAppRunningRecordByAppRecordId(record->GetRecordId());
757 EXPECT_TRUE(record == nullptr);
758 }
759
760 /*
761 * Feature: AMS
762 * Function: AppRunningRecord
763 * SubFunction: NA
764 * FunctionPoints: When server received attachApplication request.
765 * EnvConditions: NA
766 * CaseDescription: Test server received normal pid attachApplication request.
767 */
768 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_001, TestSize.Level1)
769 {
770 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_001 start");
771 auto abilityInfo = std::make_shared<AbilityInfo>();
772 abilityInfo->name = GetTestAbilityName();
773 abilityInfo->applicationName = GetTestAppName();
774 abilityInfo->process = GetTestAppName();
775 abilityInfo->applicationInfo.bundleName = GetTestAppName();
776 auto appInfo = std::make_shared<ApplicationInfo>();
777 appInfo->name = GetTestAppName();
778 appInfo->bundleName = GetTestAppName();
779 sptr<IRemoteObject> token = GetMockToken();
780 const pid_t newPid = 1234;
781 service_->AttachApplication(newPid, mockAppSchedulerClient_);
782 EXPECT_TRUE(service_ != nullptr);
783 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_001 end");
784 }
785
786 /*
787 * Feature: AMS
788 * Function: AppRunningRecord
789 * SubFunction: NA
790 * FunctionPoints: When server received attachApplication request.
791 * EnvConditions: NA
792 * CaseDescription: Test server received invalid pid attachApplication request.
793 */
794 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_002, TestSize.Level1)
795 {
796 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_002 start");
797 auto abilityInfo = std::make_shared<AbilityInfo>();
798 abilityInfo->name = GetTestAbilityName();
799 abilityInfo->applicationName = GetTestAppName();
800 abilityInfo->process = GetTestAppName();
801 abilityInfo->applicationInfo.bundleName = GetTestAppName();
802 auto appInfo = std::make_shared<ApplicationInfo>();
803 appInfo->name = GetTestAppName();
804 appInfo->bundleName = GetTestAppName();
805 sptr<IRemoteObject> token = GetMockToken();
806 const pid_t newPid = 1234;
807 const pid_t invalidPid = -1;
808 service_->AttachApplication(invalidPid, mockAppSchedulerClient_);
809 EXPECT_TRUE(service_ != nullptr);
810 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_002 end");
811 }
812
813 /*
814 * Feature: AMS
815 * Function: AppRunningRecord
816 * SubFunction: NA
817 * FunctionPoints: When server received attachApplication request.
818 * EnvConditions: NA
819 * CaseDescription: Test server received non-exist pid attachApplication request.
820 */
821 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_003, TestSize.Level1)
822 {
823 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_003 start");
824 auto abilityInfo = std::make_shared<AbilityInfo>();
825 abilityInfo->name = GetTestAbilityName();
826 abilityInfo->applicationName = GetTestAppName();
827 abilityInfo->process = GetTestAppName();
828 abilityInfo->applicationInfo.bundleName = GetTestAppName();
829 auto appInfo = std::make_shared<ApplicationInfo>();
830 appInfo->name = GetTestAppName();
831 appInfo->bundleName = GetTestAppName();
832 sptr<IRemoteObject> token = GetMockToken();
833 const pid_t newPid = 1234;
834 const pid_t anotherPid = 1000;
835 service_->AttachApplication(anotherPid, mockAppSchedulerClient_);
836 EXPECT_TRUE(service_ != nullptr);
837 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_003 end");
838 }
839
840 /*
841 * Feature: AMS
842 * Function: AppRunningRecord
843 * SubFunction: NA
844 * FunctionPoints: When server received attachApplication request.
845 * EnvConditions: NA
846 * CaseDescription: Test server received null appClient attachApplication request.
847 */
848 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_004, TestSize.Level1)
849 {
850 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_004 start");
851 auto abilityInfo = std::make_shared<AbilityInfo>();
852 abilityInfo->name = GetTestAbilityName();
853 abilityInfo->applicationName = GetTestAppName();
854 abilityInfo->process = GetTestAppName();
855 abilityInfo->applicationInfo.bundleName = GetTestAppName();
856
857 auto appInfo = std::make_shared<ApplicationInfo>();
858 appInfo->name = GetTestAppName();
859 appInfo->bundleName = GetTestAppName();
860 sptr<IRemoteObject> token = GetMockToken();
861 const pid_t newPid = 1234;
862 service_->AttachApplication(newPid, mockAppSchedulerClient_);
863 EXPECT_TRUE(service_ != nullptr);
864 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_004 end");
865 }
866
867 /*
868 * Feature: AMS
869 * Function: AppRunningRecord
870 * SubFunction: NA
871 * FunctionPoints: When server received attachApplication request.
872 * EnvConditions: NA
873 * CaseDescription: Test server received multiple same attachApplication request.
874 */
875 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_005, TestSize.Level1)
876 {
877 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_005 start");
878 auto abilityInfo = std::make_shared<AbilityInfo>();
879 abilityInfo->name = GetTestAbilityName();
880 abilityInfo->applicationName = GetTestAppName();
881 abilityInfo->process = GetTestAppName();
882 abilityInfo->applicationInfo.bundleName = GetTestAppName();
883
884 auto appInfo = std::make_shared<ApplicationInfo>();
885 appInfo->name = GetTestAppName();
886 appInfo->bundleName = GetTestAppName();
887
888 sptr<IRemoteObject> token = GetMockToken();
889 const pid_t newPid = 1234;
890 service_->AttachApplication(newPid, mockAppSchedulerClient_);
891 EXPECT_TRUE(service_ != nullptr);
892 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_005 end");
893 }
894
895 /*
896 * Feature: AMS
897 * Function: AppRunningRecord
898 * SubFunction: NA
899 * FunctionPoints: When server received attachApplication request.
900 * EnvConditions: NA
901 * CaseDescription: Test server received attachApplication request after multiple loadAbility.
902 */
903 HWTEST_F(AmsAppRunningRecordTest, AttachApplication_006, TestSize.Level1)
904 {
905 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_006 start");
906 auto abilityInfo = std::make_shared<AbilityInfo>();
907 abilityInfo->name = GetTestAbilityName();
908 abilityInfo->applicationName = GetTestAppName();
909 abilityInfo->process = GetTestAppName();
910 abilityInfo->applicationInfo.bundleName = GetTestAppName();
911
912 auto abilityInfo2 = std::make_shared<AbilityInfo>();
913 abilityInfo2->name = GetTestAbilityName() + "_1";
914 abilityInfo2->applicationName = GetTestAppName();
915 abilityInfo2->process = GetTestAppName();
916
917 auto abilityInfo3 = std::make_shared<AbilityInfo>();
918 abilityInfo3->name = GetTestAbilityName() + "_2";
919 abilityInfo3->applicationName = GetTestAppName();
920 abilityInfo3->process = GetTestAppName();
921
922 auto appInfo = std::make_shared<ApplicationInfo>();
923 appInfo->name = GetTestAppName();
924 appInfo->bundleName = GetTestAppName();
925
926 sptr<IRemoteObject> token = GetMockToken();
927 const uint32_t EXPECT_RECORD_SIZE = 3;
928 const int EXPECT_ABILITY_LAUNCH_TIME = 3;
929 const pid_t PID = 1234;
930 service_->AttachApplication(PID, mockAppSchedulerClient_);
931 EXPECT_TRUE(service_ != nullptr);
932 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AttachApplication_006 end");
933 }
934
935 /*
936 * Feature: AMS
937 * Function: AppRunningRecord
938 * SubFunction: NA
939 * FunctionPoints: When server LaunchApplication and LaunchAbility.
940 * EnvConditions: NA
941 * CaseDescription: Test normal case of LaunchAbility after LaunchApplication.
942 */
943 HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_001, TestSize.Level1)
944 {
945 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_001 start");
946 auto abilityInfo = std::make_shared<AbilityInfo>();
947 abilityInfo->name = GetTestAbilityName();
948 abilityInfo->applicationName = GetTestAppName();
949 abilityInfo->process = GetTestAppName();
950 abilityInfo->applicationInfo.bundleName = GetTestAppName();
951
952 auto appInfo = std::make_shared<ApplicationInfo>();
953 BundleInfo bundleInfo;
954 bundleInfo.appId = "com.ohos.test.helloworld_code123";
955 bundleInfo.jointUserId = "joint456";
956 HapModuleInfo hapModuleInfo;
957 hapModuleInfo.moduleName = "module789";
958
959 EXPECT_TRUE(service_ != nullptr);
960 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
961 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
962
963 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1);
964 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(1);
965 record->SetApplicationClient(GetMockedAppSchedulerClient());
966 service_->LaunchApplication(record);
967 EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY);
968 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_001 end");
969 }
970
971 /*
972 * Feature: AMS
973 * Function: AppRunningRecord
974 * SubFunction: NA
975 * FunctionPoints: When server LaunchApplication and LaunchAbility.
976 * EnvConditions: NA
977 * CaseDescription: Test normal case of multiple LaunchAbility after LaunchApplication.
978 */
979 HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_002, TestSize.Level1)
980 {
981 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_002 start");
982 auto abilityInfo = std::make_shared<AbilityInfo>();
983 abilityInfo->name = GetTestAbilityName();
984 abilityInfo->applicationName = GetTestAppName();
985 auto abilityInfo2 = std::make_shared<AbilityInfo>();
986 abilityInfo2->name = GetTestAbilityName() + "_1";
987 abilityInfo2->applicationName = GetTestAppName();
988 auto abilityInfo3 = std::make_shared<AbilityInfo>();
989 abilityInfo3->name = GetTestAbilityName() + "_2";
990 abilityInfo3->applicationName = GetTestAppName();
991 auto appInfo = std::make_shared<ApplicationInfo>();
992 appInfo->name = GetTestAppName();
993 BundleInfo bundleInfo;
994 bundleInfo.appId = "com.ohos.test.helloworld_code123";
995 bundleInfo.jointUserId = "joint456";
996 HapModuleInfo hapModuleInfo;
997 hapModuleInfo.moduleName = "module789";
998 const int EXPECT_ABILITY_LAUNCH_TIME = 3;
999 EXPECT_TRUE(service_ != nullptr);
1000
1001 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1002 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1003
1004 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1005 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo, nullptr, 0);
1006 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1007 EXPECT_TRUE(moduleRecord);
1008 auto abilityRecord2 = moduleRecord->GetAbilityRunningRecordByToken(token2);
1009 EXPECT_TRUE(abilityRecord2 != nullptr);
1010
1011 sptr<IRemoteObject> token3 = new (std::nothrow) MockAbilityToken();
1012 record->AddModule(appInfo, abilityInfo3, token3, hapModuleInfo, nullptr, 0);
1013 auto moduleRecord3 = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1014 EXPECT_TRUE(moduleRecord3);
1015 auto abilityRecord3 = moduleRecord3->GetAbilityRunningRecordByToken(token3);
1016 EXPECT_TRUE(abilityRecord3 != nullptr);
1017
1018 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1);
1019 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(EXPECT_ABILITY_LAUNCH_TIME);
1020 record->SetApplicationClient(GetMockedAppSchedulerClient());
1021 service_->LaunchApplication(record);
1022 EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY);
1023 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_002 end");
1024 }
1025
1026 /*
1027 * Feature: AMS
1028 * Function: AppRunningRecord
1029 * SubFunction: NA
1030 * FunctionPoints: When server LaunchApplication and LaunchAbility.
1031 * EnvConditions: NA
1032 * CaseDescription: Test abnormal case of LaunchApplication with wrong state.
1033 */
1034 HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_003, TestSize.Level1)
1035 {
1036 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_003 start");
1037 auto abilityInfo = std::make_shared<AbilityInfo>();
1038 abilityInfo->name = GetTestAbilityName();
1039 abilityInfo->applicationName = GetTestAppName();
1040 auto appInfo = std::make_shared<ApplicationInfo>();
1041 appInfo->name = GetTestAppName();
1042 BundleInfo bundleInfo;
1043 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1044 bundleInfo.jointUserId = "joint456";
1045 HapModuleInfo hapModuleInfo;
1046 hapModuleInfo.moduleName = "module789";
1047 EXPECT_TRUE(service_ != nullptr);
1048
1049 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1050 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1051 record->SetState(ApplicationState::APP_STATE_READY);
1052 record->SetApplicationClient(GetMockedAppSchedulerClient());
1053
1054 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0);
1055 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(0);
1056 service_->LaunchApplication(record);
1057 EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY);
1058 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_003 end");
1059 }
1060
1061 /*
1062 * Feature: AMS
1063 * Function: AppRunningRecord
1064 * SubFunction: NA
1065 * FunctionPoints: When server LaunchApplication and LaunchAbility.
1066 * EnvConditions: NA
1067 * CaseDescription: Test normal case of LoadAbility after LaunchAbility and LaunchApplication.
1068 */
1069 HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_004, TestSize.Level1)
1070 {
1071 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_004 start");
1072 auto abilityInfo = std::make_shared<AbilityInfo>();
1073 abilityInfo->name = GetTestAbilityName();
1074 abilityInfo->applicationName = GetTestAppName();
1075 abilityInfo->process = GetTestAppName();
1076
1077 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1078 abilityInfo2->name = GetTestAbilityName() + "_1";
1079 abilityInfo2->applicationName = GetTestAppName();
1080 abilityInfo2->process = GetTestAppName();
1081
1082 auto appInfo = std::make_shared<ApplicationInfo>();
1083 appInfo->name = GetTestAppName();
1084 appInfo->bundleName = GetTestAppName();
1085
1086 BundleInfo bundleInfo;
1087 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1088 bundleInfo.jointUserId = "joint456";
1089 HapModuleInfo hapModuleInfo;
1090 hapModuleInfo.moduleName = "module789";
1091 EXPECT_TRUE(service_ != nullptr);
1092
1093 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1094 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1095
1096 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1);
1097 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(1);
1098 record->SetApplicationClient(GetMockedAppSchedulerClient());
1099 service_->LaunchApplication(record);
1100 EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY);
1101
1102 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0);
1103 AbilityRuntime::LoadParam loadParam;
1104 loadParam.token = new (std::nothrow) MockAbilityToken();
1105 auto loadParamPtr = std::make_shared<AbilityRuntime::LoadParam>(loadParam);
1106 service_->LoadAbility(abilityInfo2, appInfo, nullptr, loadParamPtr);
1107 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_004 end");
1108 }
1109
1110 /*
1111 * Feature: AMS
1112 * Function: AppRunningRecord
1113 * SubFunction: NA
1114 * FunctionPoints: When server LaunchApplication and LaunchAbility.
1115 * EnvConditions: NA
1116 * CaseDescription: Test normal case of multiple LaunchAbility with wrong state after LaunchApplication.
1117 */
1118 HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_005, TestSize.Level1)
1119 {
1120 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_005 start");
1121 auto abilityInfo = std::make_shared<AbilityInfo>();
1122 abilityInfo->name = GetTestAbilityName();
1123 abilityInfo->applicationName = GetTestAppName();
1124 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1125 abilityInfo2->name = GetTestAbilityName() + "_1";
1126 abilityInfo2->applicationName = GetTestAppName();
1127 auto abilityInfo3 = std::make_shared<AbilityInfo>();
1128 abilityInfo3->name = GetTestAbilityName() + "_2";
1129 abilityInfo3->applicationName = GetTestAppName();
1130 auto appInfo = std::make_shared<ApplicationInfo>();
1131 appInfo->name = GetTestAppName();
1132 BundleInfo bundleInfo;
1133 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1134 bundleInfo.jointUserId = "joint456";
1135 HapModuleInfo hapModuleInfo;
1136 hapModuleInfo.moduleName = "module789";
1137 const int EXPECT_ABILITY_LAUNCH_TIME = 2;
1138 EXPECT_TRUE(service_ != nullptr);
1139
1140 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1141 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1142
1143 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1144 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo, nullptr, 0);
1145 auto moduleRecord2 = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1146 EXPECT_TRUE(moduleRecord2);
1147 auto abilityRecord2 = moduleRecord2->GetAbilityRunningRecordByToken(token2);
1148 abilityRecord2->SetState(AbilityState::ABILITY_STATE_READY);
1149
1150 sptr<IRemoteObject> token3 = new (std::nothrow) MockAbilityToken();
1151 record->AddModule(appInfo, abilityInfo3, token3, hapModuleInfo, nullptr, 0);
1152 auto moduleRecord3 = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1153 EXPECT_TRUE(moduleRecord3);
1154 auto abilityRecord3 = moduleRecord3->GetAbilityRunningRecordByToken(token3);
1155
1156 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1);
1157 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _, _, _)).Times(EXPECT_ABILITY_LAUNCH_TIME);
1158 record->SetApplicationClient(GetMockedAppSchedulerClient());
1159 service_->LaunchApplication(record);
1160 EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY);
1161 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest LaunchAbilityForApp_005 end");
1162 }
1163
1164 /*
1165 * Feature: AMS
1166 * Function: AppRunningRecord
1167 * SubFunction: TerminateAbility
1168 * FunctionPoints: check params
1169 * EnvConditions: Mobile that can run ohos test framework
1170 * CaseDescription: Verify the function TerminateAbility can check the token which not added.
1171 */
1172 HWTEST_F(AmsAppRunningRecordTest, TerminateAbility_001, TestSize.Level1)
1173 {
1174 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest TerminateAbility_001 start");
1175
1176 auto record = GetTestAppRunningRecord();
1177 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleCleanAbility(_, _)).Times(0);
1178 record->TerminateAbility(GetMockToken(), false);
1179
1180 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest TerminateAbility_001 end");
1181 }
1182
1183 /*
1184 * Feature: AMS
1185 * Function: AppRunningRecord
1186 * SubFunction: TerminateAbility
1187 * FunctionPoints: check params
1188 * EnvConditions: Mobile that can run ohos test framework
1189 * CaseDescription: Verify the function TerminateAbility can check the state not in background.
1190 */
1191 HWTEST_F(AmsAppRunningRecordTest, TerminateAbility_002, TestSize.Level1)
1192 {
1193 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest TerminateAbility_002 start");
1194
1195 auto abilityInfo = std::make_shared<AbilityInfo>();
1196 abilityInfo->name = GetTestAbilityName();
1197
1198 HapModuleInfo hapModuleInfo;
1199 hapModuleInfo.moduleName = "module789";
1200 BundleInfo bundleInfo;
1201 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1202
1203 auto appInfo = std::make_shared<ApplicationInfo>();
1204 appInfo->name = GetTestAppName();
1205 appInfo->bundleName = GetTestAppName();
1206
1207 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1208 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1209
1210 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleCleanAbility(_, _)).Times(0);
1211 record->TerminateAbility(GetMockToken(), false);
1212
1213 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest TerminateAbility_002 end");
1214 }
1215
1216 /*
1217 * Feature: AMS
1218 * Function: AppRunningRecord
1219 * SubFunction: AbilityTerminated
1220 * FunctionPoints: check params
1221 * EnvConditions: Mobile that can run ohos test framework
1222 * CaseDescription: Verify the function AbilityTerminated can check the token is nullptr.
1223 */
1224 HWTEST_F(AmsAppRunningRecordTest, AbilityTerminated_001, TestSize.Level1)
1225 {
1226 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AbilityTerminated_001 start");
1227
1228 auto record = GetTestAppRunningRecord();
1229 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleTerminateApplication(_)).Times(0);
1230 record->AbilityTerminated(nullptr);
1231
1232 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AbilityTerminated_001 end");
1233 }
1234
1235 /*
1236 * Feature: AMS
1237 * Function: AppRunningRecord
1238 * SubFunction: GetAbilityRunningRecordByToken
1239 * FunctionPoints: check params
1240 * EnvConditions: Mobile that can run ohos test framework
1241 * CaseDescription: Verify the function GetAbilityRunningRecordByToken can check token is nullptr.
1242 */
1243 HWTEST_F(AmsAppRunningRecordTest, GetAbilityRunningRecordByToken_001, TestSize.Level1)
1244 {
1245 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetAbilityRunningRecordByToken_001 start");
1246
1247 auto record = GetTestAppRunningRecord();
1248 EXPECT_EQ(nullptr, record->GetAbilityRunningRecordByToken(nullptr));
1249
1250 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetAbilityRunningRecordByToken_001 end");
1251 }
1252
1253 /*
1254 * Feature: AMS
1255 * Function: AppRunningRecord::SetUid, AppRunningRecord::GetUid()
1256 * SubFunction: GetAbilityRunningRecordByToken
1257 * FunctionPoints: check params
1258 * EnvConditions: Mobile that can run ohos test framework
1259 * CaseDescription: Verify the function GetAbilityRunningRecordByToken can check token is nullptr.
1260 */
1261
1262 HWTEST_F(AmsAppRunningRecordTest, SetUid_GetUid_001, TestSize.Level1)
1263 {
1264 auto abilityInfo = std::make_shared<AbilityInfo>();
1265 abilityInfo->name = GetTestAbilityName();
1266 auto appInfo = std::make_shared<ApplicationInfo>();
1267 appInfo->name = GetTestAppName();
1268
1269 BundleInfo bundleInfo;
1270 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1271 bundleInfo.jointUserId = "joint456";
1272 HapModuleInfo hapModuleInfo;
1273 hapModuleInfo.moduleName = "module789";
1274 EXPECT_TRUE(service_ != nullptr);
1275 auto record = service_->CreateAppRunningRecord(
1276 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1277
1278 EXPECT_TRUE(record != nullptr);
1279 record->SetUid(102);
1280
1281 auto otherRecord = service_->GetAppRunningRecordByAppRecordId(record->GetRecordId());
1282 EXPECT_TRUE(record != nullptr);
1283
1284 EXPECT_EQ(otherRecord->GetUid(), 102);
1285 }
1286
1287 /*
1288 * Feature: AMS
1289 * Function: OnAbilityStateChanged
1290 * SubFunction: App state switch
1291 * FunctionPoints: check params
1292 * EnvConditions: Mobile that can run ohos test framework
1293 * CaseDescription: Notify ability when the status of the app changes
1294 */
1295
1296 HWTEST_F(AmsAppRunningRecordTest, OnAbilityStateChanged_001, TestSize.Level1)
1297 {
1298 auto abilityInfo = std::make_shared<AbilityInfo>();
1299 abilityInfo->name = GetTestAbilityName();
1300
1301 auto appInfo = std::make_shared<ApplicationInfo>();
1302 appInfo->name = GetTestAppName();
1303 appInfo->bundleName = GetTestAppName();
1304
1305 BundleInfo bundleInfo;
1306 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1307 HapModuleInfo hapModuleInfo;
1308 hapModuleInfo.moduleName = "module789";
1309
1310 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1311 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1312 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1313 EXPECT_TRUE(moduleRecord != nullptr);
1314 auto abilityRecord = record->GetAbilityRunningRecordByToken(GetMockToken());
1315 EXPECT_TRUE(abilityRecord != nullptr);
1316
1317 sptr<MockAppStateCallback> callback = new (std::nothrow) MockAppStateCallback();
1318 EXPECT_CALL(*callback, OnAbilityRequestDone(_, _)).Times(0);
1319
1320 moduleRecord->OnAbilityStateChanged(nullptr, AbilityState::ABILITY_STATE_FOREGROUND);
1321
1322 EXPECT_NE(AbilityState::ABILITY_STATE_FOREGROUND, abilityRecord->GetState());
1323
1324 std::shared_ptr<AppMgrServiceInner> serviceInner;
1325 serviceInner.reset(new (std::nothrow) AppMgrServiceInner());
1326 EXPECT_TRUE(serviceInner);
1327
1328 EXPECT_CALL(*callback, OnAbilityRequestDone(_, _)).Times(2);
1329 serviceInner->RegisterAppStateCallback(callback);
1330 record->SetAppMgrServiceInner(serviceInner);
1331
1332 moduleRecord->OnAbilityStateChanged(abilityRecord, AbilityState::ABILITY_STATE_FOREGROUND);
1333 EXPECT_EQ(AbilityState::ABILITY_STATE_FOREGROUND, abilityRecord->GetState());
1334
1335 moduleRecord->OnAbilityStateChanged(abilityRecord, AbilityState::ABILITY_STATE_BACKGROUND);
1336 EXPECT_EQ(AbilityState::ABILITY_STATE_BACKGROUND, abilityRecord->GetState());
1337 }
1338
1339 /*
1340 * Feature: AMS
1341 * Function: AddModule
1342 * SubFunction: AddModule
1343 * FunctionPoints: check params
1344 * EnvConditions: Mobile that can run ohos test framework
1345 * CaseDescription: add module
1346 */
1347
1348 HWTEST_F(AmsAppRunningRecordTest, AddModule_001, TestSize.Level1)
1349 {
1350 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddModule_001 start");
1351 auto abilityInfo = std::make_shared<AbilityInfo>();
1352 abilityInfo->name = GetTestAbilityName();
1353 auto appInfo0 = std::make_shared<ApplicationInfo>();
1354 appInfo0->name = GetTestAppName();
1355 auto appInfo = std::make_shared<ApplicationInfo>();
1356 appInfo->name = GetTestAppName();
1357 BundleInfo bundleInfo;
1358 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1359 HapModuleInfo hapModuleInfo0;
1360 hapModuleInfo0.moduleName = "module123";
1361 HapModuleInfo hapModuleInfo;
1362 hapModuleInfo.moduleName = "module789";
1363 EXPECT_TRUE(service_ != nullptr);
1364 auto record = service_->CreateAppRunningRecord(
1365 GetMockToken(), nullptr, appInfo0, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo0, nullptr, 0);
1366 EXPECT_TRUE(record != nullptr);
1367 auto moduleRecordList = record->GetAllModuleRecord();
1368 EXPECT_TRUE(moduleRecordList.size() == 1);
1369 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1370 std::shared_ptr<ModuleRunningRecord> moduleRecord =
1371 record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1372 EXPECT_TRUE(!moduleRecord);
1373
1374 record->AddModule(nullptr, nullptr, nullptr, hapModuleInfo, nullptr, 0);
1375 record->AddModule(appInfo, nullptr, nullptr, hapModuleInfo, nullptr, 0);
1376 record->AddModule(appInfo, abilityInfo, nullptr, hapModuleInfo, nullptr, 0);
1377 record->AddModule(appInfo, nullptr, token2, hapModuleInfo, nullptr, 0);
1378 moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1379 EXPECT_FALSE(!moduleRecord);
1380 record->AddModule(appInfo, abilityInfo, token2, hapModuleInfo, nullptr, 0);
1381
1382 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1383 abilityInfo2->name = GetTestAbilityName() + "_1";
1384 abilityInfo2->applicationName = GetTestAppName();
1385 HapModuleInfo hapModuleInfo1;
1386 hapModuleInfo1.moduleName = "module123";
1387 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
1388
1389 moduleRecordList = record->GetAllModuleRecord();
1390 EXPECT_TRUE(moduleRecordList.size() == 2);
1391 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddModule_001 end");
1392 }
1393
1394 /*
1395 * Feature: AMS
1396 * Function: AddModule
1397 * SubFunction: AddModule
1398 * FunctionPoints: check params
1399 * EnvConditions: Mobile that can run ohos test framework
1400 * CaseDescription: add module
1401 */
1402
1403 HWTEST_F(AmsAppRunningRecordTest, AddModule_002, TestSize.Level1)
1404 {
1405 auto abilityInfo = std::make_shared<AbilityInfo>();
1406 abilityInfo->name = GetTestAbilityName();
1407 auto appInfo = std::make_shared<ApplicationInfo>();
1408 appInfo->name = GetTestAppName();
1409
1410 BundleInfo bundleInfo;
1411 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1412 HapModuleInfo hapModuleInfo;
1413 hapModuleInfo.moduleName = "module789";
1414 EXPECT_TRUE(service_ != nullptr);
1415 auto record = service_->CreateAppRunningRecord(
1416 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1417
1418 EXPECT_TRUE(record != nullptr);
1419
1420 auto moduleRecordList = record->GetAllModuleRecord();
1421 EXPECT_TRUE(moduleRecordList.size() == 1);
1422
1423 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1424 abilityInfo2->name = GetTestAbilityName() + "_1";
1425 abilityInfo2->applicationName = GetTestAppName();
1426 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1427 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo, nullptr, 0);
1428
1429 moduleRecordList = record->GetAllModuleRecord();
1430 EXPECT_TRUE(moduleRecordList.size() == 1);
1431 }
1432
1433 /*
1434 * Feature: AMS
1435 * Function: GetModuleRecordByModuleName
1436 * SubFunction: GetModuleRecordByModuleName
1437 * FunctionPoints: check params
1438 * EnvConditions: Mobile that can run ohos test framework
1439 * CaseDescription: Get ModuleRecord By ModuleName
1440 */
1441
1442 HWTEST_F(AmsAppRunningRecordTest, GetModuleRecordByModuleName_001, TestSize.Level1)
1443 {
1444 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRecordByModuleName_001 start");
1445 auto abilityInfo = std::make_shared<AbilityInfo>();
1446 abilityInfo->name = GetTestAbilityName();
1447 auto appInfo = std::make_shared<ApplicationInfo>();
1448 appInfo->name = GetTestAppName();
1449 appInfo->bundleName = GetTestAppName();
1450 auto appInfo1 = std::make_shared<ApplicationInfo>();
1451 appInfo1->name = GetTestAppName() + "_1";
1452 appInfo1->bundleName = GetTestAppName() + "_1";
1453
1454 BundleInfo bundleInfo;
1455 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1456 HapModuleInfo hapModuleInfo;
1457 hapModuleInfo.moduleName = "module789";
1458 EXPECT_TRUE(service_ != nullptr);
1459 auto record = service_->appRunningManager_->CreateAppRunningRecord(appInfo, GetTestProcessName(), bundleInfo);
1460 EXPECT_TRUE(record != nullptr);
1461 EXPECT_TRUE(record->hapModules_.size() == 0);
1462 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1463 EXPECT_TRUE(moduleRecord == nullptr);
1464
1465 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1466 abilityInfo2->name = GetTestAbilityName() + "_1";
1467 abilityInfo2->applicationName = GetTestAppName();
1468 HapModuleInfo hapModuleInfo1;
1469 hapModuleInfo1.moduleName = "module123";
1470 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1471 record->AddModule(appInfo1, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
1472 EXPECT_TRUE(record->hapModules_.size() == 1);
1473 moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1474 EXPECT_TRUE(moduleRecord == nullptr);
1475
1476 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
1477 EXPECT_TRUE(record->hapModules_.size() == 2);
1478
1479 std::string moduleName1 = "module123";
1480 moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, moduleName1);
1481 EXPECT_TRUE(moduleRecord != nullptr);
1482
1483 moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1484 EXPECT_TRUE(moduleRecord == nullptr);
1485 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRecordByModuleName_001 end");
1486 }
1487
1488 /*
1489 * Feature: AMS
1490 * Function: GetAbilities
1491 * SubFunction: GetAbilities
1492 * FunctionPoints: check params
1493 * EnvConditions: Mobile that can run ohos test framework
1494 * CaseDescription: Get All Abilities
1495 */
1496
1497 HWTEST_F(AmsAppRunningRecordTest, GetAbilities_001, TestSize.Level1)
1498 {
1499 auto abilityInfo = std::make_shared<AbilityInfo>();
1500 abilityInfo->name = GetTestAbilityName();
1501 auto appInfo = std::make_shared<ApplicationInfo>();
1502 appInfo->name = GetTestAppName();
1503
1504 BundleInfo bundleInfo;
1505 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1506 HapModuleInfo hapModuleInfo;
1507 hapModuleInfo.moduleName = "module789";
1508 EXPECT_TRUE(service_ != nullptr);
1509 auto record = service_->CreateAppRunningRecord(
1510 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1511
1512 EXPECT_TRUE(record != nullptr);
1513
1514 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1515 abilityInfo2->name = GetTestAbilityName() + "_1";
1516 abilityInfo2->applicationName = GetTestAppName();
1517 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1518 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo, nullptr, 0);
1519
1520 auto abilities = record->GetAbilities();
1521 EXPECT_TRUE(abilities.size() == 2);
1522 }
1523
1524 /*
1525 * Feature: AMS
1526 * Function: GetAbilities
1527 * SubFunction: GetAbilities
1528 * FunctionPoints: check params
1529 * EnvConditions: Mobile that can run ohos test framework
1530 * CaseDescription: Get All Abilities
1531 */
1532
1533 HWTEST_F(AmsAppRunningRecordTest, GetAbilities_002, TestSize.Level1)
1534 {
1535 auto abilityInfo = std::make_shared<AbilityInfo>();
1536 abilityInfo->name = GetTestAbilityName();
1537 auto appInfo = std::make_shared<ApplicationInfo>();
1538 appInfo->name = GetTestAppName();
1539
1540 BundleInfo bundleInfo;
1541 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1542 HapModuleInfo hapModuleInfo;
1543 hapModuleInfo.moduleName = "module789";
1544 EXPECT_TRUE(service_ != nullptr);
1545 auto record = service_->CreateAppRunningRecord(
1546 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1547
1548 EXPECT_TRUE(record != nullptr);
1549
1550 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1551 abilityInfo2->name = GetTestAbilityName() + "_1";
1552 abilityInfo2->applicationName = GetTestAppName();
1553 HapModuleInfo hapModuleInfo1;
1554 hapModuleInfo1.moduleName = "module123";
1555 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1556 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
1557
1558 auto abilities = record->GetAbilities();
1559 EXPECT_TRUE(abilities.size() == 2);
1560 }
1561
1562 /*
1563 * Feature: AMS
1564 * Function: RemoveModuleRecord
1565 * SubFunction: RemoveModuleRecord
1566 * FunctionPoints: check params
1567 * EnvConditions: Mobile that can run ohos test framework
1568 * CaseDescription: Remove ModuleRecord
1569 */
1570 HWTEST_F(AmsAppRunningRecordTest, RemoveModuleRecord_001, TestSize.Level1)
1571 {
1572 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest RemoveModuleRecord_001 start");
1573 auto abilityInfo = std::make_shared<AbilityInfo>();
1574 abilityInfo->name = GetTestAbilityName();
1575 auto appInfo = std::make_shared<ApplicationInfo>();
1576 appInfo->name = GetTestAppName();
1577 appInfo->bundleName = GetTestAppName();
1578
1579 BundleInfo bundleInfo;
1580 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1581 HapModuleInfo hapModuleInfo;
1582 hapModuleInfo.moduleName = "module789";
1583 EXPECT_TRUE(service_ != nullptr);
1584 auto record = service_->CreateAppRunningRecord(
1585 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1586
1587 EXPECT_TRUE(record != nullptr);
1588
1589 auto abilityInfo2 = std::make_shared<AbilityInfo>();
1590 abilityInfo2->name = GetTestAbilityName() + "_1";
1591 abilityInfo2->applicationName = GetTestAppName();
1592 HapModuleInfo hapModuleInfo1;
1593 hapModuleInfo1.moduleName = "module123";
1594 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
1595 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
1596
1597 std::shared_ptr<ModuleRunningRecord> moduleRecord0;
1598 record->RemoveModuleRecord(moduleRecord0);
1599 auto moduleRecordList = record->GetAllModuleRecord();
1600 EXPECT_TRUE(moduleRecordList.size() == 2);
1601
1602 moduleRecord0 = std::make_shared<ModuleRunningRecord>(appInfo, nullptr);
1603 HapModuleInfo hapModuleInfo0;
1604 hapModuleInfo0.moduleName = "module0";
1605 record->RemoveModuleRecord(moduleRecord0);
1606 moduleRecordList = record->GetAllModuleRecord();
1607 EXPECT_TRUE(moduleRecordList.size() == 2);
1608
1609 auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName);
1610 EXPECT_TRUE(moduleRecord);
1611
1612 record->RemoveModuleRecord(moduleRecord);
1613 moduleRecordList = record->GetAllModuleRecord();
1614 EXPECT_TRUE(moduleRecordList.size() == 1);
1615
1616 auto moduleRecord1 = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo1.moduleName);
1617 EXPECT_TRUE(moduleRecord1);
1618
1619 record->RemoveModuleRecord(moduleRecord1);
1620 moduleRecordList = record->GetAllModuleRecord();
1621 EXPECT_TRUE(moduleRecordList.size() == 0);
1622
1623 record->RemoveModuleRecord(moduleRecord1);
1624 moduleRecordList = record->GetAllModuleRecord();
1625 EXPECT_TRUE(moduleRecordList.size() == 0);
1626 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest RemoveModuleRecord_001 end");
1627 }
1628
1629 /*
1630 * Feature: AbilityManagerService
1631 * Function: UpdateConfiguration
1632 * SubFunction: NA
1633 * FunctionPoints: Environmental Change Notification
1634 * EnvConditions: NA
1635 * CaseDescription: Make an environment object and update
1636 */
1637 HWTEST_F(AmsAppRunningRecordTest, UpdateConfiguration_001, TestSize.Level1)
1638 {
1639 auto testLanguge = std::string("ch-zh");
__anon11c872280502(const Configuration& config) 1640 auto configUpdate = [testLanguge](const Configuration& config) {
1641 auto l = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE);
1642 EXPECT_TRUE(testLanguge == l);
1643 };
1644
1645 Configuration config;
1646 config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, testLanguge);
1647 auto record = GetTestAppRunningRecord();
1648 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleConfigurationUpdated(_))
1649 .Times(1)
1650 .WillOnce(testing::Invoke(configUpdate));
1651
1652 record->UpdateConfiguration(config);
1653 }
1654
1655 /*
1656 * Feature: AbilityManagerService
1657 * Function: UpdateConfiguration
1658 * SubFunction: NA
1659 * FunctionPoints: Environmental Change Notification
1660 * EnvConditions: NA
1661 * CaseDescription: Make an environment object and update
1662 */
1663 HWTEST_F(AmsAppRunningRecordTest, UpdateConfiguration_002, TestSize.Level1)
1664 {
1665 auto test = std::string("colour");
__anon11c872280602(const Configuration& config) 1666 auto configUpdate = [test](const Configuration& config) {
1667 auto l = config.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_COLORMODE);
1668 EXPECT_TRUE(test == l);
1669 };
1670
1671 Configuration config;
1672 config.AddItem(AAFwk::GlobalConfigurationKey::SYSTEM_COLORMODE, test);
1673 auto record = GetTestAppRunningRecord();
1674 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleConfigurationUpdated(_))
1675 .Times(1)
1676 .WillOnce(testing::Invoke(configUpdate));
1677
1678 record->UpdateConfiguration(config);
1679 }
1680
1681 /*
1682 * Feature: AMS
1683 * Function: SetSpecifiedAbilityFlagAndWant
1684 * SubFunction: SetSpecifiedAbilityFlagAndWant
1685 * FunctionPoints: check params
1686 * EnvConditions: Mobile that can run ohos test framework
1687 * CaseDescription: Remove ModuleRecord
1688 */
1689 HWTEST_F(AmsAppRunningRecordTest, SetSpecifiedAbilityFlagAndWant_001, TestSize.Level1)
1690 {
1691 auto appInfo = std::make_shared<ApplicationInfo>();
1692 appInfo->name = GetTestAppName();
1693 appInfo->bundleName = GetTestAppName();
1694 int32_t recordId = 11;
1695 std::string processName = "processName";
1696 auto record = std::make_shared<AppRunningRecord>(appInfo, recordId, processName);
1697
1698 int32_t requestId = 1;
1699 AAFwk::Want want;
1700 std::string moduleName = "module123";
1701 record->SetSpecifiedAbilityFlagAndWant(requestId, want, moduleName);
1702 EXPECT_TRUE(record->GetSpecifiedRequestId() == requestId);
1703 EXPECT_TRUE(record->moduleName_ == moduleName);
1704 }
1705
1706 /*
1707 * Feature: AMS
1708 * Function: IsStartSpecifiedAbility
1709 * SubFunction: IsStartSpecifiedAbility
1710 * FunctionPoints: check params
1711 * EnvConditions: Mobile that can run ohos test framework
1712 * CaseDescription: Remove ModuleRecord
1713 */
1714 HWTEST_F(AmsAppRunningRecordTest, IsStartSpecifiedAbility_001, TestSize.Level1)
1715 {
1716 auto appInfo = std::make_shared<ApplicationInfo>();
1717 appInfo->name = GetTestAppName();
1718 appInfo->bundleName = GetTestAppName();
1719 int32_t recordId = 11;
1720 std::string processName = "processName";
1721 auto record = std::make_shared<AppRunningRecord>(appInfo, recordId, processName);
1722
1723 int32_t requestId = 1;
1724 AAFwk::Want want;
1725 std::string moduleName = "module123";
1726 record->SetSpecifiedAbilityFlagAndWant(requestId, want, moduleName);
1727 EXPECT_TRUE(record->GetSpecifiedRequestId() == requestId);
1728 }
1729
1730 /*
1731 * Feature: AMS
1732 * Function: GetSpecifiedWant
1733 * SubFunction: GetSpecifiedWant
1734 * FunctionPoints: check params
1735 * EnvConditions: Mobile that can run ohos test framework
1736 * CaseDescription: Remove ModuleRecord
1737 */
1738 HWTEST_F(AmsAppRunningRecordTest, GetSpecifiedWant_001, TestSize.Level1)
1739 {
1740 auto appInfo = std::make_shared<ApplicationInfo>();
1741 appInfo->name = GetTestAppName();
1742 appInfo->bundleName = GetTestAppName();
1743 int32_t recordId = 11;
1744 std::string processName = "processName";
1745 auto record = std::make_shared<AppRunningRecord>(appInfo, recordId, processName);
1746
1747 Want want;
1748 want.SetElementName("DemoDeviceId", "DemoBundleName", "DemoAbilityName");
1749 std::string moduleName = "module123";
1750 record->SetSpecifiedAbilityFlagAndWant(1, want, moduleName);
1751 EXPECT_TRUE(record->GetSpecifiedWant().GetBundle() == want.GetBundle());
1752 }
1753
1754 /*
1755 * Feature: AMS
1756 * Function: RegisterStartSpecifiedAbilityResponse
1757 * SubFunction: RegisterStartSpecifiedAbilityResponse
1758 * FunctionPoints: check params
1759 * EnvConditions: Mobile that can run ohos test framework
1760 * CaseDescription: Remove ModuleRecord
1761 */
1762 HWTEST_F(AmsAppRunningRecordTest, RegisterStartSpecifiedAbilityResponse_001, TestSize.Level1)
1763 {
1764 sptr<IStartSpecifiedAbilityResponse> response;
1765 service_->RegisterStartSpecifiedAbilityResponse(response);
1766 EXPECT_TRUE(service_->startSpecifiedAbilityResponse_ == response);
1767 }
1768
1769 /*
1770 * Feature: AMS
1771 * Function: StartSpecifiedAbility
1772 * SubFunction: StartSpecifiedAbility
1773 * FunctionPoints: check params
1774 * EnvConditions: Mobile that can run ohos test framework
1775 * CaseDescription: Remove ModuleRecord
1776 */
1777 HWTEST_F(AmsAppRunningRecordTest, StartSpecifiedAbility_001, TestSize.Level1)
1778 {
1779 auto abilityInfo = std::make_shared<AbilityInfo>();
1780 abilityInfo->name = GetTestAbilityName();
1781 auto appInfo = std::make_shared<ApplicationInfo>();
1782 appInfo->name = GetTestAppName();
1783 BundleInfo bundleInfo;
1784 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1785 bundleInfo.jointUserId = "joint456";
1786 HapModuleInfo hapModuleInfo;
1787 hapModuleInfo.moduleName = "module789";
1788 EXPECT_TRUE(service_ != nullptr);
1789 auto record = service_->CreateAppRunningRecord(
1790 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1791
1792 EXPECT_TRUE(record != nullptr);
1793 EXPECT_EQ(record->GetName(), GetTestAppName());
1794 EXPECT_EQ(record->GetProcessName(), GetTestProcessName());
1795
1796 Want want;
1797 want.SetElementName("DemoDeviceIdB", "DemoBundleNameB", "DemoAbilityNameB");
1798 service_->StartSpecifiedAbility(want, *abilityInfo);
1799 }
1800
1801 /*
1802 * Feature: AMS
1803 * Function: StartSpecifiedAbility
1804 * SubFunction: StartSpecifiedAbility
1805 * FunctionPoints: check params
1806 * EnvConditions: Mobile that can run ohos test framework
1807 * CaseDescription: Remove ModuleRecord
1808 */
1809 HWTEST_F(AmsAppRunningRecordTest, StartSpecifiedAbility_002, TestSize.Level1)
1810 {
1811 auto abilityInfo = std::make_shared<AbilityInfo>();
1812 abilityInfo->name = GetTestAbilityName();
1813 auto appInfo = std::make_shared<ApplicationInfo>();
1814 appInfo->name = GetTestAppName();
1815 BundleInfo bundleInfo;
1816 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1817 bundleInfo.jointUserId = "joint456";
1818 HapModuleInfo hapModuleInfo;
1819 hapModuleInfo.moduleName = "module789";
1820 EXPECT_TRUE(service_ != nullptr);
1821 auto record = service_->CreateAppRunningRecord(
1822 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1823
1824 EXPECT_TRUE(record != nullptr);
1825 EXPECT_EQ(record->GetName(), GetTestAppName());
1826 EXPECT_EQ(record->GetProcessName(), GetTestProcessName());
1827
1828 auto abilityInfo1 = std::make_shared<AbilityInfo>();
1829 abilityInfo1->name = "test_ability_name_2";
1830 Want want;
1831 want.SetElementName("DemoDeviceId", "DemoBundleName", "DemoAbilityName");
1832 service_->StartSpecifiedAbility(want, *abilityInfo1);
1833 }
1834
1835 /*
1836 * Feature: AMS
1837 * Function: LaunchApplication
1838 * SubFunction: LaunchApplication
1839 * FunctionPoints: check params
1840 * EnvConditions: Mobile that can run ohos test framework
1841 * CaseDescription: Remove ModuleRecord
1842 */
1843 HWTEST_F(AmsAppRunningRecordTest, Specified_LaunchApplication_001, TestSize.Level1)
1844 {
1845 auto abilityInfo = std::make_shared<AbilityInfo>();
1846 abilityInfo->name = GetTestAbilityName();
1847 abilityInfo->applicationName = GetTestAppName();
1848 abilityInfo->process = GetTestAppName();
1849 abilityInfo->applicationInfo.bundleName = GetTestAppName();
1850
1851 auto appInfo = std::make_shared<ApplicationInfo>();
1852 appInfo->bundleName = GetTestAppName();
1853 BundleInfo bundleInfo;
1854 bundleInfo.appId = "com.ohos.test.helloworld_code123";
1855 bundleInfo.jointUserId = "joint456";
1856 HapModuleInfo hapModuleInfo;
1857 hapModuleInfo.moduleName = "module789";
1858
1859 EXPECT_TRUE(service_ != nullptr);
1860 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
1861 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
1862
1863 record->SetApplicationClient(GetMockedAppSchedulerClient());
1864 record->specifiedRequestId_ = 1;
1865 EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1);
1866 service_->LaunchApplication(record);
1867 auto ability = record->GetAbilityRunningRecordByToken(GetMockToken());
1868 EXPECT_TRUE(ability->GetState() == AbilityState::ABILITY_STATE_READY);
1869 }
1870
1871 /*
1872 * Feature: AMS
1873 * Function: RenderRecord
1874 * SubFunction: RenderRecord
1875 * FunctionPoints: check params
1876 * EnvConditions: Mobile that can run ohos test framework
1877 * CaseDescription: New RenderRecord
1878 */
1879 HWTEST_F(AmsAppRunningRecordTest, NewRenderRecord_001, TestSize.Level1)
1880 {
1881 pid_t hostPid = 0;
1882 std::string renderParam = "test_render_param";
1883 int32_t ipcFd = 0;
1884 int32_t sharedFd = 0;
1885 int32_t crashFd = 0;
1886 std::shared_ptr<AppRunningRecord> host;
1887 RenderRecord *renderRecord =
1888 new RenderRecord(hostPid, renderParam, ipcFd, sharedFd, crashFd, host);
1889 EXPECT_NE(renderRecord, nullptr);
1890 delete renderRecord;
1891 }
1892
1893 /*
1894 * Feature: AMS
1895 * Function: CreateRenderRecord
1896 * SubFunction: CreateRenderRecord
1897 * FunctionPoints: check params
1898 * EnvConditions: Mobile that can run ohos test framework
1899 * CaseDescription: Create Render Record
1900 */
1901 HWTEST_F(AmsAppRunningRecordTest, CreateRenderRecord_001, TestSize.Level1)
1902 {
1903 pid_t hostPid = 0;
1904 pid_t hostPid1 = 1;
1905 std::string renderParam = "";
1906 std::string renderParam1 = "test_render_param";
1907 int32_t ipcFd = 0;
1908 int32_t ipcFd1 = 1;
1909 int32_t sharedFd = 0;
1910 int32_t sharedFd1 = 1;
1911 int32_t crashFd = 1;
1912 std::shared_ptr<AppRunningRecord> host;
1913
1914 auto appInfo = std::make_shared<ApplicationInfo>();
1915 appInfo->name = GetTestAppName();
1916 appInfo->bundleName = GetTestAppName();
1917 int32_t recordId = 11;
1918 std::string processName = "processName";
1919 std::shared_ptr<AppRunningRecord> host1 = GetTestAppRunningRecord();
1920
1921 std::shared_ptr<RenderRecord> renderRecord =
1922 RenderRecord::CreateRenderRecord(hostPid, renderParam, ipcFd, sharedFd, crashFd, host);
1923 EXPECT_EQ(renderRecord, nullptr);
1924
1925 renderRecord = RenderRecord::CreateRenderRecord(hostPid1, renderParam, ipcFd, sharedFd, crashFd, host);
1926 EXPECT_EQ(renderRecord, nullptr);
1927 renderRecord = RenderRecord::CreateRenderRecord(hostPid1, renderParam1, ipcFd, sharedFd, crashFd, host);
1928 EXPECT_EQ(renderRecord, nullptr);
1929 renderRecord = RenderRecord::CreateRenderRecord(hostPid1, renderParam1, ipcFd1, sharedFd, crashFd, host);
1930 EXPECT_EQ(renderRecord, nullptr);
1931 renderRecord = RenderRecord::CreateRenderRecord(hostPid1, renderParam1, ipcFd1, sharedFd1, crashFd, host);
1932 EXPECT_EQ(renderRecord, nullptr);
1933 }
1934
1935 /*
1936 * Feature: AMS
1937 * Function: Set/GetPid
1938 * SubFunction: Set/GetPid
1939 * FunctionPoints: check params
1940 * EnvConditions: Mobile that can run ohos test framework
1941 * CaseDescription: Set/Get Pid
1942 */
1943 HWTEST_F(AmsAppRunningRecordTest, SetPid_001, TestSize.Level1)
1944 {
1945 pid_t hostPid = 0;
1946 std::string renderParam = "test_render_param";
1947 std::shared_ptr<AppRunningRecord> host;
1948 RenderRecord* renderRecord =
1949 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
1950 EXPECT_NE(renderRecord, nullptr);
1951 pid_t pid = 0;
1952 renderRecord->SetPid(pid);
1953 EXPECT_EQ(renderRecord->GetPid(), pid);
1954 }
1955
1956 /*
1957 * Feature: AMS
1958 * Function: GetHostPid
1959 * SubFunction: GetHostPid
1960 * FunctionPoints: check params
1961 * EnvConditions: Mobile that can run ohos test framework
1962 * CaseDescription: Get HostPid
1963 */
1964 HWTEST_F(AmsAppRunningRecordTest, GetHostPid_001, TestSize.Level1)
1965 {
1966 pid_t hostPid = 1;
1967 std::string renderParam = "test_render_param";
1968 std::shared_ptr<AppRunningRecord> host;
1969 RenderRecord* renderRecord =
1970 new RenderRecord(hostPid, renderParam, 1, 0, 0, host);
1971 EXPECT_NE(renderRecord, nullptr);
1972 EXPECT_EQ(renderRecord->GetHostPid(), hostPid);
1973 }
1974
1975 /*
1976 * Feature: AMS
1977 * Function: Set/GetUid
1978 * SubFunction: Set/GetUid
1979 * FunctionPoints: check params
1980 * EnvConditions: Mobile that can run ohos test framework
1981 * CaseDescription: Set/Get Uid
1982 */
1983 HWTEST_F(AmsAppRunningRecordTest, SetUid_001, TestSize.Level1)
1984 {
1985 pid_t hostPid = 0;
1986 std::string renderParam = "test_render_param";
1987 std::shared_ptr<AppRunningRecord> host;
1988 RenderRecord* renderRecord =
1989 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
1990 EXPECT_NE(renderRecord, nullptr);
1991 int32_t uid = 1;
1992 renderRecord->SetUid(uid);
1993 EXPECT_EQ(renderRecord->GetUid(), uid);
1994 }
1995
1996 /*
1997 * Feature: AMS
1998 * Function: Set/GetHostUid
1999 * SubFunction: Set/GetHostUid
2000 * FunctionPoints: check params
2001 * EnvConditions: Mobile that can run ohos test framework
2002 * CaseDescription: Set/Get HostUid
2003 */
2004 HWTEST_F(AmsAppRunningRecordTest, SetHostUid_001, TestSize.Level1)
2005 {
2006 pid_t hostPid = 0;
2007 std::string renderParam = "test_render_param";
2008 std::shared_ptr<AppRunningRecord> host;
2009 RenderRecord* renderRecord =
2010 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2011 EXPECT_NE(renderRecord, nullptr);
2012 int32_t uid = 1;
2013 renderRecord->SetHostUid(uid);
2014 EXPECT_EQ(renderRecord->GetHostUid(), uid);
2015 }
2016
2017 /*
2018 * Feature: AMS
2019 * Function: Set/GetHostBundleName
2020 * SubFunction: Set/GetHostBundleName
2021 * FunctionPoints: check params
2022 * EnvConditions: Mobile that can run ohos test framework
2023 * CaseDescription: Set/Get HostBundleName
2024 */
2025 HWTEST_F(AmsAppRunningRecordTest, SetHostBundleName_001, TestSize.Level1)
2026 {
2027 pid_t hostPid = 0;
2028 std::string renderParam = "test_render_param";
2029 std::shared_ptr<AppRunningRecord> host;
2030 RenderRecord* renderRecord =
2031 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2032 EXPECT_NE(renderRecord, nullptr);
2033 std::string hostBundleName = "testhostBundleName";
2034 renderRecord->SetHostBundleName(hostBundleName);
2035 EXPECT_EQ(renderRecord->GetHostBundleName(), hostBundleName);
2036 }
2037
2038 /*
2039 * Feature: AMS
2040 * Function: Set/GetProcessName
2041 * SubFunction: Set/GetProcessName
2042 * FunctionPoints: check params
2043 * EnvConditions: Mobile that can run ohos test framework
2044 * CaseDescription: Set/Get GetProcessName
2045 */
2046 HWTEST_F(AmsAppRunningRecordTest, SetProcessName_001, TestSize.Level1)
2047 {
2048 pid_t hostPid = 0;
2049 std::string renderParam = "test_render_param";
2050 std::shared_ptr<AppRunningRecord> host;
2051 RenderRecord* renderRecord =
2052 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2053 EXPECT_NE(renderRecord, nullptr);
2054 std::string hostProcessName = "testhostProcessName";
2055 renderRecord->SetProcessName(hostProcessName);
2056 EXPECT_EQ(renderRecord->GetProcessName(), hostProcessName);
2057 }
2058
2059 /*
2060 * Feature: AMS
2061 * Function: GetRenderParam
2062 * SubFunction: GetRenderParam
2063 * FunctionPoints: check params
2064 * EnvConditions: Mobile that can run ohos test framework
2065 * CaseDescription: Get Render Param
2066 */
2067 HWTEST_F(AmsAppRunningRecordTest, GetRenderParam_001, TestSize.Level1)
2068 {
2069 pid_t hostPid = 0;
2070 std::string renderParam = "test_render_param";
2071 std::shared_ptr<AppRunningRecord> host;
2072 RenderRecord* renderRecord =
2073 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2074 EXPECT_NE(renderRecord, nullptr);
2075 EXPECT_EQ(renderRecord->GetRenderParam(), renderParam);
2076 }
2077
2078 /*
2079 * Feature: AMS
2080 * Function: GetIpcFd
2081 * SubFunction: GetIpcFd
2082 * FunctionPoints: check params
2083 * EnvConditions: Mobile that can run ohos test framework
2084 * CaseDescription: Get Ipc Fd
2085 */
2086 HWTEST_F(AmsAppRunningRecordTest, GetIpcFd_001, TestSize.Level1)
2087 {
2088 pid_t hostPid = 0;
2089 std::string renderParam = "test_render_param";
2090 std::shared_ptr<AppRunningRecord> host;
2091 RenderRecord* renderRecord =
2092 new RenderRecord(hostPid, renderParam, 1, 0, 0, host);
2093 EXPECT_NE(renderRecord, nullptr);
2094 EXPECT_EQ(renderRecord->GetIpcFd(), 1);
2095 }
2096
2097 /*
2098 * Feature: AMS
2099 * Function: GetSharedFd
2100 * SubFunction: GetSharedFd
2101 * FunctionPoints: check params
2102 * EnvConditions: Mobile that can run ohos test framework
2103 * CaseDescription: Get Share Fd
2104 */
2105 HWTEST_F(AmsAppRunningRecordTest, GetSharedFd_001, TestSize.Level1)
2106 {
2107 pid_t hostPid = 0;
2108 std::string renderParam = "test_render_param";
2109 std::shared_ptr<AppRunningRecord> host;
2110 RenderRecord* renderRecord =
2111 new RenderRecord(hostPid, renderParam, 0, 1, 0, host);
2112 EXPECT_NE(renderRecord, nullptr);
2113 EXPECT_EQ(renderRecord->GetSharedFd(), 1);
2114 }
2115
2116 /*
2117 * Feature: AMS
2118 * Function: GetHostRecord
2119 * SubFunction: GetHostRecord
2120 * FunctionPoints: check params
2121 * EnvConditions: Mobile that can run ohos test framework
2122 * CaseDescription: Get Host Record
2123 */
2124 HWTEST_F(AmsAppRunningRecordTest, GetHostRecord_001, TestSize.Level1)
2125 {
2126 pid_t hostPid = 0;
2127 std::string renderParam = "test_render_param";
2128 std::shared_ptr<AppRunningRecord> host;
2129 RenderRecord* renderRecord =
2130 new RenderRecord(hostPid, renderParam, 0, 1, 0, host);
2131 EXPECT_NE(renderRecord, nullptr);
2132 EXPECT_EQ(renderRecord->GetHostRecord(), host);
2133 }
2134
2135 /*
2136 * Feature: AMS
2137 * Function: Set/GetScheduler
2138 * SubFunction: Set/GetScheduler
2139 * FunctionPoints: check params
2140 * EnvConditions: Mobile that can run ohos test framework
2141 * CaseDescription: Set/Get Scheduler
2142 */
2143 HWTEST_F(AmsAppRunningRecordTest, SetScheduler_001, TestSize.Level1)
2144 {
2145 pid_t hostPid = 0;
2146 std::string renderParam = "test_render_param";
2147 std::shared_ptr<AppRunningRecord> host;
2148 RenderRecord* renderRecord =
2149 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2150 EXPECT_NE(renderRecord, nullptr);
2151 sptr<IRenderScheduler> scheduler;
2152 renderRecord->SetScheduler(scheduler);
2153 EXPECT_EQ(renderRecord->GetScheduler(), scheduler);
2154 }
2155
2156 /*
2157 * Feature: AMS
2158 * Function: SetDeathRecipient
2159 * SubFunction: SetDeathRecipient
2160 * FunctionPoints: check params
2161 * EnvConditions: Mobile that can run ohos test framework
2162 * CaseDescription: Set Death Recipient
2163 */
2164 HWTEST_F(AmsAppRunningRecordTest, SetDeathRecipient_001, TestSize.Level1)
2165 {
2166 pid_t hostPid = 0;
2167 std::string renderParam = "test_render_param";
2168 std::shared_ptr<AppRunningRecord> host;
2169 RenderRecord* renderRecord =
2170 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2171 EXPECT_NE(renderRecord, nullptr);
2172 sptr<AppDeathRecipient> recipient;
2173 renderRecord->SetDeathRecipient(recipient);
2174 EXPECT_EQ(renderRecord->deathRecipient_, recipient);
2175 }
2176
2177 /*
2178 * Feature: AMS
2179 * Function: RegisterDeathRecipient
2180 * SubFunction: RegisterDeathRecipient
2181 * FunctionPoints: check params
2182 * EnvConditions: Mobile that can run ohos test framework
2183 * CaseDescription: Register Death Recipient
2184 */
2185 HWTEST_F(AmsAppRunningRecordTest, RegisterDeathRecipient_001, TestSize.Level1)
2186 {
2187 pid_t hostPid = 0;
2188 std::string renderParam = "test_render_param";
2189 std::shared_ptr<AppRunningRecord> host;
2190 RenderRecord* renderRecord =
2191 new RenderRecord(hostPid, renderParam, 0, 0, 0, host);
2192 EXPECT_NE(renderRecord, nullptr);
2193 renderRecord->RegisterDeathRecipient();
2194
2195 sptr<MockRenderScheduler> mockRenderScheduler = new (std::nothrow) MockRenderScheduler();
2196 renderRecord->SetScheduler(mockRenderScheduler);
2197 renderRecord->RegisterDeathRecipient();
2198
2199 sptr<AppDeathRecipient> recipient;
2200 renderRecord->SetDeathRecipient(recipient);
2201 renderRecord->RegisterDeathRecipient();
2202
2203 renderRecord->SetScheduler(nullptr);
2204 renderRecord->RegisterDeathRecipient();
2205 }
2206
2207 /*
2208 * Feature: AMS
2209 * Function: NewAppRunningRecord
2210 * SubFunction: NewAppRunningRecord
2211 * FunctionPoints: check params
2212 * EnvConditions: Mobile that can run ohos test framework
2213 * CaseDescription: New AppRunningRecord
2214 */
2215 HWTEST_F(AmsAppRunningRecordTest, NewAppRunningRecord_001, TestSize.Level1)
2216 {
2217 std::shared_ptr<ApplicationInfo> appInfo;
2218 std::shared_ptr<AppRunningRecord> appRunningRecord =
2219 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
2220 EXPECT_NE(appRunningRecord, nullptr);
2221
2222 appInfo = std::make_shared<ApplicationInfo>();
2223 appInfo->name = GetTestAppName();
2224 std::shared_ptr<AppRunningRecord> appRunningRecord1 =
2225 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
2226 EXPECT_NE(appRunningRecord1, nullptr);
2227
2228 bool isLauncherApp = appRunningRecord1->IsLauncherApp();
2229 EXPECT_FALSE(isLauncherApp);
2230
2231 appRunningRecord1->SetState(ApplicationState::APP_STATE_END);
2232 EXPECT_EQ(appRunningRecord1->GetState(), ApplicationState::APP_STATE_CREATE);
2233
2234 appRunningRecord1->SetState(ApplicationState::APP_STATE_READY);
2235 EXPECT_EQ(appRunningRecord1->GetState(), ApplicationState::APP_STATE_READY);
2236 }
2237
2238 /*
2239 * Feature: AMS
2240 * Function: GetAbilityRunningRecord
2241 * SubFunction: GetAbilityRunningRecord
2242 * FunctionPoints: check params
2243 * EnvConditions: Mobile that can run ohos test framework
2244 * CaseDescription: Get AbilityRunningRecord
2245 */
2246 HWTEST_F(AmsAppRunningRecordTest, GetAbilityRunningRecord_002, TestSize.Level1)
2247 {
2248 auto abilityInfo = std::make_shared<AbilityInfo>();
2249 abilityInfo->name = GetTestAbilityName();
2250 abilityInfo->applicationName = GetTestAppName();
2251
2252 auto appInfo = std::make_shared<ApplicationInfo>();
2253 appInfo->name = GetTestAppName();
2254 appInfo->bundleName = GetTestAppName();
2255
2256 BundleInfo bundleInfo;
2257 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2258 HapModuleInfo hapModuleInfo;
2259 hapModuleInfo.moduleName = "module789";
2260
2261 std::shared_ptr<AppRunningRecord> record = service_->CreateAppRunningRecord(
2262 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2263
2264 sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
2265 record->AddModule(appInfo, abilityInfo, token, hapModuleInfo, nullptr, 0);
2266 auto abilityInfo1 = std::make_shared<AbilityInfo>();
2267 abilityInfo1->name = GetTestAbilityName() + "_1";
2268 abilityInfo1->applicationName = GetTestAppName();
2269 HapModuleInfo hapModuleInfo1;
2270 hapModuleInfo1.moduleName = "";
2271 sptr<IRemoteObject> token1 = new (std::nothrow) MockAbilityToken();
2272 record->AddModule(appInfo, abilityInfo1, token1, hapModuleInfo1, nullptr, 0);
2273 auto moduleRecordList = record->GetAllModuleRecord();
2274 EXPECT_TRUE(moduleRecordList.size() == 2);
2275
2276 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord1 = record->GetAbilityRunningRecord(999);
2277 EXPECT_EQ(abilityRunningRecord1, nullptr);
2278 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord2 = record->GetAbilityRunningRecord(123);
2279 EXPECT_EQ(abilityRunningRecord2, nullptr);
2280 }
2281
2282 /*
2283 * Feature: AMS
2284 * Function: AddAbilityStage
2285 * SubFunction: AddAbilityStage
2286 * FunctionPoints: check params
2287 * EnvConditions: Mobile that can run ohos test framework
2288 * CaseDescription: Add AbilityStage
2289 */
2290 HWTEST_F(AmsAppRunningRecordTest, AddAbilityStage_001, TestSize.Level1)
2291 {
2292 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStage_001 start");
2293 std::string bundleName = "test_mainBundleName";
2294 std::string bundleName1 = "test_mainBundleName1";
2295 auto abilityInfo = std::make_shared<AbilityInfo>();
2296 abilityInfo->name = GetTestAbilityName();
2297 auto appInfo = std::make_shared<ApplicationInfo>();
2298 appInfo->name = GetTestAppName();
2299 appInfo->bundleName = bundleName1;
2300 BundleInfo bundleInfo;
2301 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2302 HapModuleInfo hapModuleInfo;
2303 hapModuleInfo.moduleName = "module789";
2304 EXPECT_TRUE(service_ != nullptr);
2305 auto record = service_->CreateAppRunningRecord(
2306 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2307 EXPECT_TRUE(record != nullptr);
2308
2309 record->AddAbilityStage();
2310
2311 record->isStageBasedModel_ = true;
2312 record->AddAbilityStage();
2313
2314 record->appLifeCycleDeal_ = std::make_shared<AppLifeCycleDeal>();
2315 record->AddAbilityStage();
2316
2317 appInfo->bundleName = bundleName;
2318 auto abilityInfo2 = std::make_shared<AbilityInfo>();
2319 abilityInfo2->name = GetTestAbilityName() + "_1";
2320 abilityInfo2->applicationName = GetTestAppName();
2321 HapModuleInfo hapModuleInfo1;
2322 hapModuleInfo1.moduleName = "module123";
2323 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
2324 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
2325 record->mainBundleName_ = bundleName;
2326 record->AddAbilityStage();
2327 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStage_001 end");
2328 }
2329
2330 /*
2331 * Feature: AMS
2332 * Function: AddAbilityStageBySpecifiedAbility
2333 * SubFunction: AddAbilityStageBySpecifiedAbility
2334 * FunctionPoints: check params
2335 * EnvConditions: Mobile that can run ohos test framework
2336 * CaseDescription: Add Ability Stage By Specified Ability
2337 */
2338 HWTEST_F(AmsAppRunningRecordTest, AddAbilityStageBySpecifiedAbility_001, TestSize.Level1)
2339 {
2340 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStageBySpecifiedAbility_001 start");
2341 std::string bundleName = "test_mainBundleName";
2342 std::string bundleName1 = "test_mainBundleName1";
2343 auto abilityInfo = std::make_shared<AbilityInfo>();
2344 abilityInfo->name = GetTestAbilityName();
2345 auto appInfo = std::make_shared<ApplicationInfo>();
2346 appInfo->name = GetTestAppName();
2347 appInfo->bundleName = bundleName;
2348 BundleInfo bundleInfo;
2349 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2350 HapModuleInfo hapModuleInfo;
2351 hapModuleInfo.moduleName = "module789";
2352 EXPECT_TRUE(service_ != nullptr);
2353 auto record = service_->CreateAppRunningRecord(
2354 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2355 EXPECT_TRUE(record != nullptr);
2356
2357 record->AddAbilityStageBySpecifiedAbility(bundleName1);
2358
2359 auto runner = AAFwk::TaskHandlerWrap::CreateQueueHandler("AmsAppRunningRecordTest");
2360 std::shared_ptr<AppMgrServiceInner> serviceInner = std::make_shared<AppMgrServiceInner>();
2361 std::shared_ptr<AMSEventHandler> handler = std::make_shared<AMSEventHandler>(runner, serviceInner);
2362 record->taskHandler_ = runner;
2363 record->eventHandler_ = handler;
2364 record->AddAbilityStageBySpecifiedAbility(bundleName1);
2365 record->AddAbilityStageBySpecifiedAbility(bundleName);
2366
2367 record->eventHandler_->SendEvent(
2368 AAFwk::EventWrap(AMSEventHandler::START_PROCESS_SPECIFIED_ABILITY_TIMEOUT_MSG, 1), 0);
2369 record->AddAbilityStageBySpecifiedAbility(bundleName);
2370
2371 auto abilityInfo2 = std::make_shared<AbilityInfo>();
2372 abilityInfo2->name = GetTestAbilityName() + "_1";
2373 abilityInfo2->applicationName = GetTestAppName();
2374 HapModuleInfo hapModuleInfo1;
2375 hapModuleInfo1.moduleName = "module123";
2376 sptr<IRemoteObject> token2 = new (std::nothrow) MockAbilityToken();
2377 record->AddModule(appInfo, abilityInfo2, token2, hapModuleInfo1, nullptr, 0);
2378
2379 record->appLifeCycleDeal_ = std::make_shared<AppLifeCycleDeal>();
2380 record->AddAbilityStageBySpecifiedAbility(bundleName);
2381
2382 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStageBySpecifiedAbility_001 end");
2383 }
2384
2385 /*
2386 * Feature: AMS
2387 * Function: AddAbilityStageDone
2388 * SubFunction: AddAbilityStageDone
2389 * FunctionPoints: check params
2390 * EnvConditions: Mobile that can run ohos test framework
2391 * CaseDescription: Add Ability Stage Done
2392 */
2393 HWTEST_F(AmsAppRunningRecordTest, AddAbilityStageDone_001, TestSize.Level1)
2394 {
2395 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStageDone_001 start");
2396 std::string bundleName = "test_mainBundleName";
2397 auto abilityInfo = std::make_shared<AbilityInfo>();
2398 abilityInfo->name = GetTestAbilityName();
2399 auto appInfo = std::make_shared<ApplicationInfo>();
2400 appInfo->name = GetTestAppName();
2401 appInfo->bundleName = bundleName;
2402 BundleInfo bundleInfo;
2403 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2404 HapModuleInfo hapModuleInfo;
2405 hapModuleInfo.moduleName = "module789";
2406 EXPECT_TRUE(service_ != nullptr);
2407 auto record = service_->CreateAppRunningRecord(
2408 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2409 EXPECT_TRUE(record != nullptr);
2410 record->AddAbilityStageDone();
2411
2412 auto runner = AAFwk::TaskHandlerWrap::CreateQueueHandler("AmsAppRunningRecordTest");
2413 std::shared_ptr<AppMgrServiceInner> serviceInner = std::make_shared<AppMgrServiceInner>();
2414 std::shared_ptr<AMSEventHandler> handler = std::make_shared<AMSEventHandler>(runner, serviceInner);
2415 record->taskHandler_ = runner;
2416 record->eventHandler_ = handler;
2417 record->AddAbilityStageDone();
2418
2419 record->eventHandler_->SendEvent(
2420 AAFwk::EventWrap(AMSEventHandler::START_PROCESS_SPECIFIED_ABILITY_TIMEOUT_MSG, 1), 0);
2421 record->eventHandler_->SendEvent(
2422 AAFwk::EventWrap(AMSEventHandler::ADD_ABILITY_STAGE_INFO_TIMEOUT_MSG, 1), 0);
2423 record->AddAbilityStageDone();
2424
2425 record->specifiedRequestId_ = 1;
2426 record->AddAbilityStageDone();
2427
2428 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest AddAbilityStageDone_001 end");
2429 }
2430
2431 /*
2432 * Feature: AMS
2433 * Function: GetModuleRunningRecordByToken
2434 * SubFunction: GetModuleRunningRecordByToken
2435 * FunctionPoints: check params
2436 * EnvConditions: Mobile that can run ohos test framework
2437 * CaseDescription: Get Module Running Record By Token
2438 */
2439 HWTEST_F(AmsAppRunningRecordTest, GetModuleRunningRecordByToken_001, TestSize.Level1)
2440 {
2441 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRunningRecordByToken_001 start");
2442 auto abilityInfo = std::make_shared<AbilityInfo>();
2443 abilityInfo->name = GetTestAbilityName();
2444 auto appInfo = std::make_shared<ApplicationInfo>();
2445 appInfo->name = GetTestAppName();
2446 appInfo->bundleName = GetTestAppName();
2447 auto appInfo1 = std::make_shared<ApplicationInfo>();
2448 appInfo1->name = GetTestAppName() + "_1";
2449 appInfo1->bundleName = GetTestAppName() + "_1";
2450 BundleInfo bundleInfo;
2451 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2452 bundleInfo.jointUserId = "joint456";
2453 HapModuleInfo hapModuleInfo;
2454 hapModuleInfo.moduleName = "module789";
2455 sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
2456 EXPECT_TRUE(service_ != nullptr);
2457 auto record = service_->appRunningManager_->CreateAppRunningRecord(appInfo, GetTestProcessName(), bundleInfo);
2458 EXPECT_TRUE(record != nullptr);
2459 EXPECT_TRUE(record->hapModules_.size() == 0);
2460
2461 std::shared_ptr<ModuleRunningRecord> moduleRecord = record->GetModuleRunningRecordByToken(nullptr);
2462 EXPECT_TRUE(moduleRecord == nullptr);
2463 moduleRecord = record->GetModuleRunningRecordByToken(token);
2464 EXPECT_TRUE(moduleRecord == nullptr);
2465
2466 auto abilityInfo1 = std::make_shared<AbilityInfo>();
2467 abilityInfo1->name = GetTestAbilityName() + "_1";
2468 abilityInfo1->applicationName = GetTestAppName() + "_1";
2469 HapModuleInfo hapModuleInfo1;
2470 hapModuleInfo1.moduleName = "module123";
2471 sptr<IRemoteObject> token1 = new (std::nothrow) MockAbilityToken();
2472 record->AddModule(appInfo1, abilityInfo1, token1, hapModuleInfo1, nullptr, 0);
2473 EXPECT_TRUE(record->hapModules_.size() == 1);
2474 moduleRecord = record->GetModuleRunningRecordByToken(token);
2475 EXPECT_TRUE(moduleRecord == nullptr);
2476
2477 record->AddModule(appInfo, abilityInfo, token, hapModuleInfo, nullptr, 0);
2478 EXPECT_TRUE(record->hapModules_.size() == 2);
2479 moduleRecord = record->GetModuleRunningRecordByToken(token);
2480 EXPECT_TRUE(moduleRecord != nullptr);
2481 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRunningRecordByToken_001 end");
2482 }
2483
2484 /*
2485 * Feature: AMS
2486 * Function: GetModuleRunningRecordByTerminateLists
2487 * SubFunction: GetModuleRunningRecordByTerminateLists
2488 * FunctionPoints: check params
2489 * EnvConditions: Mobile that can run ohos test framework
2490 * CaseDescription: Get Module Running Record By Terminate Lists
2491 */
2492 HWTEST_F(AmsAppRunningRecordTest, GetModuleRunningRecordByTerminateLists_001, TestSize.Level1)
2493 {
2494 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRunningRecordByTerminateLists_001 start");
2495 auto abilityInfo = std::make_shared<AbilityInfo>();
2496 abilityInfo->name = GetTestAbilityName();
2497 auto abilityInfo1 = std::make_shared<AbilityInfo>();
2498 abilityInfo1->name = GetTestAbilityName() + "_1";
2499 auto appInfo = std::make_shared<ApplicationInfo>();
2500 appInfo->name = GetTestAppName();
2501 appInfo->bundleName = GetTestAppName();
2502 auto appInfo1 = std::make_shared<ApplicationInfo>();
2503 appInfo1->name = GetTestAppName() + "_1";
2504 appInfo1->bundleName = GetTestAppName() + "_1";
2505 BundleInfo bundleInfo;
2506 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2507 bundleInfo.jointUserId = "joint456";
2508 HapModuleInfo hapModuleInfo;
2509 hapModuleInfo.moduleName = "module789";
2510 sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
2511 sptr<IRemoteObject> token1 = new (std::nothrow) MockAbilityToken();
2512 EXPECT_TRUE(service_ != nullptr);
2513 auto record = service_->appRunningManager_->CreateAppRunningRecord(appInfo, GetTestProcessName(), bundleInfo);
2514 EXPECT_TRUE(record != nullptr);
2515 EXPECT_TRUE(record->hapModules_.size() == 0);
2516
2517 std::shared_ptr<ModuleRunningRecord> moduleRecord = record->GetModuleRunningRecordByTerminateLists(nullptr);
2518 EXPECT_TRUE(moduleRecord == nullptr);
2519 moduleRecord = record->GetModuleRunningRecordByTerminateLists(token);
2520 EXPECT_TRUE(moduleRecord == nullptr);
2521
2522 record->AddModule(appInfo, abilityInfo, token, hapModuleInfo, nullptr, 0);
2523 record->AddModule(appInfo1, abilityInfo1, token1, hapModuleInfo, nullptr, 0);
2524 EXPECT_TRUE(record->hapModules_.size() == 2);
2525 moduleRecord = record->GetModuleRunningRecordByTerminateLists(token);
2526 EXPECT_TRUE(moduleRecord == nullptr);
2527
2528 std::vector<std::shared_ptr<ModuleRunningRecord>> moduleRecords = record->hapModules_[appInfo->bundleName];
2529 EXPECT_TRUE(moduleRecords.size() == 1);
2530 std::shared_ptr<ModuleRunningRecord> moduleRecord1 = moduleRecords.front();
2531 auto abilityRecord = std::make_shared<AbilityRunningRecord>(abilityInfo, token, 0);
2532 moduleRecord1->terminateAbilities_.emplace(token, abilityRecord);
2533
2534 moduleRecord = record->GetModuleRunningRecordByTerminateLists(token);
2535 EXPECT_EQ(moduleRecord, moduleRecord1);
2536
2537 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest GetModuleRunningRecordByTerminateLists_001 end");
2538 }
2539
2540 /*
2541 * Feature: AMS
2542 * Function: UpdateAbilityFocusState
2543 * SubFunction: UpdateAbilityFocusState
2544 * FunctionPoints: check params
2545 * EnvConditions: Mobile that can run ohos test framework
2546 * CaseDescription: Update Ability Focus State
2547 */
2548 HWTEST_F(AmsAppRunningRecordTest, UpdateAbilityFocusState_001, TestSize.Level1)
2549 {
2550 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest UpdateAbilityFocusState_001 start");
2551
2552 auto abilityInfo = std::make_shared<AbilityInfo>();
2553 abilityInfo->name = GetTestAbilityName();
2554 auto appInfo = std::make_shared<ApplicationInfo>();
2555 appInfo->name = GetTestAppName();
2556 BundleInfo bundleInfo;
2557 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2558 bundleInfo.jointUserId = "joint456";
2559 HapModuleInfo hapModuleInfo;
2560 hapModuleInfo.moduleName = "module789";
2561 EXPECT_TRUE(service_ != nullptr);
2562 auto record = service_->CreateAppRunningRecord(
2563 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2564 EXPECT_TRUE(record != nullptr);
2565
2566 auto abilityRecord = record->GetAbilityRunningRecordByToken(GetMockToken());
2567 EXPECT_TRUE(abilityRecord != nullptr);
2568
2569 EXPECT_FALSE(abilityRecord->GetFocusFlag());
2570 record->UpdateAbilityFocusState(GetMockToken(), true);
2571 record->UpdateAbilityFocusState(GetMockToken(), false);
2572
2573 abilityRecord->UpdateFocusState(true);
2574 record->UpdateAbilityFocusState(GetMockToken(), true);
2575 record->UpdateAbilityFocusState(GetMockToken(), false);
2576
2577 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest UpdateAbilityFocusState_001 end");
2578 }
2579
2580 /*
2581 * Feature: AMS
2582 * Function: SetRestartTimeMillis
2583 * SubFunction: SetRestartTimeMillis
2584 * FunctionPoints: check params
2585 * EnvConditions: Mobile that can run ohos test framework
2586 * CaseDescription: Ability Unfocused
2587 * @tc.require: issueI6588V
2588 */
2589 HWTEST_F(AmsAppRunningRecordTest, SetRestartTimeMillis_001, TestSize.Level1)
2590 {
2591 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest SetRestartTimeMillis_001 start");
2592 std::shared_ptr<AppRunningRecord> record = GetTestAppRunningRecord();
2593 record->SetRestartTimeMillis(1000);
2594 EXPECT_EQ(record->restartTimeMillis_, 1000);
2595
2596 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest SetRestartTimeMillis_001 end");
2597 }
2598
2599 /*
2600 * Feature: AMS
2601 * Function: CanRestartResidentProc
2602 * SubFunction: CanRestartResidentProc
2603 * FunctionPoints: check params
2604 * EnvConditions: Mobile that can run ohos test framework
2605 * CaseDescription: Ability Unfocused
2606 * @tc.require: issueI6588V
2607 */
2608 HWTEST_F(AmsAppRunningRecordTest, CanRestartResidentProc_001, TestSize.Level1)
2609 {
2610 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_001 start");
2611 std::shared_ptr<AppRunningRecord> record = GetTestAppRunningRecord();
2612 record->restartResidentProcCount_ = 1;
2613 EXPECT_TRUE(record->CanRestartResidentProc());
2614
2615 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_001 end");
2616 }
2617
2618 /*
2619 * Feature: AMS
2620 * Function: CanRestartResidentProc
2621 * SubFunction: CanRestartResidentProc
2622 * FunctionPoints: check params
2623 * EnvConditions: Mobile that can run ohos test framework
2624 * CaseDescription: Ability Unfocused
2625 * @tc.require: issueI6588V
2626 */
2627 HWTEST_F(AmsAppRunningRecordTest, CanRestartResidentProc_002, TestSize.Level1)
2628 {
2629 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_002 start");
2630 std::shared_ptr<AppRunningRecord> record = GetTestAppRunningRecord();
2631 record->restartResidentProcCount_ = -1;
2632 record->restartTimeMillis_ = 0;
2633 EXPECT_TRUE(record->CanRestartResidentProc());
2634
2635 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_002 end");
2636 }
2637
2638 /*
2639 * Feature: AMS
2640 * Function: CanRestartResidentProc
2641 * SubFunction: CanRestartResidentProc
2642 * FunctionPoints: check params
2643 * EnvConditions: Mobile that can run ohos test framework
2644 * CaseDescription: Ability Unfocused
2645 * @tc.require: issueI6588V
2646 */
2647 HWTEST_F(AmsAppRunningRecordTest, CanRestartResidentProc_003, TestSize.Level1)
2648 {
2649 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_003 start");
2650
2651 auto record = GetTestAppRunningRecord();
2652 record->StateChangedNotifyObserver(nullptr, 0, false, false);
2653
2654 sptr<IRemoteObject> token = new MockAbilityToken();
2655 auto abilityInfo = std::make_shared<AbilityInfo>();
2656 abilityInfo->name = GetTestAbilityName();
2657 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord =
2658 std::make_shared<AbilityRunningRecord>(abilityInfo, token, 0);
2659 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord1 =
2660 std::make_shared<AbilityRunningRecord>(nullptr, token, 0);
2661 auto abilityInfo1 = std::make_shared<AbilityInfo>();
2662 abilityInfo1->name = GetTestAbilityName();
2663 abilityInfo1->type = AbilityType::EXTENSION;
2664 std::shared_ptr<AbilityRunningRecord> abilityRunningRecord2 =
2665 std::make_shared<AbilityRunningRecord>(abilityInfo1, token, 0);
2666 record->StateChangedNotifyObserver(abilityRunningRecord, 0, false, false);
2667 record->StateChangedNotifyObserver(abilityRunningRecord1, 0, true, false);
2668 record->StateChangedNotifyObserver(abilityRunningRecord, 0, true, false);
2669 record->StateChangedNotifyObserver(abilityRunningRecord2, 0, true, false);
2670
2671 auto abilityInfo3 = std::make_shared<AbilityInfo>();
2672 abilityInfo3->name = GetTestAbilityName();
2673 sptr<IRemoteObject> token3 = new (std::nothrow) MockAbilityToken();
2674 std::shared_ptr<AbilityRunningRecord> abilityRecord3;
2675 auto record3 = GetTestAppRunningRecord();
2676 record3->AbilityForeground(abilityRecord3);
2677
2678 abilityRecord3 = std::make_shared<AbilityRunningRecord>(abilityInfo3, token3, 0);
2679 record3->AbilityForeground(abilityRecord3);
2680
2681 abilityRecord3->SetState(AbilityState::ABILITY_STATE_READY);
2682 record3->AbilityForeground(abilityRecord3);
2683
2684 abilityRecord3->SetState(AbilityState::ABILITY_STATE_BACKGROUND);
2685 record3->AbilityForeground(abilityRecord3);
2686
2687 abilityRecord3->SetState(AbilityState::ABILITY_STATE_FOREGROUND);
2688 record3->AbilityForeground(abilityRecord3);
2689
2690 record3->SetState(ApplicationState::APP_STATE_TERMINATED);
2691 record3->AbilityForeground(abilityRecord3);
2692
2693 auto abilityInfo4 = std::make_shared<AbilityInfo>();
2694 abilityInfo4->name = GetTestAbilityName();
2695 sptr<IRemoteObject> token4 = new (std::nothrow) MockAbilityToken();
2696 std::shared_ptr<AbilityRunningRecord> abilityRecord4;
2697 auto record4 = GetTestAppRunningRecord();
2698 record4->AbilityBackground(abilityRecord4);
2699
2700 abilityRecord4 = std::make_shared<AbilityRunningRecord>(abilityInfo4, token4, 0);
2701 record4->AbilityBackground(abilityRecord4);
2702
2703 abilityRecord4->SetState(AbilityState::ABILITY_STATE_BACKGROUND);
2704 record4->AbilityBackground(abilityRecord4);
2705
2706 auto abilityInfo5 = std::make_shared<AbilityInfo>();
2707 abilityInfo5->name = GetTestAbilityName();
2708 sptr<IRemoteObject> token5 = new (std::nothrow) MockAbilityToken();
2709 std::shared_ptr<AbilityRunningRecord> abilityRecord5;
2710 auto record5 = GetTestAppRunningRecord();
2711 record5->AbilityFocused(abilityRecord5);
2712
2713 abilityRecord5 = std::make_shared<AbilityRunningRecord>(abilityInfo5, token5, 0);
2714 record5->AbilityFocused(abilityRecord5);
2715
2716 auto abilityInfo6 = std::make_shared<AbilityInfo>();
2717 abilityInfo6->name = GetTestAbilityName();
2718 sptr<IRemoteObject> token6 = new (std::nothrow) MockAbilityToken();
2719 std::shared_ptr<AbilityRunningRecord> abilityRecord6;
2720 auto record6 = GetTestAppRunningRecord();
2721 record6->AbilityUnfocused(abilityRecord6);
2722
2723 abilityRecord6 = std::make_shared<AbilityRunningRecord>(abilityInfo6, token6, 0);
2724 record6->AbilityUnfocused(abilityRecord6);
2725
2726 std::shared_ptr<AppRunningRecord> record7 = GetTestAppRunningRecord();
2727 record7->restartResidentProcCount_ = -1;
2728 struct timespec t;
2729 t.tv_sec = 0;
2730 t.tv_nsec = 0;
2731 clock_gettime(CLOCK_MONOTONIC, &t);
2732 int64_t systemTimeMillis = static_cast<int64_t>(((t.tv_sec) * NANOSECONDS + t.tv_nsec) / MICROSECONDS);
2733 record7->restartTimeMillis_ = systemTimeMillis + 1000;
2734 EXPECT_FALSE(record7->CanRestartResidentProc());
2735
2736 record7->SetState(ApplicationState::APP_STATE_FOREGROUND);
2737 record7->SetRestartResidentProcCount(0);
2738 EXPECT_TRUE(record7->CanRestartResidentProc());
2739
2740 TAG_LOGI(AAFwkTag::TEST, "AmsAppRunningRecordTest CanRestartResidentProc_003 end");
2741 }
2742
2743 /*
2744 * Feature: AMS
2745 * Function: AppRunningRecord::IsUIExtension
2746 * SubFunction: AppRunningRecord::IsUIExtension
2747 * FunctionPoints: check params
2748 * EnvConditions: Mobile that can run ohos test framework
2749 * CaseDescription: Verify the function IsUIExtension can check the extensionType_ of AppRunningRecord.
2750 * @tc.require: AR000I7F9D
2751 */
2752
2753 HWTEST_F(AmsAppRunningRecordTest, IsUIExtension_001, TestSize.Level1)
2754 {
2755 auto abilityInfo = std::make_shared<AbilityInfo>();
2756 abilityInfo->name = GetTestAbilityName();
2757 auto appInfo = std::make_shared<ApplicationInfo>();
2758 appInfo->name = GetTestAppName();
2759
2760 BundleInfo bundleInfo;
2761 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2762 bundleInfo.jointUserId = "joint456";
2763 HapModuleInfo hapModuleInfo;
2764 hapModuleInfo.moduleName = "module789";
2765 EXPECT_TRUE(service_ != nullptr);
2766 auto record = service_->CreateAppRunningRecord(
2767 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2768
2769 EXPECT_TRUE(record != nullptr);
2770 EXPECT_EQ(AAFwk::UIExtensionUtils::IsUIExtension(record->extensionType_), false);
2771
2772 auto otherRecord = service_->GetAppRunningRecordByAppRecordId(record->GetRecordId());
2773 EXPECT_TRUE(otherRecord != nullptr);
2774
2775 EXPECT_EQ(AAFwk::UIExtensionUtils::IsUIExtension(otherRecord->extensionType_), false);
2776 }
2777
2778 /*
2779 * Feature: AMS
2780 * Function: AppRunningRecord::IsUIExtension
2781 * SubFunction: AppRunningRecord::IsUIExtension
2782 * FunctionPoints: check params
2783 * EnvConditions: Mobile that can run ohos test framework
2784 * CaseDescription: Verify the function IsUIExtension can check the extensionType_ of AppRunningRecord.
2785 * @tc.require: AR000I7F9D
2786 */
2787
2788 HWTEST_F(AmsAppRunningRecordTest, IsUIExtension_002, TestSize.Level1)
2789 {
2790 auto abilityInfo = std::make_shared<AbilityInfo>();
2791 abilityInfo->name = GetTestAbilityName();
2792 abilityInfo->extensionAbilityType = ExtensionAbilityType::UI;
2793 auto appInfo = std::make_shared<ApplicationInfo>();
2794 appInfo->name = GetTestAppName();
2795
2796 BundleInfo bundleInfo;
2797 bundleInfo.appId = "com.ohos.test.helloworld_code123";
2798 bundleInfo.jointUserId = "joint456";
2799 HapModuleInfo hapModuleInfo;
2800 hapModuleInfo.moduleName = "module789";
2801 EXPECT_TRUE(service_ != nullptr);
2802 auto record = service_->CreateAppRunningRecord(
2803 GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr, 0);
2804
2805 EXPECT_TRUE(record != nullptr);
2806 EXPECT_EQ(AAFwk::UIExtensionUtils::IsUIExtension(record->extensionType_), true);
2807
2808 auto otherRecord = service_->GetAppRunningRecordByAppRecordId(record->GetRecordId());
2809 EXPECT_TRUE(otherRecord != nullptr);
2810
2811 EXPECT_EQ(AAFwk::UIExtensionUtils::IsUIExtension(otherRecord->extensionType_), true);
2812 }
2813
2814 /*
2815 * Feature: AMS
2816 * Function: NotifyAppFault
2817 * SubFunction: NotifyAppFault
2818 * FunctionPoints: check params
2819 * EnvConditions: Mobile that can run ohos test framework
2820 * CaseDescription: Ability Unfocused
2821 */
2822 HWTEST_F(AmsAppRunningRecordTest, NotifyAppFault_001, TestSize.Level1)
2823 {
2824 TAG_LOGD(AAFwkTag::TEST, "NotifyAppFault_001 start.");
2825 auto record = GetTestAppRunningRecord();
2826 FaultData faultData;
2827 record->appLifeCycleDeal_ = nullptr;
2828 EXPECT_EQ(ERR_INVALID_VALUE, record->NotifyAppFault(faultData));
2829 TAG_LOGD(AAFwkTag::TEST, "NotifyAppFault_001 end.");
2830 }
2831
2832 /*
2833 * Feature: AMS
2834 * Function: NotifyAppFault
2835 * SubFunction: NotifyAppFault
2836 * FunctionPoints: check params
2837 * EnvConditions: Mobile that can run ohos test framework
2838 * CaseDescription: Ability Unfocused
2839 */
2840 HWTEST_F(AmsAppRunningRecordTest, NotifyAppFault_002, TestSize.Level1)
2841 {
2842 TAG_LOGD(AAFwkTag::TEST, "NotifyAppFault_002 start.");
2843 auto record = GetTestAppRunningRecord();
2844 FaultData faultData;
2845 record->appLifeCycleDeal_ = std::make_shared<AppLifeCycleDeal>();
2846 EXPECT_EQ(ERR_INVALID_VALUE, record->NotifyAppFault(faultData));
2847 TAG_LOGD(AAFwkTag::TEST, "NotifyAppFault_002 end.");
2848 }
2849
2850 /*
2851 * Feature: AMS
2852 * Function: ChangeAppGcState
2853 * SubFunction: ChangeAppGcState_001
2854 * FunctionPoints: check params
2855 * EnvConditions: Mobile that can run ohos test framework
2856 * CaseDescription: Change app Gc state
2857 */
2858 HWTEST_F(AmsAppRunningRecordTest, ChangeAppGcState_001, TestSize.Level1)
2859 {
2860 TAG_LOGD(AAFwkTag::TEST, "ChangeAppGcState_001 start.");
2861 auto record = GetTestAppRunningRecord();
2862 record->appLifeCycleDeal_ = nullptr;
2863 EXPECT_EQ(ERR_INVALID_VALUE, record->ChangeAppGcState(0));
2864 TAG_LOGD(AAFwkTag::TEST, "ChangeAppGcState_001 end.");
2865 }
2866
2867 /*
2868 * Feature: AMS
2869 * Function: ChangeAppGcState
2870 * SubFunction: ChangeAppGcState_002
2871 * FunctionPoints: check params
2872 * EnvConditions: Mobile that can run ohos test framework
2873 * CaseDescription: Change app Gc state
2874 */
2875 HWTEST_F(AmsAppRunningRecordTest, ChangeAppGcState_002, TestSize.Level1)
2876 {
2877 TAG_LOGD(AAFwkTag::TEST, "ChangeAppGcState_002 start.");
2878 auto record = GetTestAppRunningRecord();
2879 record->appLifeCycleDeal_ = std::make_shared<AppLifeCycleDeal>();
2880 EXPECT_EQ(ERR_INVALID_VALUE, record->ChangeAppGcState(0));
2881 TAG_LOGD(AAFwkTag::TEST, "ChangeAppGcState_002 end.");
2882 }
2883
2884 /**
2885 * @tc.name: IsAbilitiesBackgrounded_001
2886 * @tc.desc: verify that ModuleRunningRecord correctly judges Abilitiesbackground
2887 * @tc.type: FUNC
2888 */
2889 HWTEST_F(AmsAppRunningRecordTest, IsAbilitiesBackgrounded_001, TestSize.Level1)
2890 {
2891 GTEST_LOG_(INFO) << "IsAbilitiesBackgrounded_001 start.";
2892
2893 // 1. create AppInfo and AbilityInfo
2894 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();
2895 EXPECT_NE(appInfo, nullptr);
2896 appInfo->name = GetTestAppName();
2897 appInfo->bundleName = GetTestAppName();
2898
2899 auto abilityInfo = std::make_shared<AbilityInfo>();
2900 EXPECT_NE(abilityInfo, nullptr);
2901 abilityInfo->name = GetTestAbilityName();
2902 abilityInfo->type = AbilityType::PAGE;
2903
2904 // 2. create ModuleRunningRecord
2905 std::shared_ptr<ModuleRunningRecord> moduleRecord = std::make_shared<ModuleRunningRecord>(appInfo, nullptr);;
2906 EXPECT_NE(moduleRecord, nullptr);
2907
2908 // 3. create AbilityRecord with AbilityInfo, add the record into ModuleRunningRecord
2909 auto abilityRecord = std::make_shared<AbilityRunningRecord>(abilityInfo, GetMockToken(), 0);
2910 EXPECT_NE(abilityRecord, nullptr);
2911 moduleRecord->abilities_.emplace(GetMockToken(), abilityRecord);
2912
2913 // 4. verify function
2914 EXPECT_EQ(abilityRecord->state_, AbilityState::ABILITY_STATE_CREATE);
2915 EXPECT_FALSE(moduleRecord->IsAbilitiesBackgrounded());
2916
2917 moduleRecord->abilities_.clear();
2918 abilityRecord->state_ = AbilityState::ABILITY_STATE_BACKGROUND;
2919 moduleRecord->abilities_.emplace(GetMockToken(), abilityRecord);
2920 EXPECT_TRUE(moduleRecord->IsAbilitiesBackgrounded());
2921 GTEST_LOG_(INFO) << "IsAbilitiesBackgrounded_001 end.";
2922 }
2923
2924 /**
2925 * @tc.name: IsAbilitytiesBackground_001
2926 * @tc.desc: verify that AppRunningRecord correctly judges Abilitytiesbackground
2927 * @tc.type: FUNC
2928 */
2929 HWTEST_F(AmsAppRunningRecordTest, IsAbilitytiesBackground_001, TestSize.Level1)
2930 {
2931 GTEST_LOG_(INFO) << "IsAbilitytiesBackground_001 start.";
2932 // 1. create AppRunningRecord and verify default status
2933 auto record = GetTestAppRunningRecord();
2934 EXPECT_NE(record, nullptr);
2935 EXPECT_TRUE(record->IsAbilitytiesBackground());
2936
2937 // 2. create AbilityInfo and AppInfo, and construct ModuleRunningRecord
2938 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();
2939 EXPECT_NE(appInfo, nullptr);
2940 appInfo->name = GetTestAppName();
2941 appInfo->bundleName = GetTestAppName();
2942 auto abilityInfo = std::make_shared<AbilityInfo>();
2943 EXPECT_NE(abilityInfo, nullptr);
2944 abilityInfo->name = GetTestAbilityName();
2945 abilityInfo->type = AbilityType::PAGE;
2946 auto abilityRecord = std::make_shared<AbilityRunningRecord>(abilityInfo, GetMockToken(), 0);
2947 EXPECT_NE(abilityRecord, nullptr);
2948
2949 std::shared_ptr<ModuleRunningRecord> moduleRecord = std::make_shared<ModuleRunningRecord>(appInfo, nullptr);;
2950 EXPECT_NE(moduleRecord, nullptr);
2951 moduleRecord->abilities_.emplace(GetMockToken(), abilityRecord);
2952 std::vector<std::shared_ptr<ModuleRunningRecord>> moduleRecords;
2953 moduleRecords.push_back(moduleRecord);
2954 const std::string bundleName = "bundleName";
2955
2956 // 3. add ModuleRunningRecord into hapModules_ of AppRunningRecord
2957 record->hapModules_.emplace(bundleName, moduleRecords);
2958
2959 // 4. verify function
2960 EXPECT_FALSE(record->IsAbilitytiesBackground());
2961
2962 moduleRecord->abilities_.clear();
2963 abilityRecord->state_ = AbilityState::ABILITY_STATE_BACKGROUND;
2964 moduleRecord->abilities_.emplace(GetMockToken(), abilityRecord);
2965 moduleRecords.clear();
2966 moduleRecords.push_back(moduleRecord);
2967 record->hapModules_.emplace(bundleName, moduleRecords);
2968 EXPECT_TRUE(record->IsAbilitytiesBackground());
2969 GTEST_LOG_(INFO) << "IsAbilitytiesBackground_001 end.";
2970 }
2971
2972 /**
2973 * @tc.name: AppRunningRecord_SetState_001
2974 * @tc.desc: verify that setState works.
2975 * @tc.type: FUNC
2976 */
2977 HWTEST_F(AmsAppRunningRecordTest, SetState_001, TestSize.Level1)
2978 {
2979 std::shared_ptr<ApplicationInfo> appInfo;
2980 std::shared_ptr<AppRunningRecord> appRunningRecord =
2981 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
2982 appRunningRecord->SetState(ApplicationState::APP_STATE_SET_COLD_START);
2983 EXPECT_NE(appRunningRecord->GetState(), ApplicationState::APP_STATE_CACHED);
2984 }
2985
2986 /**
2987 * @tc.name: AppRunningRecord_UpdateApplicationInfoInstalled_001
2988 * @tc.desc: verify that UpdateApplicationInfoInstalled works.
2989 * @tc.type: FUNC
2990 */
2991 HWTEST_F(AmsAppRunningRecordTest, UpdateApplicationInfoInstalled_001, TestSize.Level1)
2992 {
2993 std::shared_ptr<ApplicationInfo> appInfo;
2994 std::shared_ptr<AppRunningRecord> appRunningRecord =
2995 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
2996 appRunningRecord->UpdateApplicationInfoInstalled(*appInfo);
2997 EXPECT_NE(appRunningRecord, nullptr);
2998 }
2999
3000 /**
3001 * @tc.name: AppRunningRecord_AddAbilityStageBySpecifiedProcess_001
3002 * @tc.desc: verify that AddAbilityStageBySpecifiedProcess works.
3003 * @tc.type: FUNC
3004 */
3005 HWTEST_F(AmsAppRunningRecordTest, AddAbilityStageBySpecifiedProcess_001, TestSize.Level1)
3006 {
3007 std::shared_ptr<ApplicationInfo> appInfo;
3008 std::shared_ptr<AppRunningRecord> appRunningRecord =
3009 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
3010
3011 appRunningRecord->AddAbilityStageBySpecifiedProcess("com.test");
3012 EXPECT_NE(appRunningRecord, nullptr);
3013
3014 auto runner = AAFwk::TaskHandlerWrap::CreateQueueHandler("AmsAppRunningRecordTest");
3015 std::shared_ptr<AppMgrServiceInner> serviceInner = std::make_shared<AppMgrServiceInner>();
3016 std::shared_ptr<AMSEventHandler> handler = std::make_shared<AMSEventHandler>(runner, serviceInner);
3017 appRunningRecord->eventHandler_ = handler;
3018 appRunningRecord->AddAbilityStageBySpecifiedProcess("com.test");
3019 EXPECT_NE(handler, nullptr);
3020 }
3021
3022 /**
3023 * @tc.name: AppRunningRecord_SendEventForSpecifiedAbility_001
3024 * @tc.desc: verify that SendEventForSpecifiedAbility works.
3025 * @tc.type: FUNC
3026 */
3027 HWTEST_F(AmsAppRunningRecordTest, SendEventForSpecifiedAbility_001, TestSize.Level1)
3028 {
3029 std::shared_ptr<ApplicationInfo> appInfo;
3030 std::shared_ptr<AppRunningRecord> appRunningRecord =
3031 std::make_shared<AppRunningRecord>(appInfo, AppRecordId::Create(), GetTestProcessName());
3032 appRunningRecord->SendEventForSpecifiedAbility(1, 100);
3033 EXPECT_NE(appRunningRecord, nullptr);
3034 }
3035
3036 /**
3037 * @tc.name: AppRunningRecord_SendAppStartupTypeEvent_001
3038 * @tc.desc: verify that SendAppStartupTypeEvent works.
3039 * @tc.type: FUNC
3040 */
3041 HWTEST_F(AmsAppRunningRecordTest, AppRunningRecord_SendAppStartupTypeEvent_001, TestSize.Level1)
3042 {
3043 std::shared_ptr<AppRunningRecord> appRunningRecord =
3044 std::make_shared<AppRunningRecord>(nullptr, AppRecordId::Create(), GetTestProcessName());
3045 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
3046 std::shared_ptr<AbilityRunningRecord> abilityRecord =
3047 std::make_shared<AbilityRunningRecord>(abilityInfo, nullptr, 0);
3048 appRunningRecord->SendAppStartupTypeEvent(abilityRecord, AppStartType::COLD);
3049 EXPECT_NE(appRunningRecord, nullptr);
3050 }
3051 } // namespace AppExecFwk
3052 } // namespace OHOS
3053