diff --git a/test/unittest/app_mgr_service_inner_tdd_test/app_mgr_service_inner_tdd_test.cpp b/test/unittest/app_mgr_service_inner_tdd_test/app_mgr_service_inner_tdd_test.cpp index 5b7c3d368d0d2b7c790df59d68b1d7c320cbf69b..c48c6706b1910a6aab95fd601f038514156af2e5 100644 --- a/test/unittest/app_mgr_service_inner_tdd_test/app_mgr_service_inner_tdd_test.cpp +++ b/test/unittest/app_mgr_service_inner_tdd_test/app_mgr_service_inner_tdd_test.cpp @@ -884,42 +884,6 @@ HWTEST_F(AppMgrServiceInnerTest, GenerateRenderUid_001, TestSize.Level1) TAG_LOGI(AAFwkTag::TEST, "GenerateRenderUid_001 end"); } -/** - * @tc.name: StartRenderProcessImpl_001 - * @tc.desc: start render process. - * @tc.type: FUNC - * @tc.Function: StartRenderProcessImpl - * @tc.SubFunction: NA - * @tc.EnvConditions: NA - */ -HWTEST_F(AppMgrServiceInnerTest, StartRenderProcessImpl_001, TestSize.Level2) -{ - TAG_LOGI(AAFwkTag::TEST, "StartRenderProcessImpl_001 start"); - auto appMgrServiceInner = std::make_shared(); - appMgrServiceInner->Init(); - EXPECT_NE(appMgrServiceInner, nullptr); - BundleInfo bundleInfo; - std::string appName = "test_appName"; - std::string processName = "test_processName"; - std::string bundleName = "test_bundleName"; - sptr token = new MockAbilityToken(); - std::shared_ptr appRecord = - appMgrServiceInner->appRunningManager_->CreateAppRunningRecord(applicationInfo_, processName, bundleInfo, ""); - EXPECT_NE(appRecord, nullptr); - pid_t hostPid = 1; - std::string renderParam = "test_render_param"; - int32_t ipcFd = 1; - int32_t sharedFd = 1; - int32_t crashFd = 1; - std::shared_ptr renderRecord = RenderRecord::CreateRenderRecord(hostPid, renderParam, - FdGuard(ipcFd), FdGuard(sharedFd), FdGuard(crashFd), appRecord); - EXPECT_NE(renderRecord, nullptr); - pid_t renderPid = 1; - appMgrServiceInner->StartRenderProcessImpl(nullptr, nullptr, renderPid); - appMgrServiceInner->StartRenderProcessImpl(renderRecord, appRecord, renderPid); - TAG_LOGI(AAFwkTag::TEST, "StartRenderProcessImpl_001 end"); -} - /** * @tc.name: NotifyAppFault_001 * @tc.desc: Verify that the NotifyAppFault interface calls normally @@ -1243,5 +1207,201 @@ HWTEST_F(AppMgrServiceInnerTest, GetKernelPermissions_001, TestSize.Level1) EXPECT_EQ(permissionsMap.size(), 0); TAG_LOGI(AAFwkTag::TEST, "GetKernelPermissions_001 end"); } + +/** + * @tc.name: KillSubProcessBypidInner + * @tc.desc: Kill subProcess inner + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypidInner + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypidInner_001, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypidInner_001 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 0; + std::string reason = "test"; + AAFwk::EventInfo eventInfo; + auto ret = appMgrServiceInner->KillSubProcessBypidInner(pid, reason, eventInfo); + EXPECT_EQ(ret, AAFwk::ERR_KILL_PROCESS_NOT_EXIST); + + pid = 65536; + ret = appMgrServiceInner->KillSubProcessBypidInner(pid, reason, eventInfo); + EXPECT_NE(ret, 0); + + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypidInner_001 end"); +} + +/** + * @tc.name: KillSubProcessBypidInner + * @tc.desc: Kill subProcess inner + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypidInner + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypidInner_002, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypidInner_002 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 0; + std::string reason = "test"; + AAFwk::EventInfo eventInfo; + + pid = fork(); + if (pid == -1) { + TAG_LOGI(AAFwkTag::TEST, "fork process failed"); + } else if (pid == 0) { + TAG_LOGI(AAFwkTag::TEST, "fork process success"); + sleep(3); + exit(0); + } + auto ret = appMgrServiceInner->KillSubProcessBypidInner(pid, reason, eventInfo); + EXPECT_EQ(ret, AAFwk::ERR_KILL_PROCESS_NOT_EXIST); + + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypidInner_002 end"); +} + +/** + * @tc.name: KillSubProcessBypid + * @tc.desc: Kill subProcess + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypid + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypid_001, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_001 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 111; + std::string reason = "test"; + auto ret = 0; + appMgrServiceInner->appRunningManager_ = nullptr; + ret = appMgrServiceInner->KillSubProcessBypid(pid, reason); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_001 end"); +} + +/** + * @tc.name: KillSubProcessBypid + * @tc.desc: Kill subProcess + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypid + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypid_002, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_002 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 1; + std::string reason = "test"; + auto ret = 0; + auto appRunningManager = std::make_shared(); + + int32_t recordId = 1; + std::shared_ptr appInfo = std::make_shared(); + std::string processName = "testProcess"; + auto appRecord = std::make_shared(appInfo, recordId, processName); + + std::map> renderRecordMap; + int32_t uid = 1; + std::shared_ptr renderRecord = std::make_shared( + pid, "param", FdGuard(0), FdGuard(0), FdGuard(0), appRecord); + renderRecord->SetPid(pid); + renderRecordMap.emplace(uid, renderRecord); + appRecord->renderRecordMap_ = renderRecordMap; + + appRunningManager->appRunningRecordMap_.emplace(recordId, appRecord); + + appMgrServiceInner->appRunningManager_ = appRunningManager; + appMgrServiceInner->KillSubProcessBypid(pid, reason); + + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_002 end"); +} + +/** + * @tc.name: KillSubProcessBypid + * @tc.desc: Kill subProcess + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypid + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypid_003, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_003 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 1; + std::string reason = "test"; + auto ret = 0; + auto appRunningManager = std::make_shared(); + + int32_t recordId = 1; + std::shared_ptr appInfo = std::make_shared(); + std::string processName = "testProcess"; + auto appRecord = std::make_shared(appInfo, recordId, processName); + + std::map> childProcessRecordMap; + std::string subProcessName = "subTestProcess"; + std::shared_ptr subAppInfo = std::make_shared(); + auto subAppRecord = std::make_shared(subAppInfo, recordId, subProcessName); + ChildProcessRequest request; + auto childProcessRecord = std::make_shared(pid, request, subAppRecord); + + childProcessRecordMap.emplace(pid, childProcessRecord); + appRecord->childProcessRecordMap_ = childProcessRecordMap; + + appRunningManager->appRunningRecordMap_.emplace(recordId, appRecord); + appMgrServiceInner->appRunningManager_ = appRunningManager; + appMgrServiceInner->KillSubProcessBypid(pid, reason); + + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_003 end"); +} + +/** + * @tc.name: KillSubProcessBypid + * @tc.desc: Kill subProcess + * @tc.type: FUNC + * @tc.Function: KillSubProcessBypid + * @tc.SubFunction: NA + * @tc.EnvConditions: NA + */ +HWTEST_F(AppMgrServiceInnerTest, KillSubProcessBypid_004, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_004 start"); + auto appMgrServiceInner = std::make_shared(); + EXPECT_NE(appMgrServiceInner, nullptr); + pid_t pid = 1; + std::string reason = "test"; + auto ret = 0; + auto appRunningManager = std::make_shared(); + + int32_t recordId = 1; + std::shared_ptr appInfo = std::make_shared(); + std::string processName = "testProcess"; + auto appRecord = std::make_shared(appInfo, recordId, processName); + + // std::map> renderRecordMap; + std::map> childAppRecordMap; + std::shared_ptr subAppInfo = std::make_shared(); + std::string subProcessName = "subTestProcess"; + auto subAppRecord = std::make_shared(subAppInfo, recordId, subProcessName); + childAppRecordMap.emplace(pid, subAppRecord); + appRecord->childAppRecordMap_ = childAppRecordMap; + + appRunningManager->appRunningRecordMap_.emplace(recordId, appRecord); + appMgrServiceInner->appRunningManager_ = appRunningManager; + appMgrServiceInner->KillSubProcessBypid(pid, reason); + + TAG_LOGI(AAFwkTag::TEST, "KillSubProcessBypid_004 end"); +} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file