• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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