Package cn.baiweigang.qtaf.dispatch

Source Code of cn.baiweigang.qtaf.dispatch.ExecTask

package cn.baiweigang.qtaf.dispatch;

import cn.baiweigang.qtaf.dispatch.report.TestReport;
import cn.baiweigang.qtaf.dispatch.run.TestRunInfo;
import cn.baiweigang.qtaf.dispatch.run.TestngRunSingle;
import cn.baiweigang.qtaf.toolkit.util.CommUtils;


/**
* 任务执行入口
* @author @<a href='http://weibo.com/bwgang'>bwgang</a><br/>
*
*/
public class ExecTask {

  private TestngRunSingle task;
  private TestRunInfo runInfo;
  private TestReport report;
 
  /**
   * 构造函数
   */
  public ExecTask() {
    DispatchConf.writeConf();//检查配置文件,不存在则写入
    task    = TestngRunSingle.getInstance();
    report  = new TestReport();
  }
  /**
   * 任务执行
   * @return TestReport
   */
  public TestReport Exec() {
    setResNoAndMsg(-1,"未知错误");
    //传入参数校验
    if (runInfo.getCaseList() == null || runInfo.getCaseList().size()<1) {
      setResNoAndMsg(-100,"待执行的用例不存在");
      return report;
    }
    //执行用例之前清空用例执行相关目录(XML配置文件、TestNG输出目录)
    DispatchConf.delTmpPath();
    Long startTimeMS=System.currentTimeMillis();
    Long startTime=startTimeMS/1000;
    int sumTime=0;//记录等待时长,单位秒
    while (true) {//循环判断开始
      //获取等待的时间
      sumTime=(int) (System.currentTimeMillis()/1000-startTime);
      if (!task.getFlag()) {  //判断当前是否有任务运行   
        try {
          //运行任务 设置任务信息
          task.setRunInfo(this.runInfo);
          report= task.execTask();
          report.setSumTime(System.currentTimeMillis()-startTimeMS);
          return report;//执行完毕后返回测试报告信息
        } catch (Exception e) {
          //运行异常清空目录
          DispatchConf.delTmpPath();
          setResNoAndMsg(-202,"后台运行任务出错,请检查日志信息");
          return report;
        }
      }
      if (sumTime>600) {//设置等待超时时间600秒
//        log.info("已等待"+sumTime+"秒,超时退出");
        setResNoAndMsg(-203,"任务等待超时,已等待"+sumTime+"秒");
        return report;
      }
      //等待10秒后再试试
//      log.info("后台用例执行中。。。等待10秒后再尝试执行");
      CommUtils.sleep(10000);
    }//死循环判断完毕     
  }
 
  /**
   * 设置任务运行配置信息
   * @param runInfo
   */
  public void setRunInfo(TestRunInfo runInfo) {
    this.runInfo = runInfo;
  }
 
  private void setResNoAndMsg(int resNo,String resMsg) {
    this.report.setResNo(resNo);
    this.report.setResMsg(resMsg);
  }
}
TOP

Related Classes of cn.baiweigang.qtaf.dispatch.ExecTask

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.