|
@@ -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();
|