123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773 |
- #include "StdAfx.h"
- #include "SATExecutor.h"
- #include "PythonExecutor.h"
- #include "CharEncoding.h"
- #include "SynSerial.h"
- #include "IRControl.h"
- namespace SATEXE{
- std::string GetPythonCommandLine(STPyCmd &pycmd)
- {
- std::string strPyCmd;
- cJSON *pRoot = cJSON_CreateObject();
- if ( pRoot == NULL ) {
- return strPyCmd;
- }
-
- cJSON_AddStringToObject(pRoot, "Round", pycmd.strRound.c_str());
-
- cJSON_AddNumberToObject(pRoot, "TaskId", pycmd.nTaskId);
- char *pText = cJSON_Print(pRoot);
- if ( pText)
- strPyCmd = pText;
-
- if (pText)
- delete pText;
- pText = NULL;
- if ( pRoot )
- cJSON_Delete(pRoot);
- pRoot = NULL;
- return GLOBAL::Replace(strPyCmd, "'", "\"");
- }
- };
- CSATExecutor::CSATExecutor(void)
- {
- m_bLogin = FALSE;
- m_bStopWathTV = FALSE;
- m_hEventHearbeat = NULL;
- m_hThreadHearbeat = NULL;
- m_hEventExcuteScript = NULL;
- m_hThreadExcuteScript = NULL;
- m_dwSomkingThreadId = 0;
- }
- CSATExecutor::~CSATExecutor(void)
- {
- m_bStopWathTV = FALSE;
- EndofWork();
- }
- bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
- {
-
- #ifdef _DBG_SOMKING_
- task.taskInfo.strInstanceType = "4";
- #endif
- if ( task.taskInfo.strInstanceType == "4" ) {
- AutoThreadSection ats(&m_csSomkingTask);
-
- std::vector<SATHTTP::STTask>::iterator it = m_vtSmokingTask.begin();
- for ( ; it != m_vtSmokingTask.end(); it++ ) {
-
- if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId ) {
- m_vtSmokingTask.erase(it);
- break;
- }
- }
-
- if ( _tcsicmp(task.taskInfo.strTaskType.c_str(), "3") != 0 ) {
- bool bExsit = false;
- AutoThreadSection ats(&m_csTask);
- 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;
- }
-
- if ( !bExsit )
- m_vtSmokingTask.push_back(task);
- }
- else
- {
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ; it != m_vtTask.end(); it++ ) {
-
- if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId ) {
- it->taskInfo._nExecutionState = SATHTTP::EXECUTED;
- it->taskInfo._nExecutionResult = SATHTTP::FAIL;
- break;
- }
- }
- }
-
- return true;
- }
-
- bool found = false;
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ; it != m_vtTask.end(); it++ ) {
-
- if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId ) {
-
- if ( _tcsicmp(task.taskInfo.strTaskType.c_str(), "3") == 0 ) {
- it->taskInfo._nExecutionState = SATHTTP::EXECUTED;
- it->taskInfo._nExecutionResult = SATHTTP::FAIL;
- }
- found = true;
- break;
- }
- }
- return found;
- }
- void CSATExecutor::DownloadTask(SATHTTP::STTask &task)
- {
-
- AutoThreadSection ats(&m_csTask);
-
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("【任务脚本下载】:%s"), task.Job.strUniqueId.c_str());
- std::string host = GLOBAL::g_stSATConfig.szCaseServer;
- std::string url = host + "/ajaxInteractiveManage!getCaseFileListUrl.action";
- std::vector<SATHTTP::STCase>::iterator _case = task.vtCases.begin();
- for ( int i = 1; _case != task.vtCases.end(); _case++) {
-
- _case->_nCaseStep = i++;
- SATHTTP::STScriptUrlResp stScriptUrlResp;
-
- std::string strScriptSaveDir = GLOBAL::g_stSATConfig.szScriptDir;
- strScriptSaveDir.append(task.Job.strProjectName+"\\");
- strScriptSaveDir.append(task.Job.strUniqueId+"\\");
-
- strScriptSaveDir.append(GLOBAL::Replace(task.Job.strDeviceId, "_", ":")+"\\");
- if ( DownloadScript(url, _case->strId, strScriptSaveDir, stScriptUrlResp) ) {
- _case->_strFileDir = stScriptUrlResp._strFileDir;
- _case->_strFileName = stScriptUrlResp._strFileName;
- _case->_strScriptPath = stScriptUrlResp._strScripFile;
- } else {
-
- _case->_nExecutionState = SATHTTP::EXECUTED;
- _case->_nExecutionResult = SATHTTP::ABNORMAL;
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("【下载脚本失败】:%s"), _case->strCaseName.c_str());
- }
- }
- TaskRoundSetting(&task);
- m_vtTask.push_back(task);
- }
- SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
- {
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ; it != m_vtTask.end(); it++ ) {
-
- if ( it->taskInfo._nExecutionState == SATHTTP::INEXECUTED ) {
- return &(*it);
- }
- }
- return NULL;
- }
- SATHTTP::STTask* CSATExecutor::GetFreeTask()
- {
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ; it != m_vtTask.end(); it++ ) {
-
- if ( it->taskInfo._nExecutionState == SATHTTP::UNEXECUTED ) {
- return &(*it);
- }
- }
- return NULL;
- }
- void CSATExecutor::DelFinishedTask()
- {
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ; it != m_vtTask.end(); it++ ) {
-
- if ( it->taskInfo._nExecutionState == SATHTTP::EXECUTED ) {
-
- CPythonExecutor *pExecutor = NULL;
- for (std::vector<SATHTTP::STCase>::iterator _case = it->vtCases.begin(); _case != it->vtCases.end(); _case++ ) {
-
- pExecutor = (CPythonExecutor *)_case->_pExcutor;
- if ( pExecutor ) {
-
- delete pExecutor;
- _case->_pExcutor = pExecutor = NULL;
- #ifdef _DEBUG
- TRACE2(_T("删除任务成功:%s,%s\n"), it->Job.strTaskId.c_str(), _case->strCaseName.c_str());
- #endif
- }
- }
-
- SetDeviceStatus(it->Job.strDeviceId, SATDEV::Idle);
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "\n<===============================================>\n"
- "end.删除已完成任务:%s\n<===============================================>\n", it->Job.strUniqueId.c_str());
-
- if ( m_vtTask.size() > 1 )
- m_vtTask.erase(it);
- break;
- }
- }
- }
- SATHTTP::STCase* CSATExecutor::IsCaseScriptProcess(std::vector<SATHTTP::STCase> &vtCases)
- {
- std::vector<SATHTTP::STCase>::iterator it = vtCases.begin();
- for ( ; it != vtCases.end(); it++) {
-
- if ( it->_nExecutionState == SATHTTP::INEXECUTED ) {
- return &(*it);
- }
- }
- return NULL;
- }
- SATHTTP::STCase* CSATExecutor::GetFreeCaseScript(SATHTTP::STTask* pTask)
- {
- #if 0
- std::vector<SATHTTP::STCase>::iterator it = pTask->vtCases.begin();
- for ( ; it != vtCases.end(); it++) {
-
- if ( it->_nExecutionState == SATHTTP::UNEXECUTED ) {
- return &(*it);
- }
- }
- return NULL;
- #else
- int nCaseIndex = 0;
- int nCaseRound = 0;
- SATHTTP::STCase *pCase = NULL;
- std::vector<SATHTTP::STCase>::iterator it = pTask->vtCases.begin();
- for ( ; it != pTask->vtCases.end(); it++) {
-
- nCaseIndex = _tstol(it->strIndex.c_str());
- nCaseRound = _tstol(it->_strRoundNum.c_str());
- if ( nCaseRound == pTask->_curRound ) {
- if ( nCaseIndex == pTask->_curCaseIndex ) {
-
- if ( it->_nExecutionState == SATHTTP::UNEXECUTED ) {
-
- if ( nCaseIndex == pTask->_roundSize ) {
- pTask->_curRound++;
- pTask->_curCaseIndex = 1;
- } else
- pTask->_curCaseIndex++;
-
- pCase = &*it;
-
- break;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("用例轮空:round=%d, caseIndex=%d"), pTask->_curRound, pTask->_curCaseIndex);
-
- if ( nCaseIndex == pTask->_roundSize ) {
- pTask->_curRound++;
- pTask->_curCaseIndex = 1;
- } else
- pTask->_curCaseIndex++;
- }
- }
- }
-
- if ( pCase == NULL ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("获取可用用例失败"));
- }
- return pCase;
- #endif
- }
- SATHTTP::STCase* CSATExecutor::ExecuteFreeCaseScript(SATHTTP::STTask* pTask)
- {
-
- SATHTTP::STCase* pCase = GetFreeCaseScript(pTask);
- if (pCase) {
- std::string xmlpath = pCase->_strFileDir;
- xmlpath.append("detail\\");
- xmlpath.append(pCase->_strFileName);
- xmlpath.append("_result.xml");
-
- DeleteFile(xmlpath.c_str());
-
- SATEXE::STPyCmd pycmd;
- pycmd.strRound = pCase->_strRoundNum;
- pycmd.nTaskId = pTask->taskInfo.nInstanceId;
- std::string strPyCmd = SATEXE::GetPythonCommandLine(pycmd);
-
-
- if ( !pCase->_pExcutor ) {
- CPythonExecutor *pExcutor = new CPythonExecutor();
- if ( pExcutor ) {
- pCase->_pExcutor = pExcutor;
-
- pCase->_strCaseLog = pCase->_strFileDir + pCase->_strFileName + _T("_") + pCase->_strRoundNum + ".txt";
- if ( pExcutor->InitScript(pCase->_strScriptPath, pCase->_strCaseLog, strPyCmd.c_str()) ) {
-
- pExcutor->SetCaseObje(pCase);
- pExcutor->StartScript();
- }
-
- pCase->_nExecutionState = SATHTTP::INEXECUTED;
-
- pTask->taskInfo._nExecutionState = SATHTTP::INEXECUTED;
-
- pCase->_ulStartTickCount = GetTickCount64();
- pCase->_strStartTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "启动脚本(%s)", pCase->strCaseName.c_str());
- }
- }
- else {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "重新初始化脚本(%s)", pCase->strCaseName.c_str());
-
- CPythonExecutor *pExcutor = (CPythonExecutor *)pCase->_pExcutor;
- if ( pExcutor->InitScript(pCase->_strScriptPath, pCase->_strCaseLog, strPyCmd.c_str()) ) {
-
- pExcutor->SetCaseObje(pCase);
- pExcutor->StartScript();
-
- pCase->_nExecutionState = SATHTTP::INEXECUTED;
- }
- else {
- pCase->_nExecutionResult = SATHTTP::FAIL;
- }
- }
- }
- return pCase;
- }
- void CSATExecutor::TaskRoundSetting(SATHTTP::STTask* pTask)
- {
- if ( pTask == NULL )
- return;
-
-
- pTask->_roundSize = pTask->vtCases.size();
-
- pTask->_roundCount = _tstol(pTask->Job.strRound.c_str());
- if ( pTask->_roundCount > 1 ) {
- TCHAR szValue[8] = { 0 };
-
- std::vector<SATHTTP::STCase> vtOrgCase = pTask->vtCases;
- for ( int i = 2; i <= pTask->_roundCount; i++ ) {
- _itoa_s(i, szValue, 10);
- std::vector<SATHTTP::STCase> vtCase = vtOrgCase;
- for ( std::vector<SATHTTP::STCase>::iterator it = vtCase.begin(); it != vtCase.end(); it++ ) {
- it->_strRoundNum = szValue;
- pTask->vtCases.push_back(*it);
- }
- }
- }
- }
- void CSATExecutor::AddDevices(const SATDEV::STDevice &stDevice)
- {
- if ( IsDeviceExist(stDevice.strName) )
- return;
- SATHTTP::STDevice http_dev;
-
- if ( stDevice.nUsageState == SATDEV::Idle )
- http_dev.strStatus = "0";
- else if ( stDevice.nUsageState == SATDEV::InUse )
- http_dev.strStatus = "2";
-
- http_dev.strDeviceSerial = stDevice.strName;
-
- http_dev.strComments = "";
- http_dev.strCPU = "";
- http_dev.strDeviceMac = "";
- http_dev.strElectric = "";
- http_dev.strHardwareVersion = "SAT-HV";
- http_dev.strLastJob = "";
- http_dev.strLastJobFinishTime = "";
- http_dev.strLastJobStartTime = "";
- http_dev.strLastTimeBreak = "";
- http_dev.strLastTimeConnected = "";
- http_dev.strManu = "";
- http_dev.strMemory = "";
- http_dev.strModel = "SATModel";
- http_dev.strPhoneNumber = "";
- http_dev.strSoftwareVersion = "0123456789";
- m_vtDevice.push_back(http_dev);
- }
- void CSATExecutor::DelDevices(const SATDEV::STDevice &stDevice)
- {
- std::vector<SATHTTP::STDevice>::iterator it = m_vtDevice.begin();
- for ( ; it != m_vtDevice.end(); it++ ) {
- if ( _tcsicmp(it->strDeviceSerial.c_str(), stDevice.strName.c_str()) == 0 ) {
- m_vtDevice.erase(it);
- break;
- }
- }
- }
- void CSATExecutor::SetDeviceStatus(std::string strDevName, SATDEV::DEVICE_USAGE_STATUS status)
- {
- std::vector<SATHTTP::STDevice>::iterator it = m_vtDevice.begin();
- for ( ; it != m_vtDevice.end(); it++ ) {
- if ( _tcsicmp(it->strDeviceSerial.c_str(), strDevName.c_str()) == 0 ) {
- if ( status == SATDEV::Idle )
- it->strStatus = "0";
- else if ( status == SATDEV::InUse )
- it->strStatus = "2";
- break;
- }
- }
-
- CSATDevices::SetDeviceUsageStatus(strDevName, status);
- }
- bool CSATExecutor::IsDeviceExist(std::string strDevName)
- {
- bool bExist = false;
- std::vector<SATHTTP::STDevice>::iterator it = m_vtDevice.begin();
- for ( ; it != m_vtDevice.end(); it++ ) {
- if ( _tcsicmp(it->strDeviceSerial.c_str(), strDevName.c_str()) == 0 ) {
- bExist = true;
- break;
- }
- }
- return bExist;
- }
- bool CSATExecutor::Login(bool bLogin )
- {
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!executeLogin.action");
-
- m_stLoginReq.strStatus = bLogin ? "0" : "1";
- m_stLoginReq.strDeleteStatus = "";
- m_stLoginReq.strIP = GLOBAL::GetLocalAddress();
- m_stLoginReq.strStorage = "";
- if ( bLogin ) {
- m_stLoginReq.strDisconnectTime = "";
- m_stLoginReq.strConnectTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- } else {
- m_stLoginReq.strConnectTime = "";
- m_stLoginReq.strDisconnectTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- }
-
- m_stLoginReq.strMAC = GLOBAL::g_strMacs;
- m_stLoginReq.strCPU = "";
- if ( ::Login(url, m_stLoginReq, m_stLoginResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "登录成功");
- m_bLogin = TRUE;
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "登录失败");
- return false;
- }
- bool CSATExecutor::Login(std::string user, std::string password, std::string actuator, bool bLogin )
- {
-
- m_stLoginReq.strUserName = user;
- m_stLoginReq.strPassword = password;
-
- m_stLoginReq.strExecuteName = m_strActuatorName = actuator;
-
- return Login(bLogin);
- }
- bool CSATExecutor::Logout(std::string user, std::string password)
- {
- return Login(user, password, m_strActuatorName, false);
- }
- bool CSATExecutor::UpdateDevice()
- {
- SATHTTP::STUpdateDeviceReq stUpdateDeviceReq;
- SATHTTP::STUpdateDeviceResp stUpdateDeviceResp;
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!updateDeviceMessage.action");
-
- stUpdateDeviceReq.strStatus = "0";
- stUpdateDeviceReq.strUserName = m_stLoginReq.strUserName;
- stUpdateDeviceReq.strIP = GLOBAL::g_strIPAddress;
- stUpdateDeviceReq.strStorage = "";
- stUpdateDeviceReq.strRunnerName = m_strActuatorName;
-
- stUpdateDeviceReq.strMAC = GLOBAL::g_strMacs;
-
- stUpdateDeviceReq.strReportType = "1";
- stUpdateDeviceReq.strStartTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- stUpdateDeviceReq.strMemory = "";
- stUpdateDeviceReq.strEndTime = "";
- stUpdateDeviceReq.strCPU = "";
- stUpdateDeviceReq.devicelist.assign(m_vtDevice.begin(), m_vtDevice.end());
- if ( !::UpdateDeviceMessage(url, stUpdateDeviceReq, stUpdateDeviceResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "更新设备信息失败");
- return false;
- }
-
- return true;
- }
- bool CSATExecutor::NotifyTaskStart(SATHTTP::STTask* pTask)
- {
- if ( !pTask )
- return false;
- SATHTTP::STNotifyJobStartReq stNotifyJobStartReq;
- SATHTTP::STNotifyJobStartResp stNotifyJobStartResp;
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!setResult.action");
- TCHAR szValue[36] = {0};
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stNotifyJobStartReq.strDeviceId = szValue;
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stNotifyJobStartReq.strExecuteId = szValue;
-
- _itoa_s(pTask->taskInfo.Id, szValue, 10);
- stNotifyJobStartReq.strInstanceId = szValue;
-
- 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;
- 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());
- if ( SetResult(url, stNotifyJobStartReq, stNotifyJobStartResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "更新任务状态成功:%s", pTask->Job.strUniqueId.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "更新任务状态失败:%s", pTask->Job.strUniqueId.c_str());
- return false;
- }
- bool CSATExecutor::UploadCaseImg(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase, std::string img)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!saveResultImg.action");
- SATHTTP::STSaveImgReq stSaveImgReq;
- SATHTTP::STSaveImgResp stSaveImgResp;
- stSaveImgReq.strCaseId = pCase->strId;
- stSaveImgReq.strCaseRepeat = "0";
- _itoa_s(pCase->_nCaseStep, szValue, 10);
- stSaveImgReq.strCaseStep = szValue;
-
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stSaveImgReq.strDeviceId = szValue;
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stSaveImgReq.strExecuteId = szValue;
-
- _itoa_s(pTask->taskInfo.nInstanceId, szValue, 10);
- stSaveImgReq.strInstanceId = szValue;
- stSaveImgReq.strJobRepeat = "0";
-
- stSaveImgReq.strRoundNum = pCase->_strRoundNum;
- stSaveImgReq.strImgType = "";
- stSaveImgReq.strUploads = img;
-
- if ( SaveResultImg(url, stSaveImgReq, stSaveImgResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传图片成功:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), img.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传图片失败:任务=%s, 用例=%s, 图片=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), img.c_str());
- return false;
- }
- bool CSATExecutor::UploadCaseLog(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!saveCaseOrTaskLog.action");
- SATHTTP::STSaveLogReq stSaveLogReq;
- SATHTTP::STSaveLogResp stSaveLogResp;
- stSaveLogReq.strCaseId = pCase->strId;
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stSaveLogReq.strExecuteId = szValue;
- stSaveLogReq.strFileType = "caseLogFile";
-
-
- stSaveLogReq.strTaskId = pTask->Job.strTaskInstanceId;
- stSaveLogReq.strUserId = pTask->Job.strUserId;
-
- stSaveLogReq.strRoundNum = pCase->_strRoundNum;
-
- stSaveLogReq.strUploads = pCase->_strCaseLog;
- if ( SaveCaseOrTaskLog(url, stSaveLogReq, stSaveLogResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传日志成功:任务=%s, 用例=%s, 日志=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), pCase->_strCaseLog.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传日志失败:任务=%s, 用例=%s, 日志=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str(), pCase->_strCaseLog.c_str());
- return false;
- }
- bool CSATExecutor::ReportCaseItemFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase, STCaseItem &caseItem)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!setResultList.action");
- SATHTTP::STJobProcessReq stJobProcessReq;
- SATHTTP::STJobProcessResp stJobProcessResp;
-
- stJobProcessReq.strResultState = caseItem.result ? "0" : "1";
-
- if ( !caseItem.result ) {
- pCase->_nExecutionResult = SATHTTP::FAIL;
- pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
- }
- stJobProcessReq.strCaseScene = "";
-
- _itoa_s(pCase->_nCaseStep, szValue, 10);
- stJobProcessReq.strCaseStep = szValue;
- stJobProcessReq.strApkMD5 = "";
- stJobProcessReq.strCrashTime = "";
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stJobProcessReq.strRunnerId = szValue;
- stJobProcessReq.strCPUInfo = "0";
- stJobProcessReq.strRunnedActionNameList = "";
- stJobProcessReq.strArtificialResult = "";
- stJobProcessReq.strArtificialModify = "";
- stJobProcessReq.strRunnerName = "";
- stJobProcessReq.strTaskType = "FUNCTIONALITY";
- stJobProcessReq.strCaseRepeat = "0";
- stJobProcessReq.strApplicationGroup = "";
-
- _itoa_s(pTask->taskInfo.Id, szValue, 10);
- stJobProcessReq.strInstanceId = szValue;
- stJobProcessReq.strCaseId = pCase->strId;
-
- _itoa_s(100*(atoi(pCase->strIndex.c_str()))/pTask->vtCases.size(), szValue, 10);
- stJobProcessReq.strProgress = szValue;
-
- stJobProcessReq.strReusltMessage = caseItem.name;
- stJobProcessReq.strJobRepeat = "0";
- stJobProcessReq.strScreenShot = "";
- stJobProcessReq.strStartTime = pCase->_strStartTime;
- stJobProcessReq.strCrashNumber = "";
- stJobProcessReq.strCaseName = pCase->strCaseName;
-
-
- stJobProcessReq.strFailedReason = caseItem.remark;
- for (std::vector<std::string>::iterator it = caseItem.imgs.begin(); it != caseItem.imgs.end(); it++ ) {
- int npos = it->find_last_of('/');
- if ( std::string::npos != npos ) {
- stJobProcessReq.strImgName.append(it->substr(npos+1));
- stJobProcessReq.strImgName.append("&");
- }
- }
- if ( stJobProcessReq.strImgName.size() && stJobProcessReq.strImgName.at(stJobProcessReq.strImgName.size()-1) == '&')
- stJobProcessReq.strImgName.erase(stJobProcessReq.strImgName.size()-1);
- stJobProcessReq.strCaseIndex = pCase->strIndex;
-
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stJobProcessReq.strDeviceId = szValue;
- stJobProcessReq.strSceneIndex = "0";
-
-
- 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 = caseItem.data.c_str();
-
- stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;
-
- stJobProcessReq.strInfoType = "";
-
-
- stJobProcessReq.strEndTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- stJobProcessReq.strRoundNumber = pCase->_strRoundNum;
- stJobProcessReq.strResultType = "4";
- stJobProcessReq.strOperationStep = "";
- if ( SetResultList(url, stJobProcessReq, stJobProcessResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传【用例测试项】结果完成【成功】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
-
- std::string img;
- for (std::vector<std::string>::iterator it = caseItem.imgs.begin(); it != caseItem.imgs.end(); it++ ) {
-
- img = pCase->_strFileDir;
- img.append(it->substr(3));
- img = GLOBAL::Replace(img, "/", "\\");
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "图片路径=%s", img.c_str());
- UploadCaseImg(pTask, pCase, img);
- }
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传【用例测试项】结果完成【失败】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
- return false;
- }
- bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase, std::string strRunnedActionNameList)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!setResultList.action");
- SATHTTP::STJobProcessReq stJobProcessReq;
- SATHTTP::STJobProcessResp stJobProcessResp;
-
- if ( pCase->_nExecutionState == SATHTTP::EXECUTED ) {
- if ( pCase->_nExecutionResult == SATHTTP::SUCCESS ) {
- stJobProcessReq.strResultState = "0";
- stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本执行成功");
- }
- else {
- if ( pCase->_nExecutionResult == SATHTTP::ABNORMAL )
- stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本执行异常");
- else
- stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本执行失败");
- stJobProcessReq.strResultState = "1";
-
- pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
- }
- }
- else {
- stJobProcessReq.strResultState = "1";
-
- pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
- stJobProcessReq.strFailedReason = CharEncoding::ASCII2UTF8("脚本未执行");
- }
-
- stJobProcessReq.strCaseScene = "";
-
- _itoa_s(pCase->_nCaseStep, szValue, 10);
- stJobProcessReq.strCaseStep = szValue;
- stJobProcessReq.strApkMD5 = "";
- stJobProcessReq.strCrashTime = "";
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stJobProcessReq.strRunnerId = szValue;
- stJobProcessReq.strCPUInfo = "0";
- stJobProcessReq.strRunnedActionNameList = strRunnedActionNameList;
- stJobProcessReq.strArtificialResult = "";
- stJobProcessReq.strArtificialModify = "";
- stJobProcessReq.strRunnerName = "";
- stJobProcessReq.strTaskType = "FUNCTIONALITY";
- stJobProcessReq.strCaseRepeat = "";
- stJobProcessReq.strApplicationGroup = "";
-
- _itoa_s(pTask->taskInfo.Id, szValue, 10);
- stJobProcessReq.strInstanceId = szValue;
- stJobProcessReq.strCaseId = pCase->strId;
-
- _itoa_s(100*(atoi(pCase->strIndex.c_str()))/pTask->vtCases.size(), szValue, 10);
- stJobProcessReq.strProgress = szValue;
-
- stJobProcessReq.strReusltMessage = CharEncoding::ASCII2UTF8("测试用例结果:");
- stJobProcessReq.strJobRepeat = "";
- stJobProcessReq.strScreenShot = "";
- stJobProcessReq.strStartTime = pCase->_strStartTime;
- stJobProcessReq.strCrashNumber = "";
- stJobProcessReq.strCaseName = pCase->strCaseName;
-
- stJobProcessReq.strImgName = "";
- stJobProcessReq.strCaseIndex = pCase->strIndex;
-
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stJobProcessReq.strDeviceId = szValue;
- stJobProcessReq.strSceneIndex = "0";
-
-
- 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 = "";
-
- stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;
-
- stJobProcessReq.strInfoType = "TOTAL";
-
-
- stJobProcessReq.strEndTime = pCase->_strEndTime;
- stJobProcessReq.strRoundNumber = pCase->_strRoundNum;
- stJobProcessReq.strResultType = "5";
- stJobProcessReq.strOperationStep = "";
- if ( SetResultList(url, stJobProcessReq, stJobProcessResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传用例结果完成【成功】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "上传用例结果完成【失败】:任务=%s, 用例=%s", pTask->Job.strUniqueId.c_str(), pCase->strCaseName.c_str());
- return false;
- }
- bool CSATExecutor::ReportCaseResult(SATHTTP::STTask* pTask, SATHTTP::STCase *pCase)
- {
-
- std::string xmlpath = pCase->_strFileDir;
- xmlpath.append("detail\\");
- xmlpath.append(pCase->_strFileName + _T("_"));
- xmlpath.append(pCase->_strRoundNum);
- #if 0
-
- 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;
- if ( GetCaseXMLResult(xmlpath, vtCaseItem) )
- pCase->_nExecutionResult = SATHTTP::SUCCESS;
-
- if ( vtCaseItem.size() == 0 ) {
-
- if ( pCase->_nExecutionResult == SATHTTP::SUCCESS )
- pCase->_nExecutionResult = SATHTTP::ABNORMAL;
-
- pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("测试项空,用例名:%s"), pCase->strCaseName.c_str());
- }
-
-
- std::string strRunnedActionNameList;
- std::vector<STCaseItem>::iterator it = vtCaseItem.begin();
- for (; it != vtCaseItem.end();) {
-
- ReportCaseItemFinish(pTask, pCase, *it);
- strRunnedActionNameList.append(it->name);
- if ( ++it != vtCaseItem.end() )
- strRunnedActionNameList.append("&");
- }
-
- ReportCaseFinish(pTask, pCase, strRunnedActionNameList);
-
- UploadCaseLog(pTask, pCase);
-
- if ( pCase->_pExcutor )
- delete pCase->_pExcutor;
- pCase->_pExcutor = NULL;
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("用例已完成,执行器对象删除成功,脚本用例名为=%s"), pCase->strCaseName.c_str());
- return true;
- }
- bool CSATExecutor::UploadTaskLog(SATHTTP::STTask* pTask)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!saveCaseOrTaskLog.action");
- SATHTTP::STSaveLogReq stSaveLogReq;
- SATHTTP::STSaveLogResp stSaveLogResp;
- stSaveLogReq.strCaseId = "";
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stSaveLogReq.strExecuteId = szValue;
- stSaveLogReq.strFileType = "taskLogFile";
-
-
- stSaveLogReq.strTaskId = pTask->Job.strTaskInstanceId;
- stSaveLogReq.strUserId = pTask->Job.strUserId;
-
- stSaveLogReq.strUploads = "D:\\sat\\log.txt";
- if ( SaveCaseOrTaskLog(url, stSaveLogReq, stSaveLogResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("任务已完成,上传任务日志【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("任务已完成,上传任务日志【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return false;
- }
- bool CSATExecutor::ReportTaskStart(SATHTTP::STTask* pTask)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!setResultList.action");
- SATHTTP::STJobProcessReq stJobProcessReq;
- SATHTTP::STJobProcessResp stJobProcessResp;
-
- stJobProcessReq.strResultState = "";
- stJobProcessReq.strCaseScene = "";
-
- stJobProcessReq.strCaseStep = "0";
- stJobProcessReq.strApkMD5 = "";
- stJobProcessReq.strCrashTime = "";
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stJobProcessReq.strRunnerId = szValue;
- stJobProcessReq.strCPUInfo = "0";
- stJobProcessReq.strRunnedActionNameList = "";
- stJobProcessReq.strArtificialResult = "";
- stJobProcessReq.strArtificialModify = "";
- stJobProcessReq.strRunnerName = "";
- stJobProcessReq.strTaskType = "FUNCTIONALITY";
- stJobProcessReq.strCaseRepeat = "";
- stJobProcessReq.strApplicationGroup = "";
-
- _itoa_s(pTask->taskInfo.Id, szValue, 10);
- stJobProcessReq.strInstanceId = szValue;
- stJobProcessReq.strCaseId = "";
-
- stJobProcessReq.strProgress = "0";
-
- stJobProcessReq.strReusltMessage = CharEncoding::ASCII2UTF8("任务开始");
- stJobProcessReq.strJobRepeat = "";
- stJobProcessReq.strScreenShot = "";
- stJobProcessReq.strStartTime = pTask->taskInfo.strStartTime;
- stJobProcessReq.strCrashNumber = "";
- stJobProcessReq.strCaseName = "";
- stJobProcessReq.strFailedReason = "";
- stJobProcessReq.strImgName = "";
- stJobProcessReq.strCaseIndex = "";
-
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stJobProcessReq.strDeviceId = szValue;
- stJobProcessReq.strSceneIndex = "";
-
-
- 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 = "";
-
- stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;
-
- stJobProcessReq.strInfoType = "TOTAL";
-
-
- stJobProcessReq.strEndTime = "";
- stJobProcessReq.strRoundNumber = "1";
- stJobProcessReq.strResultType = "0";
- stJobProcessReq.strOperationStep = "";
- if ( SetResultList(url, stJobProcessReq, stJobProcessResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务开始【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务开始【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return false;
- }
- bool CSATExecutor::ReportTaskFinish(SATHTTP::STTask* pTask)
- {
- TCHAR szValue[MAX_PATH] = {0};
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!setResultList.action");
- SATHTTP::STJobProcessReq stJobProcessReq;
- SATHTTP::STJobProcessResp stJobProcessResp;
-
- if ( pTask->taskInfo._nExecutionState == SATHTTP::EXECUTED ) {
- if ( pTask->taskInfo._nExecutionResult == SATHTTP::SUCCESS )
- stJobProcessReq.strResultState = "0";
- else
- stJobProcessReq.strResultState = "1";
- }
- else
- stJobProcessReq.strResultState = "1";
- stJobProcessReq.strCaseScene = "";
-
- stJobProcessReq.strCaseStep = "0";
- stJobProcessReq.strApkMD5 = "";
- stJobProcessReq.strCrashTime = "";
-
- _itoa_s(pTask->taskInfo.nExecuteId, szValue, 10);
- stJobProcessReq.strRunnerId = szValue;
- stJobProcessReq.strCPUInfo = "0";
- stJobProcessReq.strRunnedActionNameList = "";
- stJobProcessReq.strArtificialResult = "";
- stJobProcessReq.strArtificialModify = "";
- stJobProcessReq.strRunnerName = "";
- stJobProcessReq.strTaskType = "FUNCTIONALITY";
- stJobProcessReq.strCaseRepeat = "0";
- stJobProcessReq.strApplicationGroup = "";
-
- _itoa_s(pTask->taskInfo.Id, szValue, 10);
- stJobProcessReq.strInstanceId = szValue;
- stJobProcessReq.strCaseId = "";
-
- stJobProcessReq.strProgress = "100";
-
- stJobProcessReq.strReusltMessage = CharEncoding::ASCII2UTF8("任务结束");
- stJobProcessReq.strJobRepeat = "0";
- stJobProcessReq.strScreenShot = "";
-
- stJobProcessReq.strStartTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- stJobProcessReq.strCrashNumber = "";
- stJobProcessReq.strCaseName = "";
- stJobProcessReq.strFailedReason = "";
- stJobProcessReq.strImgName = "";
- stJobProcessReq.strCaseIndex = "";
-
- _itoa_s(pTask->taskInfo.nDeviceId, szValue, 10);
- stJobProcessReq.strDeviceId = szValue;
- stJobProcessReq.strSceneIndex = "0";
-
-
- 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 = "";
-
- stJobProcessReq.strDevnceName = pTask->Job.strDeviceId;
-
- stJobProcessReq.strInfoType = "";
-
-
- stJobProcessReq.strEndTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- stJobProcessReq.strRoundNumber = pTask->Job.strRound;
- stJobProcessReq.strResultType = "1";
- stJobProcessReq.strOperationStep = "";
- if ( SetResultList(url, stJobProcessReq, stJobProcessResp) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务结束【成功】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return true;
- }
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("上报任务结束【失败】,任务编号为=%s"), pTask->Job.strUniqueId.c_str());
- return false;
- }
- bool CSATExecutor::GetCaseXMLResult(std::string xmlpath, std::vector<STCaseItem> &vtCaseItem)
- {
-
- tinyxml2::XMLDocument doc;
- if (tinyxml2::XML_SUCCESS != doc.LoadFile(xmlpath.c_str()) ) {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "没有测试项对应的xml文件:%s", xmlpath.c_str());
- return false;
- }
- tinyxml2::XMLElement *pXmlRoot = NULL;
- if ((pXmlRoot = doc.RootElement()) == NULL)
- return false;
-
- if (_tcsicmp(pXmlRoot->Value(), "results") != 0)
- return false;
-
- bool bFinishStatus = false;
- const tinyxml2::XMLAttribute *pAttr = pXmlRoot->FirstAttribute();
- while (pAttr) {
- if (_tcsicmp(pAttr->Name(), "caseFinish") == 0) {
-
- if ( _tcsicmp(pAttr->Value(), _T("1")) == 0 )
- bFinishStatus = true;
- break;
- }
- pAttr = pAttr->Next();
- }
-
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "开始获取测试项内容:%s", xmlpath.c_str());
- tinyxml2::XMLElement *pXmlElent = pXmlRoot->FirstChildElement();
- while (pXmlElent) {
- if (_tcsicmp(pXmlElent->Value(), _T("item")) == 0) {
- STCaseItem cItem;
- tinyxml2::XMLElement *pItem = pXmlElent->FirstChildElement();
- while (pItem) {
- if (_tcsicmp(pItem->Value(), _T("name")) == 0) {
- cItem.name = pItem->GetText();
- }
- else if (_tcsicmp(pItem->Value(), _T("result")) == 0) {
- if ( _tcsicmp(pItem->GetText(), _T("Pass")) == 0 )
- cItem.result = true;
- else
- cItem.result = false;
- }
- else if (_tcsicmp(pItem->Value(), _T("data")) == 0) {
- cItem.data = pItem->GetText();
- }
- else if (_tcsicmp(pItem->Value(), _T("log")) == 0) {
- cItem.log = pItem->GetText();
- }
- else if (_tcsicmp(pItem->Value(), _T("remark")) == 0) {
- cItem.remark = pItem->GetText();
- }
- else if (_tcsicmp(pItem->Value(), _T("screen")) == 0) {
- cItem.imgs.push_back(pItem->GetText());
- }
- pItem = pItem->NextSiblingElement();
- }
-
- if ( cItem.name.size() )
- vtCaseItem.push_back(cItem);
- }
- pXmlElent = pXmlElent->NextSiblingElement();
- }
-
- return bFinishStatus;
- }
- int CSATExecutor::AttachTaskInfo2Buffer(SATPROTO::TaskInfo (&pbuff)[SATPROTO::MAX_TASKS])
- {
- int count = 0;
- if ( pbuff ) {
- AutoThreadSection ats(&m_csTask);
- std::vector<SATHTTP::STTask>::iterator it = m_vtTask.begin();
- for ( ;it != m_vtTask.end(); it++ ) {
-
-
-
- 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->taskInfo.strTaskName.c_str(), it->taskInfo.strTaskName.size());
-
- if ( it->taskInfo._nExecutionState == SATHTTP::UNEXECUTED ) {
- _stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("未执行"));
- }
- else if (it->taskInfo._nExecutionState == SATHTTP::INEXECUTED) {
- _stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("执行中"));
- }
- else if (it->taskInfo._nExecutionState == SATHTTP::EXECUTED) {
- _stprintf_s(pbuff[count].szStatus, SATPROTO::MAX_STATUS, _T("已执行"));
- }
- int nIndex = 0;
-
- pbuff[count].nCaseSize = it->vtCases.size();
- for (std::vector<SATHTTP::STCase>::iterator _case = it->vtCases.begin(); _case != it->vtCases.end(); _case++) {
-
-
-
-
- memcpy_s(pbuff[count].ssCases[nIndex].szCaseName, SATPROTO::MAX_NAME, _case->strCaseName.c_str(), _case->strCaseName.size());
-
- memcpy_s(pbuff[count].ssCases[nIndex].szCaseLogPath, MAX_PATH, _case->_strCaseLog.c_str(), _case->_strCaseLog.size());
-
- if (_case->_nExecutionState == SATHTTP::UNEXECUTED) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szExecStatus, SATPROTO::MAX_STATUS, _T("未执行"));
- }
- else if (_case->_nExecutionState == SATHTTP::INEXECUTED) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szExecStatus, SATPROTO::MAX_STATUS, _T("执行中"));
- }
- else if (_case->_nExecutionState == SATHTTP::EXECUTED) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szExecStatus, SATPROTO::MAX_STATUS, _T("已执行"));
- }
-
- if ( _case->_nExecutionResult == SATHTTP::NONE ) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szResultStatus, SATPROTO::MAX_STATUS, _T("无"));
- }
- else if ( _case->_nExecutionResult == SATHTTP::SUCCESS ) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szResultStatus, SATPROTO::MAX_STATUS, _T("成功"));
- }
- else if ( _case->_nExecutionResult == SATHTTP::FAIL ) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szResultStatus, SATPROTO::MAX_STATUS, _T("失败"));
- }
- else if ( _case->_nExecutionResult == SATHTTP::ABNORMAL ) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szResultStatus, SATPROTO::MAX_STATUS, _T("异常"));
- }
- else if ( _case->_nExecutionResult == SATHTTP::OVERTIME ) {
- _stprintf_s(pbuff[count].ssCases[nIndex].szResultStatus, SATPROTO::MAX_STATUS, _T("超时"));
- }
- nIndex++;
-
- if ( nIndex == SATPROTO::MAX_CASES )
- break;
- }
- count++;
-
- if ( count == SATPROTO::MAX_TASKS )
- break;
- }
- }
- return count;
- }
- bool CSATExecutor::SmokeTaskPretreated(SATHTTP::STTask &task)
- {
- #ifdef _DBG_SOMKING_
- 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;
-
- __time64_t gmt = time(NULL);
- struct tm gmtm = { 0 };
-
- localtime_s(&gmtm, &gmt);
-
- int hour, minute;
- sscanf_s(task.taskInfo.stSomkingCycle.strTime.c_str(), _T("%d:%d"), &hour, &minute);
-
- if ( task.taskInfo.stSomkingCycle.nType == 0 ) {
- bTimeIsUp = true;
- }
- else if ( task.taskInfo.stSomkingCycle.nType == 1 ) {
- if ( gmtm.tm_hour == hour && gmtm.tm_min >= minute && gmtm.tm_min <= minute + 3)
- 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 && gmtm.tm_min <= minute + 3)
- 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_min <= minute + 3)
- bTimeIsUp = true;
- }
-
- if ( bTimeIsUp ) {
-
- DownloadTask(task);
- Sleep(10000);
- }
- return bTimeIsUp;
- }
- void CSATExecutor::StartWork()
- {
- m_hEventHearbeat = CreateEvent(NULL, TRUE, FALSE, NULL);
- if ( m_hEventHearbeat == NULL ) {
- _tprintf_s(_T("创建事件失败\n"));
- return;
- }
- m_hEventExcuteScript = CreateEvent(NULL, TRUE, FALSE, NULL);
- if ( m_hEventExcuteScript == NULL ) {
- _tprintf_s(_T("创建事件失败2\n"));
- goto clear;
- }
- m_hEventSomkingScript = CreateEvent(NULL, TRUE, FALSE, NULL);
- if ( m_hEventSomkingScript == NULL ) {
- _tprintf_s(_T("创建事件失败3\n"));
- goto clear;
- }
- m_hThreadHearbeat = CreateThread(NULL, 0, HearbeatThread, this, 0, NULL);
- if ( m_hThreadHearbeat == NULL) {
- _tprintf_s(_T("创建线程失败\n"));
- goto clear;
- }
- m_hThreadExcuteScript = CreateThread(NULL, 0, ExecuteScriptThread, this, 0, NULL);
- if ( m_hThreadExcuteScript == NULL ) {
- goto clear;
- }
- m_hThreadSomkingScript = CreateThread(NULL, 0, SomkingScriptThread, this, 0, &m_dwSomkingThreadId);
- if ( m_hThreadSomkingScript == NULL ) {
- goto clear;
- }
- return;
- clear:
- if ( m_hEventHearbeat ) {
- SetEvent(m_hEventHearbeat);
- CloseHandle(m_hEventHearbeat);
- m_hEventHearbeat = NULL;
- }
- if ( m_hEventExcuteScript ) {
- SetEvent(m_hEventExcuteScript);
- CloseHandle(m_hEventExcuteScript);
- m_hEventExcuteScript = NULL;
- }
- if ( m_hEventSomkingScript ) {
- SetEvent(m_hEventSomkingScript);
- CloseHandle(m_hEventSomkingScript);
- m_hEventSomkingScript = NULL;
- }
- if ( m_hThreadHearbeat ) {
- WaitForSingleObject(m_hThreadHearbeat,INFINITE);
- if (m_hThreadHearbeat)
- CloseHandle(m_hThreadHearbeat);
- m_hThreadHearbeat = NULL;
- }
- if ( m_hThreadExcuteScript ) {
- WaitForSingleObject(m_hThreadExcuteScript,INFINITE);
- if (m_hThreadExcuteScript)
- CloseHandle(m_hThreadExcuteScript);
- m_hThreadExcuteScript = NULL;
- }
- if ( m_hThreadSomkingScript ) {
- WaitForSingleObject(m_hThreadSomkingScript,INFINITE);
- if (m_hThreadSomkingScript)
- CloseHandle(m_hThreadSomkingScript);
- m_hThreadSomkingScript = NULL;
- }
- }
- void CSATExecutor::EndofWork()
- {
-
-
- if ( m_hEventHearbeat )
- SetEvent(m_hEventHearbeat);
-
- if ( m_hThreadHearbeat ) {
- WaitForSingleObject(m_hThreadHearbeat, INFINITE);
- CloseHandle(m_hThreadHearbeat);
- m_hThreadHearbeat = NULL;
- }
-
- if ( m_hEventHearbeat ) {
- CloseHandle(m_hEventHearbeat);
- m_hEventHearbeat = NULL;
- }
-
-
- if ( m_hEventExcuteScript )
- SetEvent(m_hEventExcuteScript);
-
- if ( m_hThreadExcuteScript ) {
- WaitForSingleObject(m_hThreadExcuteScript, INFINITE);
- CloseHandle(m_hThreadExcuteScript);
- m_hThreadExcuteScript = NULL;
- }
-
- if ( m_hEventExcuteScript ) {
- CloseHandle(m_hEventExcuteScript);
- m_hEventExcuteScript = NULL;
- }
-
-
- if ( m_hEventSomkingScript )
- SetEvent(m_hEventSomkingScript);
-
- if ( m_hThreadSomkingScript ) {
- WaitForSingleObject(m_hThreadSomkingScript, INFINITE);
- CloseHandle(m_hThreadSomkingScript);
- m_hThreadSomkingScript = NULL;
- }
-
- if ( m_hEventSomkingScript ) {
- CloseHandle(m_hEventSomkingScript);
- m_hEventSomkingScript = NULL;
- }
-
- CPythonExecutor *pExecutor = NULL;
- 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();
- delete pExecutor;
- pExecutor = NULL;
- }
- }
- }
- m_vtTask.clear();
- }
- DWORD CSATExecutor::HearbeatThread(LPVOID lpVoid)
- {
- CSATExecutor *that = (CSATExecutor*)lpVoid;
- if ( !that ) return 0;
-
- do {
-
- if ( !GLOBAL::g_stSATConfig.bWatchTVPort ) {
- GLOBAL::GetIniInfo();
- }
-
- if ( !that->m_bLogin )
- continue;
-
- that->UpdateDevice();
-
- std::string strScriptSaveDir;
- SATHTTP::STHeartbeatReq stHeartbeatReq;
- SATHTTP::STHeartbeatResp stHeartbeatResp;
- std::string url = GLOBAL::g_stSATConfig.szExecuteServer;
- url.append("/ajaxInteractiveManage!executeHeartbeat.action");
- stHeartbeatReq.strUserName = that->m_stLoginReq.strUserName;
- stHeartbeatReq.strRunnerMac = that->m_stLoginReq.strMAC;
- stHeartbeatReq.devicelist.assign(that->m_vtDevice.begin(), that->m_vtDevice.end());
- if ( Heartbeat(url, stHeartbeatReq, stHeartbeatResp) ) {
- std::vector<SATHTTP::STTask>::iterator it = stHeartbeatResp.vtTask.begin();
- for ( ; it != stHeartbeatResp.vtTask.end(); it++ ) {
- if (!that->IsTaskExist(*it)) {
- that->DownloadTask(*it);
- }
- }
- }
- else {
-
- that->Login(true);
- }
- } while ( WaitForSingleObject(that->m_hEventHearbeat, 10000) == WAIT_TIMEOUT );
- return 0;
- }
- DWORD CSATExecutor::ExecuteScriptThread(LPVOID lpVoid)
- {
- CSATExecutor *that = (CSATExecutor*)lpVoid;
- if ( !that ) return 0;
- do {
-
- that->DelFinishedTask();
-
- SATHTTP::STTask *pTask = that->IsThereATaskInProcess();
- if ( pTask ) {
- if ( pTask->taskInfo._bConcurrent ) {
- }
- else {
-
- SATHTTP::STCase* pCase = that->IsCaseScriptProcess(pTask->vtCases);
- if ( pCase ) {
- CPythonExecutor *pExcutor = (CPythonExecutor*)pCase->_pExcutor;
- if ( pExcutor ) {
- if ( pExcutor->IsScriptOver() ) {
-
- pCase->_nExecutionState = SATHTTP::EXECUTED;
-
- if ( pCase->_nExecutionResult == SATHTTP::ABNORMAL ) {
-
- pTask->taskInfo._nExecutionResult = SATHTTP::FAIL;
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "用例脚本异常退出(%s)", pCase->strCaseName.c_str());
- }
-
- that->ReportCaseResult(pTask, pCase);
- }
- else {
-
- ULONGLONG ulCurTickCount = GetTickCount64();
- if ( ulCurTickCount - pExcutor->GetActiveTickCount() > GLOBAL::g_stSATConfig.dwScriptTimeout ) {
-
- pCase->_nExecutionState = SATHTTP::EXECUTED;
-
- pExcutor->EndThread();
-
- pCase->_nExecutionResult = SATHTTP::OVERTIME;
-
- that->ReportCaseResult(pTask, pCase);
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("脚本超时:%s"), pCase->strCaseName.c_str());
- }
- }
- }
- }
- else {
-
- pCase = that->ExecuteFreeCaseScript(pTask);
- if ( NULL == pCase ) {
-
- pTask->taskInfo._nExecutionState = SATHTTP::EXECUTED;
-
- that->ReportTaskFinish(pTask);
-
- that->UploadTaskLog(pTask);
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("没有可执行的用例脚本,任务【%s】"), pTask->Job.strUniqueId.c_str());
- }
- }
- }
- }
- else {
-
- pTask = that->GetFreeTask();
- if ( pTask ) {
-
- if ( pTask->taskInfo._bConcurrent ) {
-
- std::vector<SATHTTP::STCase>::iterator _case = pTask->vtCases.begin();
- for ( ; _case != pTask->vtCases.end(); _case++) {
- if (!_case->_pExcutor) {
- CPythonExecutor *pExcutor = new CPythonExecutor();
- if ( pExcutor ) {
- _case->_pExcutor = pExcutor;
- pExcutor->InitScript(_case->_strScriptPath, _case->_strFileDir + "\\" + _case->_strFileName + ".txt", "");
- pExcutor->StartScript();
-
- _case->_nExecutionState = SATHTTP::INEXECUTED;
- }
- }
- }
-
- pTask->taskInfo._nExecutionState = SATHTTP::INEXECUTED;
- }
- else {
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, _T("\n<===============================================>\n# 1、开始执行任务:%s, 用例数量:%ld#\n<===============================================>\n"),
- pTask->Job.strUniqueId.c_str(),
- pTask->vtCases.size());
-
- SATHTTP::STCase* pCase = that->IsCaseScriptProcess(pTask->vtCases);
- if ( !pCase ) {
-
- that->ExecuteFreeCaseScript(pTask);
- }
- }
-
- that->NotifyTaskStart(pTask);
-
- that->ReportTaskStart(pTask);
-
- that->SetDeviceStatus(pTask->Job.strDeviceId, SATDEV::InUse);
- }
- }
- } while ( WaitForSingleObject(that->m_hEventExcuteScript, 10000) == WAIT_TIMEOUT );
- return 0;
- }
- DWORD CSATExecutor::WathTVPortThread(PVOID lpVoid)
- {
- CSATExecutor *that = (CSATExecutor*)lpVoid;
- if ( !that )
- return 0;
- CSynSerial tv;
- std::string buffer;
- TCHAR szLastPort[10] = {0};
- _tcscpy_s(szLastPort, GLOBAL::g_stSATConfig.szTVPort);
- std::vector<std::string> vtNotifyReboot;
- std::vector<std::string> vtNotifyShutdown;
- DWORD dwTickCount = GetTickCount();
- while( true ) {
-
- GLOBAL::GetIniInfo();
- if ( !GLOBAL::g_stSATConfig.bWatchTVPort ) {
- Sleep(5000);
- continue;
- }
- if ( GetTickCount() - dwTickCount > 5000 ) {
- vtNotifyReboot.clear();
- vtNotifyShutdown.clear();
- dwTickCount = GetTickCount();
- GLOBAL::Split(GLOBAL::g_stSATConfig.szTVReboot, _T(";"), vtNotifyReboot);
- GLOBAL::Split(GLOBAL::g_stSATConfig.szTVShutdown, _T(";"), vtNotifyShutdown);
- }
-
- if ( _tcsicmp(szLastPort, GLOBAL::g_stSATConfig.szTVPort) ) {
- _tcscpy_s(szLastPort, GLOBAL::g_stSATConfig.szTVPort);
-
- tv.CloseSerialPort();
- }
-
- if ( !tv.IsOpen() ) {
- tv.OpenSerialPort(szLastPort, 115200, 8, 0, 1, 0, 1000);
- }
- if ( tv.IsOpen() ) {
- BYTE szBuffer[1024] = {0};
- DWORD dwBuffer = tv.ReadComm(szBuffer, 1024, 1000);
- if ( dwBuffer != 0 ) {
- int nType = 0;
- bool bAbnormal = false;
- buffer = (char*)szBuffer;
- __time64_t gmt = time(NULL);
-
- for ( std::vector<std::string>::iterator it = vtNotifyReboot.begin(); it != vtNotifyReboot.end(); it++ ) {
- if ( _tcsstr(buffer.c_str(), it->c_str()) ) {
- nType = 1;
- bAbnormal = true;
- break;
- }
- }
- if ( !bAbnormal ) {
- for ( std::vector<std::string>::iterator it = vtNotifyShutdown.begin(); it != vtNotifyShutdown.end(); it++ ) {
- if ( _tcsstr(buffer.c_str(), it->c_str()) ) {
- nType = -1;
- bAbnormal = true;
- break;
- }
- }
- }
-
- if ( GLOBAL::g_PyNotify.notify ) {
- __int64 nd = gmt - GLOBAL::g_PyNotify.datetime;
- #ifdef _DEBUG
- TRACE3("判断时间%ld-通知时间%ld=相差时间%ld\n\n", gmt, GLOBAL::g_PyNotify.datetime, nd);
- #endif
- if ( nd < 60) {
-
- if ( (nType == 1 && GLOBAL::g_PyNotify.report_type == _T("reboot")) ||
- (nType == -1 && GLOBAL::g_PyNotify.report_type == _T("shutdown")) )
- {
- bAbnormal = false;
-
- GLOBAL::g_PyNotify.notify = false;
- GLOBAL::g_PyNotify.datetime = 0;
- GLOBAL::g_PyNotify.report_type.clear();
- }
- }
- }
- if (bAbnormal) {
- if ( nType == -1 ) {
-
- if ( Connect("127.0.0.1", 40000) )
- sendSignal("POWER", 1, 1000);
- GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "出现异常关机重启现象");
- }
-
- GLOBAL::PyNotice tlog;
- if ( nType == -1 )
- tlog.report_type = "Abnormal shutdown";
- else if ( nType == 1 )
- tlog.report_type = "Abnormal restart";
- tlog.datetime = gmt;
- struct tm gmtm = {0};
- localtime_s(&gmtm, &gmt);
- TCHAR szDataTime[64] = {0};
- _stprintf_s(szDataTime,_T("Time of exception:%04d-%02d-%02d %02d:%02d:%02d"), gmtm.tm_year + 1900, gmtm.tm_mon+1, gmtm.tm_mday, gmtm.tm_hour, gmtm.tm_min, gmtm.tm_sec);
- tlog.report_data = szDataTime;
-
- GLOBAL::g_PyNotify.notify = false;
- GLOBAL::g_PyNotify.datetime = 0;
- GLOBAL::g_PyNotify.report_type.clear();
- }
- }
- }
- Sleep(200);
- }
- return 0;
- }
- DWORD CSATExecutor::SomkingScriptThread(LPVOID lpVoid)
- {
- CSATExecutor *that = (CSATExecutor*)lpVoid;
- if ( !that ) return 0;
-
- int nIndex = 0;
-
- SATHTTP::STTask task;
- do
- {
- AutoThreadSection ats(&that->m_csSomkingTask);
- if ( that->m_vtSmokingTask.size() == 0 ) {
- continue;
- }
- if ( nIndex >= that->m_vtSmokingTask.size() )
- nIndex = 0;
- task = that->m_vtSmokingTask[nIndex];
- if ( that->SmokeTaskPretreated(task) )
- that->m_vtSmokingTask.erase(that->m_vtSmokingTask.begin()+nIndex);
- else
- nIndex++;
-
- } while (WaitForSingleObject(that->m_hEventSomkingScript, 15000) == WAIT_TIMEOUT);
- return 0;
- }
|