Browse Source

任务meta信息不再包括是否需要回传报告字段,反正生成之后都会上传到oss,自己去拿呗

LiHaoyu 5 years ago
parent
commit
ce165fe3ba

+ 3 - 1
src/main/java/net/mooctest/www/android_auto_test/common/constant/enums/TraceStatus.java

@@ -37,7 +37,9 @@ public enum TraceStatus {
 
     FAILED("6", "失败"),
 
-    NO_DEVICES("7", "无空闲设备");
+    NO_DEVICES("7", "无空闲设备"),
+
+    UPLOAD_REPORT_FAILED("8", "报告上传失败");
 
 
     private String code;

+ 7 - 0
src/main/java/net/mooctest/www/android_auto_test/common/exceptions/UploadReportException.java

@@ -0,0 +1,7 @@
+package net.mooctest.www.android_auto_test.common.exceptions;
+
+public class UploadReportException extends RuntimeException {
+    public UploadReportException(String msg){
+        super(msg);
+    }
+}

+ 0 - 1
src/main/java/net/mooctest/www/android_auto_test/common/runner/MyApplicationRunner.java

@@ -112,7 +112,6 @@ public class MyApplicationRunner implements ApplicationRunner {
                 PrintUtil.print("Start test daemon thread.", TAG, device.getUdid());
                 TraceDaemon traceDaemon = new TraceDaemon(traceId, limitTime, oneTraceTasks,
                         traceMetaInfo.isNeedGenerateReport(),
-                        traceMetaInfo.isNeedSendReport(),
                         traceMetaInfo.getReportType());
                 traceDaemon.setName(Consts.DAEMON_THREAD_NAME_PREFIX + traceId);
                 traceDaemon.start();

+ 0 - 1
src/main/java/net/mooctest/www/android_auto_test/services/Impl/AutoTestServiceImpl.java

@@ -124,7 +124,6 @@ public class AutoTestServiceImpl implements AutoTestService {
             //启动监控线程监控该trace中所有执行线程
             TraceDaemon traceDaemon = new TraceDaemon(traceId,timeout, oneTraceTasks,
                     true,
-                    false,
                     traceInfo.getReportType());
             traceDaemon.setName(Consts.DAEMON_THREAD_NAME_PREFIX + traceId);
             traceDaemon.start();

+ 2 - 0
src/main/java/net/mooctest/www/android_auto_test/utils/CoverageTest.java

@@ -150,6 +150,8 @@ public class CoverageTest extends Thread{
             uninstall(true);
             // 停止appium server
             stopAppiumServer(this.port);
+            // 重新连接设备的adb
+            reconnectDeviceAdb();
             PrintUtil.print("Device " + udid + ", test has finished", TAG, udid);
             boolean r = deviceService.endRunDevice(udid);
             if (!r){

+ 18 - 29
src/main/java/net/mooctest/www/android_auto_test/utils/TraceDaemon.java

@@ -10,6 +10,7 @@ import net.mooctest.www.android_auto_test.common.BeanFactory;
 import net.mooctest.www.android_auto_test.common.constant.Consts;
 import net.mooctest.www.android_auto_test.common.constant.enums.DeviceStatus;
 import net.mooctest.www.android_auto_test.common.constant.enums.TraceStatus;
+import net.mooctest.www.android_auto_test.common.exceptions.UploadReportException;
 import net.mooctest.www.android_auto_test.services.ApkService;
 import net.mooctest.www.android_auto_test.services.DeviceService;
 import net.mooctest.www.android_auto_test.services.OssService;
@@ -37,16 +38,14 @@ public class TraceDaemon extends Thread{
     private List<CoverageTest> deviceThreads;
     private boolean stopImmediately = false;
     private boolean needGenerateReport;
-    private boolean needSendReport;
     private String reportType;
 
     public TraceDaemon(String traceId, int minutes, List<CoverageTest> deviceThreads,
-                       boolean needGenerateReport, boolean needSendReport, String reportType){
+                       boolean needGenerateReport,  String reportType){
         this.traceId = traceId;
         this.minutes = minutes;
         this.deviceThreads = deviceThreads;
         this.needGenerateReport = needGenerateReport;
-        this.needSendReport = needSendReport;
         this.reportType = reportType;
         traceService = (TraceService) BeanFactory.getBean(TraceService.class);
         ossService = (OssService) BeanFactory.getBean(OssService.class);
@@ -91,16 +90,20 @@ public class TraceDaemon extends Thread{
         } catch (InterruptedException e) {
             e.printStackTrace();
         } finally {
-            if (needGenerateReport) {
-                generateReport();
-            }
-            if (needSendReport) {
-                //TODO 生成报告之后,将报告发给企业版主站
-                sendReport();
+            try {
+                if (needGenerateReport) {
+                    generateReport();
+                }
+                traceService.updateTraceEndTime(traceId);
+                PrintUtil.print(String.format("Trace %s is done!", traceId), TAG);
+                traceService.updateTraceStatue(traceId, TraceStatus.FINISH);
+            }catch (UploadReportException e){
+                // 按理说不应该失败,但是还是加上
+                traceService.updateTraceEndTime(traceId);
+                PrintUtil.print(String.format("Trace %s report upload failed.", traceId), TAG);
+                traceService.updateTraceStatue(traceId, TraceStatus.UPLOAD_REPORT_FAILED);
             }
-            traceService.updateTraceEndTime(traceId);
-            PrintUtil.print(String.format("Trace %s is done!", traceId), TAG);
-            traceService.updateTraceStatue(traceId, TraceStatus.FINISH);
+
         }
     }
 
@@ -128,8 +131,7 @@ public class TraceDaemon extends Thread{
             String command = String.format("java -jar tasks/%s.jar %s", reportType, traceId);
             String result = OsUtil.runCommand(command);
             PrintUtil.print(result, TAG);
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (Exception ignored) {
         }
         PrintUtil.print(String.format("Upload %s report json file", reportType), TAG);
         // 上传data.json文件
@@ -139,7 +141,7 @@ public class TraceDaemon extends Thread{
         // 上传失败,重试5次
         while (path == null && retryTimes < Consts.UPLOAD_OSS_MAX_ATTEMPTS){
             try {
-                Thread.sleep(3000);
+                Thread.sleep(5000);
                 path = ossService.uploadFileToTraceDir(data, traceId, Consts.REPORT_FILE_NAME);
             } catch (Exception e) {
                 e.printStackTrace();
@@ -152,23 +154,10 @@ public class TraceDaemon extends Thread{
             PrintUtil.print(String.format("Trace %s's data upload success.", traceId), TAG);
         }else {
             PrintUtil.print(String.format("Trace %s's data upload failed after tried 5 times.", traceId), TAG);
+            throw new UploadReportException("");
         }
     }
 
-    private void sendReport(){
-        System.out.println("Send report to Mooctest.");
-//        RestTemplate rt = new RestTemplate();
-//        HttpHeaders headers = new HttpHeaders();
-//        headers.setContentType(MediaType.APPLICATION_JSON);
-//        TraceStatusResult traceResult = new TraceStatusResult();
-//        traceResult.setTraceId(traceId);
-//        String downloadUrl = ossService.getDadaJsonDownloadPath(traceId);
-//        traceResult.setDownloadUrl(downloadUrl);
-//        HttpEntity<TraceStatusResult> httpEntity = new HttpEntity<>(traceResult, headers);
-//        String url = "http://localhost:15926/api/v1/mock/TraceInfo";
-//        rt.exchange(url, HttpMethod.POST, httpEntity, String.class);
-    }
-
     /**
      * @return 该trace下所有任务是否都已完成
      */

+ 0 - 1
src/main/java/net/mooctest/www/android_auto_test/vo/TraceMetaInfo.java

@@ -14,6 +14,5 @@ public class TraceMetaInfo {
     private int limitTime = 20;
     private List<String> selectDevices;
     private boolean needGenerateReport = false;
-    private boolean needSendReport = false;
     private String reportType = "BugReport";
 }