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

1、RTEST和DEBUG同级调试
2、RTest在《链接器》->优化->引用:默认值,不能使用使用消除未引用的数据,否则程序会崩。

scbc 5 лет назад
Родитель
Сommit
4e2a1a9e99

+ 1 - 1
SATService/SATService/Global.cpp

@@ -204,7 +204,7 @@ namespace GLOBAL
 			return -1;
 		}
 
-#ifdef _DEBUG
+#if defined _DEBUG || defined RTEST
 		GetPrivateProfileString(_T("SATService"), _T("SomkingTime"), _T(""), g_stSATConfig.szSomkingTime, MAX_PATH, szIniPath);
 #endif
 		// »ñÈ¡·þÎñÆ÷¶ËÐÅÏ¢;

+ 1 - 1
SATService/SATService/Global.h

@@ -82,7 +82,7 @@ namespace GLOBAL
 		TCHAR szAdbRouteAddress[MAX_PATH];
 		// 异步connect超时值;
 		ULONG ulAsynConnectTimeout;
-#ifdef _DEBUG
+#if defined _DEBUG || defined RTEST
 		TCHAR szSomkingTime[MAX_PATH];
 #endif
 		// 这个可以忽略不要;

+ 1 - 1
SATService/SATService/PythonExecutor.cpp

