123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #ifndef __SAT_EXECUTOR__
- #define __SAT_EXECUTOR__
- #pragma once
- #include "CritSection.h"
- // 用例xml;
- typedef struct __ST_CASEITEM__
- {
- bool result;
- std::string name;
- std::string data;
- std::vector<std::string> imgs;
- std::string log;
- std::string remark;
- }STCaseItem, *pSTCaseItem;
- class CSATExecutor
- {
- CSATExecutor(void);
- public:
- // 单例对象模式;
- static CSATExecutor* GetInstance()
- {
- static CSATExecutor* pInstance = NULL;
- if ( pInstance == NULL )
- {
- pInstance = new CSATExecutor;
- }
- return pInstance;
- }
- ~CSATExecutor(void);
- protected:
- // 线程控制句柄;
- HANDLE m_hEventHearbeat;
- // 心跳线程句柄;
- HANDLE m_hThreadHearbeat;
- // 线程控制句柄;
- HANDLE m_hEventExcuteScript;
- // 执行线程句柄;
- HANDLE m_hThreadExcuteScript;
- // 是否登录成功;
- BOOL m_bLogin;
- ThreadSection m_csTask;
- std::list<SATParameters::STTask> m_vtTask;
- std::vector<SATParameters::STDevice> m_vtDevice;
- SATParameters::STLoginReq m_stLoginReq;
- SATParameters::STLoginResp m_stLoginResp;
- // 任务是否存在;
- bool IsTaskExist(SATParameters::STTask &task);
- // 是否有任务在执行;
- SATParameters::STTask* IsThereATaskInProcess();
- // 提取未执行的任务;
- SATParameters::STTask* GetFreeTask();
- // 是否有用例脚本在执行;
- SATParameters::STCase* IsCaseScriptProcess(std::vector<SATParameters::STCase> &vtCases);
- // 提取未执行的用例;
- SATParameters::STCase* GetFreeCaseScript(std::vector<SATParameters::STCase> &vtCases);
- // 执行空闲新用例;
- SATParameters::STCase* ExecuteFreeCaseScript(SATParameters::STTask* pTask);
- public:
- // 登录;
- bool Login();
- // 登出;
- void Logout();
- // 更新设备信息;
- bool UpdateDevice();
- // 通知SAT任务开始;
- bool NotifyTaskStart(SATParameters::STTask* pTask);
- // 上传用例图片;
- bool UploadCaseImg(SATParameters::STTask* pTask, SATParameters::STCase *pCase, std::string img);
- // 上传用例结果;
- bool UploadCaseLog(SATParameters::STTask* pTask, SATParameters::STCase *pCase);
- // 上报用例测试项完成;
- bool ReportCaseItemFinish(SATParameters::STTask* pTask, SATParameters::STCase *pCase, STCaseItem &caseItem);
- // 上报用例完成;
- bool ReportCaseFinish(SATParameters::STTask* pTask, SATParameters::STCase *pCase);
- // 上报用例结果;
- bool ReportCaseResult(SATParameters::STTask* pTask, SATParameters::STCase *pCase);
- // 上传任务结果;
- bool UploadTaskLog(SATParameters::STTask* pTask);
- // 上报任务开始;
- bool ReportTaskStart(SATParameters::STTask* pTask);
- // 上报任务完成;
- bool ReportTaskFinish(SATParameters::STTask* pTask);
- // 获取用例xml结果;
- bool GetCaseXMLResult(std::string xmlpath, std::vector<STCaseItem> &vtCaseItem);
- // 其他接口;
- public:
- // 工作开始函数;
- void StartWork();
- // 工作结束函数;
- void EndofWork();
- // 从db中加载任务;
- void LoadTaskInfo();
- // 心跳线程;
- static DWORD WINAPI HearbeatThread(LPVOID lpVoid);
- // 执行线程;
- static DWORD WINAPI ExecuteScriptThread(LPVOID lpVoid);
- };
- #endif //__SAT_EXECUTOR__
|