浏览代码

多轮任务修改记录:
1、将task信息分离出单独的结构体;
2、分离后对应函数变化;

Jeff 5 年之前
父节点
当前提交
822e340c96
共有 1 个文件被更改,包括 46 次插入46 次删除
  1. 46 46
      SATService/SATService/SATExecutor.cpp

+ 46 - 46
SATService/SATService/SATExecutor.cpp

@@ -27,11 +27,11 @@ bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
 	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 不要使用nTaskId,这个值没啥用;//不要使用Id这个值,如果任务被停止会变更;
-		if ( it->nInstanceId == task.nInstanceId ) {
+		if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId ) {
 			// 如果被中止,并变更状态为已执行;
-			if ( _tcsicmp(task.strTaskType.c_str(), "3") == 0 ) {
-				it->_nExecutionState = SATHTTP::EXECUTED;
-				it->_nExecutionResult = SATHTTP::FAIL;
+			if ( _tcsicmp(task.taskInfo.strTaskType.c_str(), "3") == 0 ) {
+				it->taskInfo._nExecutionState = SATHTTP::EXECUTED;
+				it->taskInfo._nExecutionResult = SATHTTP::FAIL;
 			}
 			found = true;
 			break;
@@ -46,7 +46,7 @@ SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
 	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 执行中的任务;
-		if ( it->_nExecutionState == SATHTTP::INEXECUTED ) {
+		if ( it->taskInfo._nExecutionState == SATHTTP::INEXECUTED ) {
 			return &(*it);
 		}
 	}
@@ -59,7 +59,7 @@ SATHTTP::STTask* CSATExecutor::GetFreeTask()
 	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 未执行的任务;
-		if ( it->_nExecutionState == SATHTTP::UNEXECUTED ) {
+		if ( it->taskInfo._nExecutionState == SATHTTP::UNEXECUTED ) {
 			return &(*it);
 		}
 	}
@@ -73,7 +73,7 @@ void CSATExecutor::DelFinishedTask()
 	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 状态为2的完成任务;
-		if ( it->_nExecutionState == SATHTTP::EXECUTED ) {
+		if ( it->taskInfo._nExecutionState == SATHTTP::EXECUTED ) {
 			// 删除所有执行器对象;
 			CPythonExecutor *pExecutor = NULL;
 			for (std::vector<SATHTTP::STCase>::iterator _case = it->Job.vtCases.begin(); _case != it->Job.vtCases.end(); _case++ ) {
@@ -158,7 +158,7 @@ SATHTTP::STCase* CSATExecutor::ExecuteFreeCaseScript(SATHTTP::STTask* pTask)
 				// 标记用例执行中;
 				pCase->_nExecutionState = SATHTTP::INEXECUTED;
 				// 标记任务为执行中;
-				pTask->_nExecutionState = SATHTTP::INEXECUTED;
+				pTask->taskInfo._nExecutionState = SATHTTP::INEXECUTED;
 				// 记录开始时间;
 				pCase->_ulStartTickCount = GetTickCount64();
 				pCase->_strStartTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
@@ -342,14 +342,14 @@ bool CSATExecutor::NotifyTaskStart(SATHTTP::STTask* pTask)
 	url.append("/ajaxInteractiveManage!setResult.action");
 
 	TCHAR szValue[36] = {0};
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stNotifyJobStartReq.strDeviceId = szValue;
 
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stNotifyJobStartReq.strExecuteId = szValue;
 
 	// _itoa_s(stTask.nInstanceId, szValue, 10); // 误导:应该使用id而不是nInstanceId
-	_itoa_s(pTask->Id, szValue, 10);
+	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stNotifyJobStartReq.strInstanceId = szValue;					
 
 	//_itoa_s(pTask->nTaskId, szValue, 10);
@@ -357,7 +357,7 @@ bool CSATExecutor::NotifyTaskStart(SATHTTP::STTask* pTask)
 
 	// 这个映像路径有何用?
 	stNotifyJobStartReq.strSignalImageUrl = GLOBAL::g_stSATConfig.szScriptDir;
-	stNotifyJobStartReq.strSignalImageUrl.append(pTask->strTaskName+"\\\\");
+	stNotifyJobStartReq.strSignalImageUrl.append(pTask->taskInfo.strTaskName+"\\\\");
 	stNotifyJobStartReq.strSignalImageUrl.append(pTask->Job.strUniqueId+"\\\\");
 	stNotifyJobStartReq.strSignalImageUrl.append(pTask->Job.strDeviceId);
 	stNotifyJobStartReq.strSignalImageUrl = CharEncoding::ASCII2UTF8(stNotifyJobStartReq.strSignalImageUrl.c_str());
@@ -386,13 +386,13 @@ bool CSATExecutor::UploadCaseImg(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase,
 	_itoa_s(pCase->_nCaseStep, szValue, 10);
 	stSaveImgReq.strCaseStep = szValue;
 	// 实例Id;
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stSaveImgReq.strDeviceId = szValue;//pTask->Job.strDeviceId;
 	// 就是Task中的ExecuteId
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stSaveImgReq.strExecuteId = szValue;
 	// 实例Id;
-	_itoa_s(pTask->nInstanceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
 	stSaveImgReq.strInstanceId = szValue;
 	stSaveImgReq.strJobRepeat = "0";
 	// 注意避坑:roundnum必须赋值0或1;
@@ -422,7 +422,7 @@ bool CSATExecutor::UploadCaseLog(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase)
 
 	stSaveLogReq.strCaseId = pCase->strId;
 	// 执行ID;
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stSaveLogReq.strExecuteId = szValue;
 	stSaveLogReq.strFileType = "caseLogFile";
 	// 任务Id;
@@ -455,7 +455,7 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 	// 如果测试项失败,标记用例和任务失败;
 	if ( !caseItem.result ) {
 		pCase->_nExecutionResult = SATHTTP::FAIL;
-		pTask->_nExecutionResult = SATHTTP::FAIL;
+		pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
 	}
 	stJobProcessReq.strCaseScene = "";
 	// 索引;
@@ -464,7 +464,7 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 	stJobProcessReq.strApkMD5 = "";
 	stJobProcessReq.strCrashTime = "";
 	// 就是Task中的ExecuteId
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stJobProcessReq.strRunnerId = szValue;
 	stJobProcessReq.strCPUInfo = "0";
 	stJobProcessReq.strRunnedActionNameList = "";
@@ -475,7 +475,7 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 	stJobProcessReq.strCaseRepeat = "0";
 	stJobProcessReq.strApplicationGroup = "";
 	// 实例Id;
-	_itoa_s(pTask->Id, szValue, 10);
+	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stJobProcessReq.strInstanceId = szValue;
 	stJobProcessReq.strCaseId = pCase->strId;
 	// 进度;
@@ -502,7 +502,7 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 		stJobProcessReq.strImgName.erase(stJobProcessReq.strImgName.size()-1);
 	stJobProcessReq.strCaseIndex = pCase->strIndex;
 	// 实例Id;
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stJobProcessReq.strDeviceId = szValue;
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
@@ -569,13 +569,13 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 				stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本执行失败");
 			stJobProcessReq.strResultState = "1";
 			// 同时标记任务失败;
-			pTask->_nExecutionResult = SATHTTP::FAIL;
+			pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
 		}
 	}
 	else {
 		stJobProcessReq.strResultState = "1";	// 脚本执行未完成,认为fail;
 		// 同时标记任务失败;
-		pTask->_nExecutionResult = SATHTTP::FAIL;
+		pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
 		stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本未执行");
 	}
 	
@@ -586,7 +586,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strApkMD5 = "";
 	stJobProcessReq.strCrashTime = "";
 	// 就是Task中的ExecuteId
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stJobProcessReq.strRunnerId = szValue;
 	stJobProcessReq.strCPUInfo = "0";
 	stJobProcessReq.strRunnedActionNameList = strRunnedActionNameList;
@@ -597,7 +597,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strCaseRepeat = "";
 	stJobProcessReq.strApplicationGroup = "";
 	// 实例Id;注意避坑;
-	_itoa_s(pTask->Id, szValue, 10);
+	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stJobProcessReq.strInstanceId = szValue;
 	stJobProcessReq.strCaseId = pCase->strId;
 	// 进度(###需要修改此处###);
@@ -614,7 +614,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strImgName = "";
 	stJobProcessReq.strCaseIndex = pCase->strIndex;
 	// 实例Id;
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stJobProcessReq.strDeviceId = szValue;
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
@@ -673,7 +673,7 @@ bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 		if ( pCase->_nExecutionResult == SATHTTP::SUCCESS )
 			pCase->_nExecutionResult = SATHTTP::ABNORMAL;
 		// 同时标记任务失败;
-		pTask->_nExecutionResult = SATHTTP::FAIL;
+		pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
 		GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("测试项空,用例名:%s"), pCase->strCaseName.c_str());
 	}
 	
@@ -721,7 +721,7 @@ bool CSATExecutor::UploadTaskLog(SATHTTP::STTask* pTask)
 
 	stSaveLogReq.strCaseId = "";
 	// 执行ID;
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stSaveLogReq.strExecuteId = szValue;
 	stSaveLogReq.strFileType = "taskLogFile";
 	// 任务Id;
@@ -758,7 +758,7 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 	stJobProcessReq.strApkMD5 = "";
 	stJobProcessReq.strCrashTime = "";
 	// 就是Task中的ExecuteId
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stJobProcessReq.strRunnerId = szValue;
 	stJobProcessReq.strCPUInfo = "0";
 	stJobProcessReq.strRunnedActionNameList = "";
@@ -769,7 +769,7 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 	stJobProcessReq.strCaseRepeat = "";
 	stJobProcessReq.strApplicationGroup = "";
 	// 实例Id;注意避坑;
-	_itoa_s(pTask->Id, szValue, 10);
+	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stJobProcessReq.strInstanceId = szValue;
 	stJobProcessReq.strCaseId = "";
 	// 进度(###需要修改此处###);
@@ -778,7 +778,7 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 	stJobProcessReq.strReusltMessage = CharEncoding::ASCII2UTF8("任务开始");
 	stJobProcessReq.strJobRepeat = "";
 	stJobProcessReq.strScreenShot = "";
-	stJobProcessReq.strStartTime = pTask->strStartTime;
+	stJobProcessReq.strStartTime = pTask->taskInfo.strStartTime;
 	stJobProcessReq.strCrashNumber = "";
 	stJobProcessReq.strCaseName = "";
 	stJobProcessReq.strFailedReason = "";
@@ -786,7 +786,7 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 	stJobProcessReq.strImgName = "";
 	stJobProcessReq.strCaseIndex = "";
 	// 实例Id;
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stJobProcessReq.strDeviceId = szValue;
 	stJobProcessReq.strSceneIndex = "";
 	// 实例Id;
@@ -824,8 +824,8 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	SATHTTP::STJobProcessResp stJobProcessResp;
 
 	// 需要处理(只要有用例失败,任务就失败)
-	if ( pTask->_nExecutionState == SATHTTP::EXECUTED ) {
-		if ( pTask->_nExecutionResult == SATHTTP::SUCCESS )
+	if ( pTask->taskInfo._nExecutionState == SATHTTP::EXECUTED ) {
+		if ( pTask->taskInfo._nExecutionResult == SATHTTP::SUCCESS )
 			stJobProcessReq.strResultState = "0";	// 脚本成功;
 		else
 			stJobProcessReq.strResultState = "1";	// 脚本失败;
@@ -838,7 +838,7 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	stJobProcessReq.strApkMD5 = "";
 	stJobProcessReq.strCrashTime = "";
 	// 就是Task中的ExecuteId
-	_itoa_s(pTask->nExecuteId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stJobProcessReq.strRunnerId = szValue;
 	stJobProcessReq.strCPUInfo = "0";
 	stJobProcessReq.strRunnedActionNameList = "";
@@ -849,7 +849,7 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	stJobProcessReq.strCaseRepeat = "0";
 	stJobProcessReq.strApplicationGroup = "";
 	// 实例Id;注意避坑;
-	_itoa_s(pTask->Id, szValue, 10);
+	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stJobProcessReq.strInstanceId = szValue;
 	stJobProcessReq.strCaseId = "";
 	// 进度(###需要修改此处###);
@@ -867,7 +867,7 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	stJobProcessReq.strImgName = "";
 	stJobProcessReq.strCaseIndex = "";
 	// 实例Id;
-	_itoa_s(pTask->nDeviceId, szValue, 10);
+	_itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
 	stJobProcessReq.strDeviceId = szValue;
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
@@ -984,21 +984,21 @@ int CSATExecutor::AttachTaskInfo2Buffer(SATPROTO::TaskInfo (&pbuff)[SATPROTO::MA
 			// 任务状态;
 			//pbuff[count].nStatus = it->_nExecutionState;
 			// 任务id;
-			pbuff[count].nTaskId = it->Id;
+			pbuff[count].nTaskId = it->taskInfo.Id;
 			// 任务编号;
 			memcpy_s(pbuff[count].szTaskNo, SATPROTO::MAX_NAME, it->Job.strUniqueId.c_str(), it->Job.strUniqueId.size());
 			// 任务名称;
-			memcpy_s(pbuff[count].szTaskName, SATPROTO::MAX_NAME, it->strTaskName.c_str(), it->strTaskName.size());
+			memcpy_s(pbuff[count].szTaskName, SATPROTO::MAX_NAME, it->taskInfo.strTaskName.c_str(), it->taskInfo.strTaskName.size());
 			// 任务状态;
-			if ( it->_nExecutionState == SATHTTP::UNEXECUTED )
+			if ( it->taskInfo._nExecutionState == SATHTTP::UNEXECUTED )
 			{
 				_stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("未执行"));
 			}
-			else if (it->_nExecutionState == SATHTTP::INEXECUTED)
+			else if (it->taskInfo._nExecutionState == SATHTTP::INEXECUTED)
 			{
 				_stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("执行中"));
 			}
-			else if (it->_nExecutionState == SATHTTP::EXECUTED)
+			else if (it->taskInfo._nExecutionState == SATHTTP::EXECUTED)
 			{
 				_stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("已执行"));
 			}
@@ -1246,7 +1246,7 @@ DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
 		// 是否有任务在执行;
 		SATHTTP::STTask *pTask = that->IsThereATaskInProcess();
 		if ( pTask ) {// 有任务在执行中;
-			if ( pTask->_bConcurrent ) {// 并发;
+			if ( pTask->taskInfo._bConcurrent ) {// 并发;
 
 			}
 			else {// 串行;
@@ -1261,7 +1261,7 @@ DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
 							// 如果脚本异常,标记任务失败;
 							if ( pCase->_nExecutionResult == SATHTTP::ABNORMAL ) {
 								// 设置任务执行结果失败;
-								pTask->_nExecutionResult = SATHTTP::FAIL;
+								pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
 								GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "用例脚本异常退出(%s)", pCase->strCaseName.c_str());
 							}
 							// 上报服务器,完成脚本用例,并上传用例结果;
@@ -1289,7 +1289,7 @@ DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
 					pCase = that->ExecuteFreeCaseScript(pTask);
 					if ( NULL == pCase ) {
 						// 没有空闲的用例可执行,说明所有用例已执行完成;
-						pTask->_nExecutionState = SATHTTP::EXECUTED;
+						pTask->taskInfo._nExecutionState = SATHTTP::EXECUTED;
 						// 上报任务完成;
 						that->ReportTaskFinish(pTask);
 						// 上报任务结果;
@@ -1304,7 +1304,7 @@ DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
 			pTask = that->GetFreeTask();
 			if ( pTask ) {
 				// 是否支持并发;
-				if ( pTask->_bConcurrent ) {
+				if ( pTask->taskInfo._bConcurrent ) {
 					// 暂时全部一起并发;
 					std::vector<SATHTTP::STCase>::iterator _case = pTask->Job.vtCases.begin();
 					for ( ; _case != pTask->Job.vtCases.end(); _case++) {
@@ -1321,7 +1321,7 @@ DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
 					}
 
 					// 标记任务为执行中;
-					pTask->_nExecutionState = SATHTTP::INEXECUTED;
+					pTask->taskInfo._nExecutionState = SATHTTP::INEXECUTED;
 				}
 				else {
 					GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("\n<===============================================>\n# 1、开始执行任务:%s, 用例数量:%ld#\n<===============================================>\n"),