@@ -48,7 +48,7 @@ DWORD CPythonExecutor::_WorkerThread(LPVOID lpParam)
 {
 	CPythonExecutor* that = (CPythonExecutor*)lpParam;
 
-#ifdef _DEBUG
+#if defined _DEBUG || defined RTEST
 	that->RunScriptProcess();
 #else
 	that->ServiceRunScriptProcess();

+ 56 - 30
SATService/SATService/SATExecutor.cpp

@@ -56,8 +56,10 @@ CSATExecutor::~CSATExecutor(void)
 bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
 {
 	// 若是冒烟任务;
-	task.taskInfo.strTaskType = "冒烟任务";
-	if ( task.taskInfo.strTaskType == "冒烟任务" ) {
+#if defined _DEBUG || defined RTEST
+	task.taskInfo.strInstanceType = "4";
+#endif
+	if ( task.taskInfo.strInstanceType == "4" ) {
 		AutoThreadSection ats(&m_csSomkingTask);
 		// 如果任务存在,删除原来的;
 		std::vector<SATHTTP::STTask>::iterator it = m_vtSmokingTask.begin();
@@ -73,8 +75,8 @@ bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
 		if ( _tcsicmp(task.taskInfo.strTaskType.c_str(), "3") != 0 ) {
 			bool bExsit = false;
 			AutoThreadSection ats(&m_csTask);
-			for ( std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
-				if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId )
+			for ( std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
+				if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId && it->taskInfo._nExecutionState != SATHTTP::EXECUTED )
 					bExsit = true;
 			}
 
@@ -89,7 +91,7 @@ bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
 	// 实时任务;
 	bool found = false;
 	AutoThreadSection ats(&m_csTask);
-	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
+	std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 不要使用nTaskId,这个值没啥用;//不要使用Id这个值,如果任务被停止会变更;
 		if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId ) {
@@ -144,7 +146,7 @@ void CSATExecutor::DownloadTask(SATHTTP::STTask &task)
 SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
 {
 	AutoThreadSection ats(&m_csTask);
-	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
+	std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 执行中的任务;
 		if ( it->taskInfo._nExecutionState == SATHTTP::INEXECUTED ) {
@@ -158,7 +160,7 @@ SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
 SATHTTP::STTask* CSATExecutor::GetFreeTask()
 {
 	AutoThreadSection ats(&m_csTask);
-	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
+	std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 未执行的任务;
 		if ( it->taskInfo._nExecutionState == SATHTTP::UNEXECUTED ) {
@@ -172,7 +174,7 @@ SATHTTP::STTask* CSATExecutor::GetFreeTask()
 void CSATExecutor::DelFinishedTask()
 {
 	AutoThreadSection ats(&m_csTask);
-	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
+	std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 状态为2的完成任务;
 		if ( it->taskInfo._nExecutionState == SATHTTP::EXECUTED ) {
@@ -527,12 +529,19 @@ bool CSATExecutor::NotifyTaskStart(SATHTTP::STTask* pTask)
 	_itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
 	stNotifyJobStartReq.strExecuteId = szValue;
 
-	// _itoa_s(stTask.nInstanceId, szValue, 10); // 误导:应该使用id而不是nInstanceId
+	// _itoa_s(stTask.taskInfo.nInstanceId, szValue, 10); // 误导:应该使用id而不是nInstanceId
 	_itoa_s(pTask->taskInfo.Id, szValue, 10);
 	stNotifyJobStartReq.strInstanceId = szValue;					
 
 	//_itoa_s(pTask->nTaskId, szValue, 10);
-	stNotifyJobStartReq.strTaskId = pTask->Job.strTaskId;
+	if ( pTask->taskInfo.strInstanceType == "4" ) {
+		 _itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
+		stNotifyJobStartReq.strTaskId = szValue;
+	}
+	else
+		stNotifyJobStartReq.strTaskId = pTask->Job.strTaskId;
+
+	stNotifyJobStartReq.strTaskType = pTask->taskInfo.strInstanceType;
 
 	// 这个映像路径有何用?
 	stNotifyJobStartReq.strSignalImageUrl = GLOBAL::g_stSATConfig.szScriptDir;
@@ -688,7 +697,13 @@ bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
 	//_itoa_s(pTask->nTaskId, szValue, 10);
-	stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	if ( pTask->taskInfo.strInstanceType == "4") {
+		_itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
+		stJobProcessReq.strTaskId = szValue;
+	}
+	else
+		stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	stJobProcessReq.strInstanceType = pTask->taskInfo.strInstanceType;
 	//stJobProcessReq.strAnalysis = CharEncoding::UTF82ASCII(caseItem.data.c_str());
 	stJobProcessReq.strAnalysis = caseItem.data.c_str(); 
 	// 设备名称:即DeviceSerial;
@@ -796,7 +811,13 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
 	//_itoa_s(pTask->nTaskId, szValue, 10);
-	stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	if ( pTask->taskInfo.strInstanceType == "4") {
+		_itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
+		stJobProcessReq.strTaskId = szValue;
+	}
+	else
+		stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	stJobProcessReq.strInstanceType = pTask->taskInfo.strInstanceType;
 	stJobProcessReq.strAnalysis = "";
 	// 设备名称:即DeviceSerial;
 	stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;	// 命名极其不范围,一会deviceid是deviceserial,一会是id;
@@ -850,12 +871,6 @@ bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 		GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("测试项空,用例名:%s"), pCase->strCaseName.c_str());
 	}
 	
-	int nIndex = 1;
-	TCHAR szValue[MAX_PATH] = {0};
-	std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
-	url.append("/ajaxInteractiveManage!setResultList.action");
-	SATHTTP::STJobProcessReq stJobProcessReq;
-	SATHTTP::STJobProcessResp stJobProcessResp;
 	// 遍历所有用例测试项;
 	std::string strRunnedActionNameList;
 	std::vector<STCaseItem>::iterator it = vtCaseItem.begin();
@@ -964,7 +979,13 @@ bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
 	stJobProcessReq.strSceneIndex = "";
 	// 实例Id;
 	//_itoa_s(pTask->nTaskId, szValue, 10);
-	stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	if ( pTask->taskInfo.strInstanceType == "4") {
+		_itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
+		stJobProcessReq.strTaskId = szValue;
+	}
+	else
+		stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	stJobProcessReq.strInstanceType = pTask->taskInfo.strInstanceType;
 	stJobProcessReq.strAnalysis = "";
 	// 设备名称:即DeviceSerial;
 	stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;	// 命名及其不范围,一会deviceid是deviceserial,一会是id;
@@ -1045,7 +1066,13 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 	stJobProcessReq.strSceneIndex = "0";
 	// 实例Id;
 	//_itoa_s(pTask->nTaskId, szValue, 10);
-	stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	if ( pTask->taskInfo.strInstanceType == "4") {
+		_itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
+		stJobProcessReq.strTaskId = szValue;
+	}
+	else
+		stJobProcessReq.strTaskId = pTask->Job.strTaskId;
+	stJobProcessReq.strInstanceType = pTask->taskInfo.strInstanceType;
 	stJobProcessReq.strAnalysis = "";
 	// 设备名称:即DeviceSerial;
 	stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;	// 命名及其不范围,一会deviceid是deviceserial,一会是id;
@@ -1063,7 +1090,7 @@ bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
 		return true;
 	}
 
-	GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务结束【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
+	GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务结束【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
 
 	return false;
 }
@@ -1146,7 +1173,7 @@ int CSATExecutor::AttachTaskInfo2Buffer(SATPROTO::TaskInfo (&pbuff)[SATPROTO::MA
 	int count = 0;
 	if ( pbuff ) {
 		AutoThreadSection ats(&m_csTask);
-		std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
+		std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 		for ( ;it != m_vtTask.end(); it++ ) {
 			// 任务状态;
 			//pbuff[count].nStatus = it->_nExecutionState;
@@ -1223,12 +1250,12 @@ int CSATExecutor::AttachTaskInfo2Buffer(SATPROTO::TaskInfo (&pbuff)[SATPROTO::MA
 
 bool CSATExecutor::SmokeTaskPretreated(SATHTTP::STTask &task)
 {
-#ifdef _DEBUG
-	//pTask->taskInfo.strSomkingCycle = _T("{ \"type\" : 0, \"day\" : 0, \"week\" : 0, \"time\" : \"20:30\" } ");
+#if defined _DEBUG || defined RTEST
 	task.taskInfo.stSomkingCycle.nType = 1;
 	task.taskInfo.stSomkingCycle.nWeek = 0;
 	task.taskInfo.stSomkingCycle.nDay = 0;
 	task.taskInfo.stSomkingCycle.strTime = GLOBAL::g_stSATConfig.szSomkingTime;
+#endif
 
 	bool bTimeIsUp = false;
 	// 获取当前日历时间(1900-01-01开始的Unix时间戳);
@@ -1245,16 +1272,16 @@ bool CSATExecutor::SmokeTaskPretreated(SATHTTP::STTask &task)
 		bTimeIsUp = true;
 	}
 	else if ( task.taskInfo.stSomkingCycle.nType == 1 ) {// 每天;
-		if ( gmtm.tm_hour == hour && gmtm.tm_min >= minute )
+		if ( gmtm.tm_hour == hour && gmtm.tm_min >= minute && gmtm.tm_min <= minute + 2)
 			bTimeIsUp = true;
 	}
 	else if ( task.taskInfo.stSomkingCycle.nType == 2 ) {// 每周;
-		if ( gmtm.tm_wday == task.taskInfo.stSomkingCycle.nWeek && gmtm.tm_hour == hour && gmtm.tm_min >= minute )
+		if ( gmtm.tm_wday == task.taskInfo.stSomkingCycle.nWeek && gmtm.tm_hour == hour && gmtm.tm_min >= minute && gmtm.tm_min <= minute + 2)
 			bTimeIsUp = true;
 	}
 	else if ( task.taskInfo.stSomkingCycle.nType == 3 ) {// 每月;
 		if ( gmtm.tm_mday == task.taskInfo.stSomkingCycle.nDay && 
-			gmtm.tm_wday == task.taskInfo.stSomkingCycle.nWeek && gmtm.tm_hour == hour && gmtm.tm_min >= minute )
+			gmtm.tm_wday == task.taskInfo.stSomkingCycle.nWeek && gmtm.tm_hour == hour && gmtm.tm_min >= minute && gmtm.tm_min <= minute + 2)
 			bTimeIsUp = true;
 	}
 
@@ -1262,11 +1289,10 @@ bool CSATExecutor::SmokeTaskPretreated(SATHTTP::STTask &task)
 	if ( bTimeIsUp ) {
 		// 下载任务,并添加到队列中;
 		DownloadTask(task);
-		Sleep(60000);
+		Sleep(10000);
 	}
 
 	return bTimeIsUp;
-#endif
 }
 
 void CSATExecutor::StartWork()
@@ -1406,7 +1432,7 @@ void CSATExecutor::EndofWork()
 
 	// 如果有脚本在执行,结束脚本;
 	CPythonExecutor *pExecutor = NULL;
-	for ( std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
+	for ( std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
 		for ( std::vector<SATHTTP::STCase>::iterator _case = it->vtCases.begin(); _case != it->vtCases.end(); _case++ ) {
 			if ( (pExecutor = (CPythonExecutor *)_case->_pExcutor) ) {
 				pExecutor->EndThread();

+ 1 - 1
SATService/SATService/SATExecutor.h

@@ -66,7 +66,7 @@ protected:
 
 	ThreadSection					m_csTask;
 	ThreadSection					m_csSomkingTask;
-	std::list<SATHTTP::STTask>		m_vtTask;
+	std::vector<SATHTTP::STTask>		m_vtTask;
 	std::vector<SATHTTP::STTask>	m_vtSmokingTask;
 	std::vector<SATHTTP::STDevice>	m_vtDevice;
 	SATHTTP::STLoginReq				m_stLoginReq;

+ 2 - 2
SATService/SATService/SATService.vcproj

@@ -199,7 +199,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				Optimization="2"
+				Optimization="0"
 				EnableIntrinsicFunctions="true"
 				AdditionalIncludeDirectories="../cJSON;C:\Python27\Include;..\libssh2\include"
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;RTEST"
@@ -226,7 +226,7 @@
 				UACExecutionLevel="2"
 				GenerateDebugInformation="true"
 				SubSystem="1"
-				OptimizeReferences="2"
+				OptimizeReferences="0"
 				EnableCOMDATFolding="2"
 				TargetMachine="1"
 			/>