Просмотр исходного кода

1、记录Python进程ID到STCase::__dwPythonPID中;
2、预留处理:读取脚本_result.xml文件时,再加上PID。[文件名]_[PID]_result.xml
主要是为了防止同名脚本xml被反复覆盖,导致无法追踪xml文件内容。
暂未开启该功能,待脚本完成后即可开启。

scbc.sat2 5 лет назад
Родитель
Сommit
efe3b53817

+ 8 - 0
SATService/SATService/PythonExecutor.cpp

@@ -198,6 +198,10 @@ int CPythonExecutor::RunScriptProcess()
 		return -3;
 	}
 
+	// 记录进程ID;
+	if ( m_pCaseObj )
+		m_pCaseObj->__dwPythonPID = m_pi.dwProcessId;
+
 	GLOBAL::WriteTextLog("Python进程ID=%ld", m_pi.dwProcessId);
 	// 等待进程完成退出.
 	WaitForSingleObject(m_pi.hProcess, INFINITE);
@@ -341,6 +345,10 @@ int CPythonExecutor::ServiceRunScriptProcess()
 	if ( !bResult )
 		return -1;
 
+	// 记录进程ID;
+	if ( m_pCaseObj )
+		m_pCaseObj->__dwPythonPID = m_pi.dwProcessId;
+
 	GLOBAL::WriteTextLog("Python进程ID=%ld", m_pi.dwProcessId);
 	// 等待进程完成退出.
 	WaitForSingleObject(m_pi.hProcess, INFINITE);

+ 4 - 2
SATService/SATService/PythonExecutor.h

@@ -72,11 +72,13 @@ public:
 	// 结束所有线程;
 	void EndThread();
 	// 设置用例对象;
-	void SetCaseObje(SATHTTP::STCase *pObj){ m_pCaseObj = pObj;}
+	inline void SetCaseObje(SATHTTP::STCase *pObj){ m_pCaseObj = pObj;}
 	// 结束子进程;
 	BOOL EndSubprocess();
 	// 获取活动的CPU时间;
-	ULONGLONG GetActiveTickCount() const { return m_ulStartTickCount;}
+	inline ULONGLONG GetActiveTickCount() const { return m_ulStartTickCount;}
+	// 获取Python子进程ID;//0和-1为无效进程;
+	inline DWORD GetPythonProcessId(){ return m_pi.dwProcessId;};
 };
 
 #endif // __SCRIPT_EXECUTOR__

+ 10 - 1
SATService/SATService/SATExecutor.cpp

@@ -608,7 +608,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strTaskId = pTask->Job.strTaskId;
 	stJobProcessReq.strAnalysis = "";
 	// 设备名称:即DeviceSerial;
-	stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;	// 命名其不范围,一会deviceid是deviceserial,一会是id;
+	stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;	// 命名其不范围,一会deviceid是deviceserial,一会是id;
 	// 固定为:TOTAL
 	stJobProcessReq.strInfoType = "TOTAL";
 	// 如果是Android设备,需要通过adb获取;
@@ -634,6 +634,15 @@ bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	std::string xmlpath = GLOBAL::g_stSATConfig.szCaseResultDir;
 	xmlpath.append("detail\\");
 	xmlpath.append(pCase->_strFileName);
+#if 0 
+	// 文件名加下PID做为后缀;
+	if ( pCase->__dwPythonPID > 0)
+	{
+		TCHAR szPID[16] = "_";
+		_ltoa_s(pCase->__dwPythonPID, &szPID[1], 15, 10);
+		xmlpath.append(szPID);
+	}
+#endif
 	xmlpath.append("_result.xml");
 	std::vector<STCaseItem> vtCaseItem;
 	GetCaseXMLResult(xmlpath, vtCaseItem);