已合并
[Fix] 避免 CloseSubProcList 执行零计数批次 #4458
[Fix] 避免 CloseSubProcList 执行零计数批次 #4458
已合并
KaranocaVe创建于 13 天前
2 个文件变更+27-4
@@ -317,11 +317,13 @@ TSD_StatusT SubProcessController::CloseSubProcList(const ProcStatusParam* closeL
317 TSD_RUN_INFO("ExecuteClosePidList success cnt:%u", cnt);317 TSD_RUN_INFO("ExecuteClosePidList success cnt:%u", cnt);
318 }318 }
319 319 
320- if (ExecuteClosePidList(closeList, loopCnt * CLOSE_PID_PER_LOOP, reserveCnt) != TSD_OK) {320+ if (reserveCnt > 0U) {
321- TSD_ERROR("ExecuteClosePidList failed reserveCnt:%u", reserveCnt);321+ if (ExecuteClosePidList(closeList, loopCnt * CLOSE_PID_PER_LOOP, reserveCnt) != TSD_OK) {
322- return TSD_INTERNAL_ERROR;322+ TSD_ERROR("ExecuteClosePidList failed reserveCnt:%u", reserveCnt);
323+ return TSD_INTERNAL_ERROR;
324+ }
325+ TSD_RUN_INFO("ExecuteClosePidList success reserveCnt:%u", reserveCnt);
323 }326 }
324- TSD_RUN_INFO("ExecuteClosePidList success reserveCnt:%u", reserveCnt);
325 return TSD_OK;327 return TSD_OK;
326}328}
327 329 
@@ -242,6 +242,27 @@ TEST_F(SubProcessControllerTest, CloseSubProcList_FiftyOneEntries_Sends50Plus1Ba
242 EXPECT_EQ(comm->sentMessages_[1].sub_proc_type_list(0), TSD_SUB_PROC_HCCP);242 EXPECT_EQ(comm->sentMessages_[1].sub_proc_type_list(0), TSD_SUB_PROC_HCCP);
243}243}
244 244 
245+TEST_F(SubProcessControllerTest, CloseSubProcList_FiftyEntries_SendsSingleBatch)
246+{
247+ MOCKER_CPP(&TsdProcessController::WaitRsp).stubs().will(returnValue(tsd::TSD_OK));
248+ ProcessModeManager processModeManager(deviceId, 0);
249+ auto comm = InjectStubComm(processModeManager, deviceId);
250+ processModeManager.capabilityMgr_.tsdSupportLevel_ = 4U;
251+ std::array<ProcStatusParam, 50U> closeList{};
252+ for (size_t i = 0; i < closeList.size(); ++i) {
253+ closeList[i].pid = static_cast<pid_t>(3000U + i);
254+ closeList[i].procType = TSD_SUB_PROC_HCCP;
255+ }
256+ 
257+ EXPECT_EQ(
258+ processModeManager.GetSubProcessController().CloseSubProcList(closeList.data(), closeList.size()), TSD_OK);
259+ ASSERT_EQ(comm->sentMessages_.size(), 1U);
260+ EXPECT_EQ(comm->sentMessages_[0].type(), HDCMessage::TSD_CLOSE_SUB_PROC_LIST);
261+ EXPECT_EQ(comm->sentMessages_[0].close_sub_list_size(), 50);
262+ EXPECT_EQ(comm->sentMessages_[0].close_sub_list(0).sub_proc_pid(), 3000U);
263+ EXPECT_EQ(comm->sentMessages_[0].close_sub_list(49).sub_proc_pid(), 3049U);
264+}
265+ 
245TEST_F(SubProcessControllerTest, CloseSubProcList_FiftyOneEntries_Second50Plus1BatchFails)266TEST_F(SubProcessControllerTest, CloseSubProcList_FiftyOneEntries_Second50Plus1BatchFails)
246{267{
247 MOCKER_CPP(&TsdProcessController::WaitRsp).stubs().will(returnValue(tsd::TSD_OK));268 MOCKER_CPP(&TsdProcessController::WaitRsp).stubs().will(returnValue(tsd::TSD_OK));