123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- // 下列 ifdef 块是创建使从 DLL 导出更简单的
- // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SATHTTP_EXPORTS
- // 符号编译的。在使用此 DLL 的
- // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
- // SATHTTP_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
- // 符号视为是被导出的。
- #ifdef SATHTTP_EXPORTS
- #define SATHTTP_API __declspec(dllexport)
- #else
- #define SATHTTP_API __declspec(dllimport)
- #endif
- // 此类是从 SATHTTP.dll 导出的
- class SATHTTP_API CSATHTTP
- {
- std::string url;
- public:
- CSATHTTP(void);
- // TODO: 在此添加您的方法。
- };
- namespace SATHTTP{
- // 执行状态;
- enum _EXECUTION_STATE_ {
- // 未执行;
- UNEXECUTED,
- // 执行中;
- INEXECUTED,
- // 已执行;
- EXECUTED,
- };
- // 执行结果;
- enum _EXECUTION_RESULT_ {
- // 无;
- NONE,
- // 成功;
- SUCCESS,
- // 失败;
- FAIL,
- // 异常;
- ABNORMAL,
- // 超时;
- OVERTIME
- };
- //////////////////////////////////////////////////////////////////////////
- // 通用的结构体;
- typedef struct __ST_DEVICE__{
- std::string strStatus; // 0表示设备空闲; 1表示设备忙碌
- std::string strDeviceSerial;
- std::string strHardwareVersion;
- std::string strManu;
- std::string strDeviceMac;
- std::string strLastJobStartTime;
- std::string strLastTimeBreak;
- std::string strComments;
- std::string strCPU;
- std::string strSoftwareVersion;
- std::string strPhoneNumber;
- std::string strLastJobFinishTime;
- std::string strMemory;
- std::string strModel;
- std::string strLastJob;
- std::string strLastTimeConnected;
- std::string strElectric;
- }STDevice, *pSTDevice;
- typedef struct __ST_RESPONE__
- {
- std::string strCode;
- std::string strMessage;
- std::string strStr;
- }STRespone, *pSTRespone;
- //////////////////////////////////////////////////////////////////////////
- // 1、登录SAT的请求参数;
- typedef struct __ST_LOGIN_REQ__{
- std::string strUserName;
- std::string strStatus; // 0:表示请求登录; 1:表示请求登出;
- std::string strDeleteStatus;
- std::string strIP;
- std::string strMemory;
- std::string strStorage;
- std::string strConnectTime;
- std::string strExecuteName;
- std::string strMAC;
- std::string strDisconnectTime;
- std::string strPassword;
- std::string strCPU;
- }STLoginReq, *pSTLoginReq;
- // 登录SAT返回结果;
- typedef struct __ST_LOGIN_RESP__:__ST_RESPONE__{
- int nPortCount;
- int nCompanyId;
- std::string strRunnerToken;
- }STLoginResp, *pSTLoginResp;
- //////////////////////////////////////////////////////////////////////////
- // 2、更新设备信息的请求参数;
- typedef struct __ST_UPDATE_DEVICE_REQ__
- {
- std::string strStatus; // 0:表示空闲; 1:离线; 2:表示忙碌; 3=?; 4:任务异常?; 5=忙碌中?;
- std::string strUserName;
- std::string strIP;
- std::string strStorage;
- std::string strRunnerName;
- std::string strMAC;
- std::string strReportType; // 这个reportType具体意义不明;
- std::string strStartTime;
- std::string strMemory;
- std::string strEndTime;
- std::string strCPU;
- std::vector<STDevice> devicelist;
- }STUpdateDeviceReq, *pSTUpdateDeviceReq;
- typedef struct __ST_UPDATE_DEVICE_RESP__:__ST_RESPONE__
- {
-
- }STUpdateDeviceResp, *pSTUpdateDeviceResp;
- //////////////////////////////////////////////////////////////////////////
- // 3、SAT心跳请求参数;
- typedef struct __ST_HEARTBEAT_REQ__{
- std::string strUserName;
- std::string strRunnerMac;
- std::vector<STDevice> devicelist;
- }STHeartbeatReq, *pSTHeartbeatReq;
- typedef struct __ST_CASE__
- {
- int _nCaseStep;
- // 轮数;
- std::string _strRoundNum;
- std::string strIndex; // 用例执行顺序编号(在一个任务中,用例是有执行顺序的);
- std::string strCaseName; // 用例名称(脚本名);
- std::string strMainFilePath; // 用例下载地址;
- std::string strId; // 用例ID;
- std::string strCaseType; // 用例类型(暂时只有Python类型);
- // 执行器对象;
- void *_pExcutor;
- // Python子进程ID;
- DWORD __dwPythonPID;
- // 执行状态;
- int _nExecutionState;
- // 执行结果;
- int _nExecutionResult;
- // 脚本保存路径;
- std::string _strFileDir; // 脚本保存的路径;
- std::string _strFileName; // 脚本文件名(无扩展名后缀);
- std::string _strScriptPath; // 脚本完整文件名(_strFileDir + _strFileName + ".py");
- // 执行开始时间;
- ULONGLONG _ulStartTickCount;
- std::string _strStartTime;
- std::string _strEndTime;
- // 用例的日志文件;
- std::string _strCaseLog;
- __ST_CASE__() {
- _nCaseStep = 1;
- _pExcutor = NULL;
- __dwPythonPID = 0;
- // 0表示未执行;1表示执行中;2表示已执行;
- _nExecutionState = UNEXECUTED;
- // 默认空;
- _nExecutionResult = NONE;
- // 轮数默认为1;
- _strRoundNum = _T("1");
- }
- }STCase, *pSTCase;
- typedef struct __ST_JOB__
- {
- std::string strCloudPort;
- std::string strExecuteIP;
- std::string strMonkeyPctSysKeys;
- std::string strRedRatDeviceName;
- std::string strExecuteId;
- // std::vector<std::string> vtRunSceneParams;
- std::string strMonkeyPctAppSwitch;
- std::string strDeviceId;
- std::string strLoopNumber;
- std::vector<std::string> vtEmails;
- std::string strTaskType; // 1=表示SAT任务可执行, 2=表示SAT上停止了任务,请在执行完当前脚本后退出; 3=表示SAT上停止任务,并要求马上停止;
- std::string strMonkeyFrequency;
- std::string strCloudVersion;
- std::string strTaskInstanceName;
- std::string strRepeatRunTime;
- std::string strMonkeyTime;
- std::string strOutEquipmentId;
- std::string strPoweroff;
- std::string strFilePath;
- std::string strScriptFailRepeart;
- std::string strTaskInstanceId;
- std::string strUserId;
- std::string strDiffTaskInstanceFlag;
- std::string strBusCode;
- std::string strRound;
- std::string strControlType;
- std::string strMonkeyPctMajornav;
- std::string strTaskName;
- std::string strMonkeyType;
- std::string strMonkeyDictate;
- std::string strDetectedDeviceName;
- std::string strExecuteName;
- std::string strProjectName;
- std::string strProjectId;
- std::string strUniqueId;
- std::string strTaskId;
- std::string strSoftwareVersion;
- std::string strMonkeyPctNav;
- }STJob, *pSTJob;
- typedef struct __ST_SOMKING_CYCLE__
- {
- int nType; // 0:立即执行, 1:每天, 2:每周, 3:每月x日;
- int nWeek; // 星期:0~6
- int nDay; // 日:1~31
- std::string strTime; // 时间,格式:"时:分"
- }STSomkingCycle, *pSTSomkingCycle;
- typedef struct __ST_TASKINFO__
- {
- // 任务Case用例是否支持并发;
- bool _bConcurrent;
- std::string strInstanceName;
- std::string strExecutionStatus;
- std::string strInstanceType;
- int nExecuteId;
- std::string strRequestIP;
- std::string strTaskUseType;
- int nDeviceId;
- std::vector<std::string> vtEmails;
- std::string strDiffTaskInstanceFlag;
- std::string strTaskType;
- int nInstanceId;
- std::string strProgress;
- // 任务执行状态;
- int _nExecutionState;
- // 任务执行结果;
- int _nExecutionResult;
- std::string strStartTime;
- std::string strStopTime;
- std::string strTaskName;
- int Id; // 注意:对应__ST_NOTIFY_JOB_START_REQ__的strInstanceId,而非__ST_TASK__.nInstanceId;
- int fd;
- int nTaskId;
- //std::string strTaskId;
- // 任务日志;
- std::string _strTaskLog;
- // 服务器名称;
- //std::string strBuildServerName;
- // 冒烟任务执行周期json;
- //std::string strSomkingCycle;
- STSomkingCycle stSomkingCycle;
- __ST_TASKINFO__() {
- _bConcurrent = false;
- // 0表示未执行;1表示执行中;2表示执行完毕;
- _nExecutionState = UNEXECUTED;
- // 默认成功;
- _nExecutionResult = SUCCESS;
- }
- }STTaskInfo, *pSTTaskInfo;
- //////////////////////////////////////////////////////////////////////////
- // 升级包信息;
- typedef struct __ST_UPGRADE_IMG_INFO__{
- std::string strSoftwareName;
- std::string strSoftwareNumber;
- std::string strSoftwareVersion;
- std::string strProjectId;
- }STUpgradeImgInfo, *pSTUpgradeImgInfo;
- typedef struct __ST_TASK__
- {
- int _curRound;
- int _curCaseIndex;
- int _roundSize; // 1轮有多少用例;
- int _roundCount; // 有多少轮;
- STTaskInfo taskInfo;
- STJob Job;
- STUpgradeImgInfo SoftwareInfo; // 软件信息;
- std::vector<STCase> vtCases;
- __ST_TASK__(){
- _curRound = 1;
- _curCaseIndex = 1;
- }
- }STTask, *pSTTask;
- // SAT心跳返回结果;
- typedef struct __ST_HEARTBEAT_RESP__:__ST_RESPONE__{
- std::vector<STTask> vtTask;
- }STHeartbeatResp, *pSTHeartbeatResp;
- //////////////////////////////////////////////////////////////////////////
- // 4、通知SAT任务开始;
- typedef struct __ST_NOTIFY_JOB_START_REQ__
- {
- std::string strInstanceId;
- std::string strSignalImageUrl;
- std::string strDeviceId;
- std::string strTaskId;
- std::string strExecuteId;
- std::string strTaskType;
- }STNotifyJobStartReq, *pSTNotifyJobStartReq;
- typedef struct __ST_NOTIFY_JOB_START_RESP__:__ST_RESPONE__
- {
-
- }STNotifyJobStartResp, *pSTNotifyJobStartResp;
- //////////////////////////////////////////////////////////////////////////
- // 5、SetResultList;
- typedef struct __ST_JOB_PROCESS_REQ__
- {
- std::string strResultState; // 空表示Runner开始执行任务; 1=表示Runner已执行完成任务;
- std::string strCaseScene;
- std::string strCaseStep;
- std::string strApkMD5;
- std::string strCrashTime;
- std::string strRunnerId;
- std::string strCPUInfo;
- std::string strRunnedActionNameList;
- std::string strArtificialResult;
- std::string strArtificialModify;
- std::string strRunnerName;
- std::string strTaskType;
- std::string strCaseRepeat;
- std::string strApplicationGroup;
- std::string strInstanceId;
- std::string strCaseId;
- std::string strProgress;
- std::string strReusltMessage;
- std::string strJobRepeat;
- std::string strScreenShot;
- std::string strStartTime;
- std::string strCrashNumber;
- std::string strCaseName;
- std::string strFailedReason;
- std::string strImgName;
- std::string strCaseIndex;
- std::string strDeviceId;
- std::string strSceneIndex;
- std::string strTaskId;
- std::string strAnalysis;
- std::string strDevnceName;
- std::string strInfoType;
- std::string strMemoryInfo;
- std::string strEndTime;
- std::string strRoundNumber;
- std::string strResultType;
- std::string strOperationStep;
- std::string strInstanceType;
- }STJobProcessReq, *pSTJobProcessReq;
- typedef struct __ST_JOB_PROCESS_RESP__:__ST_RESPONE__
- {
- std::string strIsDelete;
- }STJobProcessResp, *pSTJobProcessResp;
- //////////////////////////////////////////////////////////////////////////
- // 6、获取脚本下载地址;
- typedef struct __ST_SCRIPURL_RESP__
- {
- std::string strCaseType;
- std::string strCode;
- std::string strURL;
- std::string strMessage;
- std::string strProjectId;
- // 脚本保存路径;
- std::string _strFileDir; // 脚本子目录;
- std::string _strFileName; // 脚本文件名;
- std::string _strScripFile; // 完成的本地脚本保存目录;
- }STScriptUrlResp,*pSTScriptUrlResp;
- //////////////////////////////////////////////////////////////////////////
- // 7、保存用例脚本或任务日志;
- typedef struct __ST_STOP_TASK_RESP__:__ST_RESPONE__
- {
- std::string strData;
- }STStopTaskResp, *pSTStopTaskResp;
- //////////////////////////////////////////////////////////////////////////
- // 8、保存用例脚本或任务日志;
- typedef struct __ST_SAVE_LOG_REQ__
- {
- std::string strUserId;
- std::string strFileType;
- std::string strCaseId;
- std::string strTaskId;
- std::string strExecuteId;
- std::string strRoundNum; // 轮数:第几轮日志;
- std::string strUploads; // 要上传的文件;
- }STSaveLogReq, *pSTSaveLogReq;
- typedef struct __ST_SAVE_LOG_RESP__:__ST_RESPONE__
- {
- std::string strData;
- }STSaveLogResp, *pSTSaveLogResp;
- //////////////////////////////////////////////////////////////////////////
- // 8、保存用例脚本或任务日志;
- typedef struct __ST_SAVE_FILE_REQ__
- {
- std::string strRoundNum;
- std::string strCaseRepeat;
- std::string strJobRepeat;
- std::string strInstanceId;
- std::string strDeviceId;
- std::string strExecuteId;
- std::string strTaskName;
- std::string strSceneIndex;
- std::string strTaskId;
- std::string strCaseId;
- std::string strDeviceName;
- std::string strRunnerName;
- std::string strRunnerIP;
- std::string strRunnerMAC;
- std::string strCaseName;
- std::string strCaseIndex;
- std::string strTaskRepeat;
- std::string strBusCode;
- std::string strFileType;
- std::string strCaseStep;
- // 要上传的文件;
- std::string strUploads;
- }STSaveFileReq, *pSTSaveFileReq;
- typedef struct __ST_SAVE_FILE_RESP__:__ST_RESPONE__
- {
- std::string strData;
- }STSaveFileResp, *pSTSaveFileResp;
- //////////////////////////////////////////////////////////////////////////
- // 9、保存用例图片;
- typedef struct __ST_SAVE_IMG_REQ__
- {
- std::string strInstanceId;
- std::string strDeviceId;
- std::string strRoundNum;
- std::string strCaseId;
- std::string strCaseStep;
- std::string strImgType;
- std::string strExecuteId;
- std::string strCaseRepeat;
- std::string strJobRepeat;
- // 要上传的文件;
- std::string strUploads;
- }STSaveImgReq, *pSTSaveImgReq;
- typedef struct __ST_SAVE_IMG_RESP__:__ST_RESPONE__
- {
- std::string strData;
- }STSaveImgResp, *pSTSaveImgResp;
- //////////////////////////////////////////////////////////////////////////
- // 10、编译服务器信息
- typedef struct __ST_BUILD_SERVER_INFO__
- {
- std::string strBuildServerName; // 编译服务器名;
- std::string strBuildServerAddress; // 服务器地址;
- int nBuildServerPort; // 服务器ssh端口号;
- std::string strBuildServerUser; // 服务器用户名(sftp);
- std::string strBuildServerPwd; // 服务器用户密码;
- std::string strBuildServerImgPath; // 服务器升级包路径;
- }STBuildServerInfo, *pSTBuildServerInfo;
- }
- extern SATHTTP_API int nSATHTTP;
- // 登录接口;
- SATHTTP_API int Login(std::string url, const SATHTTP::STLoginReq &stLoginReq, SATHTTP::STLoginResp &stLoginResp) throw();
- // 登录完后,必须向服务器更新设备信息,否则SAT上执行任务时无法更新Runner出来;
- SATHTTP_API int UpdateDeviceMessage(std::string url, const SATHTTP::STUpdateDeviceReq &stUpdateDeviceReq, SATHTTP::STUpdateDeviceResp &stUpdateDeviceResp) throw();
- // 更新完设备信息后,向服务器查询任务;
- SATHTTP_API int Heartbeat(std::string url, const SATHTTP::STHeartbeatReq &stHeartbeatReq, SATHTTP::STHeartbeatResp &stHeartbeatResp) throw();
- // 从心跳包中获取到任务后,通知SAT任务开始(变更SAT上的任务状态);
- // 注意坑:STNotifyJobStartReq.strInstanceId引用的是STTask.Id而非STTask.nInstanceId
- SATHTTP_API int SetResult(std::string url, const SATHTTP::STNotifyJobStartReq &stNotifyJobStartReq, SATHTTP::STNotifyJobStartResp &stNotifyJobStartResp) throw();
- // 通知SAT用例脚本已开始;
- SATHTTP_API int SetResultList(std::string url, const SATHTTP::STJobProcessReq &stJobProcessReq, SATHTTP::STJobProcessResp &stJobProcessResp) throw();
- SATHTTP_API int GetCaseFileListUrl(std::string url, std::string strCaseId, SATHTTP::STScriptUrlResp &stScriptUrlResp) throw();
- SATHTTP_API int DownloadScript(std::string url, std::string strCaseId, std::string strSaveDir, SATHTTP::STScriptUrlResp &stScriptUrlResp) throw();
- // 停止Runner上的任务;
- // 注意:strInstnaceId对应的是STTask.nInstanceId;
- SATHTTP_API int StopTaskFromRunner(std::string url, std::string strInstnaceId, SATHTTP::STStopTaskResp &stStopTaskResp) throw();
- SATHTTP_API int SaveCaseOrTaskLog(std::string url, const SATHTTP::STSaveLogReq &stSaveLogReq, SATHTTP::STSaveLogResp &stSaveLogResp) throw();
- SATHTTP_API int SaveResultFile(std::string url, const SATHTTP::STSaveFileReq &stSaveFileReq, SATHTTP::STSaveFileResp &stSaveFileResp) throw();
- SATHTTP_API int SaveResultImg(std::string url, const SATHTTP::STSaveImgReq &stSaveImgReq, SATHTTP::STSaveImgResp &stSaveImgResp) throw();
- SATHTTP_API int GetIdNumber();
- SATHTTP_API int GetPyCaseInfo();
- SATHTTP_API int GetCaseInfo();
|