Forráskód Böngészése

小小重构一波

LiHaoyu 5 éve
szülő
commit
687c8551c6

+ 3 - 2
src/main/java/net/mooctest/www/android_auto_test/controller/SecondaryController.java

@@ -13,7 +13,8 @@ public class SecondaryController {
     SecondaryService secondaryService;
 
     @RequestMapping(value = "/api/v1/secondaryAnalysis", method = RequestMethod.POST)
-    public void runTest(@RequestParam(name = "traceId") String traceId){
-        secondaryService.generateCrowdSourced(traceId);
+    public void runTest(@RequestParam(name = "traceId") String traceId,
+                        @RequestParam(name = "toolName") String toolName){
+        secondaryService.generateCrowdSourced(traceId, toolName);
     }
 }

+ 0 - 10
src/main/java/net/mooctest/www/android_auto_test/services/ApkService.java

@@ -21,14 +21,4 @@ public interface ApkService {
     String downloadApk(String downloadUrl, String traceId);
     
     void saveApkInfo(ApkInfo apkInfo, String apkPath, String traceId);
-
-    /**
-     * @param traceId traceId
-     */
-    void updateTraceStartTime(String traceId);
-
-    /**
-     * @param traceId traceId
-     */
-    void updateTraceEndTime(String traceId);
 }

+ 10 - 26
src/main/java/net/mooctest/www/android_auto_test/services/Impl/ApkServiceImpl.java

@@ -36,19 +36,17 @@ public class ApkServiceImpl implements ApkService {
         try {
             apkInfo = new ApkUtil().getApkInfo(apkPath);
         } catch (Exception e) {
-            throw new ApkParseException("APK 解析失败");
+            throw new ApkParseException(e.getMessage());
         }
         return apkInfo;
     }
 
     @Override
     public String downloadApk(String downloadUrl, String traceId) {
-        if (!downloadUrl.endsWith(".apk")){
+        if (!verifyDownloadUrl(downloadUrl)){
             throw new ApkDownloadException("Download APK failed because this is not an apk");
         }
-        String[] temp = downloadUrl.split("/");
-        String fileName = temp[temp.length-1];
-        String path = AddressUtil.getApkDownloadPath(traceId, fileName);
+        String path = getApkPath(downloadUrl, traceId);
         int downloadTimes = 0;
         while (downloadTimes < Consts.DOWNLOAD_MAX_ATTEMPTS) {
             try {
@@ -58,7 +56,7 @@ public class ApkServiceImpl implements ApkService {
                 e.printStackTrace();
             }
             // 下载失败,10s后重试
-            PrintUtil.print(String.format("Download %s failed. Retry after 10 seconds", fileName), TAG);
+            PrintUtil.print(String.format("Trace %s download failed. Retry after 10 seconds", traceId), TAG);
             try {
                 Thread.sleep(10000);
             } catch (InterruptedException e) {
@@ -69,28 +67,14 @@ public class ApkServiceImpl implements ApkService {
         throw new ApkDownloadException(String.format("Download APK failed after tried %s times.", Consts.DOWNLOAD_MAX_ATTEMPTS));
     }
 
-    @Override
-    public void updateTraceStartTime(String traceId) {
-        updateApkInfoTime(traceId, "startTime");
-    }
-
-    @Override
-    public void updateTraceEndTime(String traceId) {
-        updateApkInfoTime(traceId, "endTime");
+    private boolean verifyDownloadUrl(String downloadUrl){
+        return downloadUrl.endsWith(".apk");
     }
 
-    private void updateApkInfoTime(String traceId, String key){
-        File infoFile = new File(AddressUtil.getApkInfoPath(traceId));
-        Long now = System.currentTimeMillis();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
-        String nowStr = sdf.format(now);
-        try {
-            BufferedWriter writer = new BufferedWriter(new FileWriter(infoFile, true));
-            writer.write(key + "=" + nowStr + "\n");
-            writer.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+    private String getApkPath(String downloadUrl, String traceId){
+        String[] temp = downloadUrl.split("/");
+        String fileName = temp[temp.length-1];
+        return AddressUtil.getApkDownloadPath(traceId, fileName);
     }
 
     @Override

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

@@ -108,7 +108,7 @@ public class AutoTestServiceImpl implements AutoTestService {
             // 更新任务状态为Running
             traceService.updateTraceStatue(traceId, TraceStatus.RUNNING);
             // 更新任务开始时间
-            apkService.updateTraceStartTime(traceId);
+            traceService.updateTraceStartTime(traceId);
             // 开启所有任务线程
             List<CoverageTest> oneTraceTasks = new ArrayList<>(finalDevices.size());
             for (Device device: finalDevices){

+ 6 - 4
src/main/java/net/mooctest/www/android_auto_test/services/Impl/SecondaryServiceImpl.java

@@ -11,25 +11,27 @@ import java.io.File;
 public class SecondaryServiceImpl implements SecondaryService {
 
     @Override
-    public void generateCrowdSourced(String traceId) {
+    public void generateCrowdSourced(String traceId, String toolName) {
         File traceDir = new File(AddressUtil.getTraceDir(traceId));
         if (!traceDir.exists()) {
             throw new HttpNotFoundException("任务不存在或信息已被清理,请重新测试");
         }
-        RunTraceThread t = new RunTraceThread(traceId);
+        RunTraceThread t = new RunTraceThread(traceId, toolName);
         t.start();
     }
 
     private class RunTraceThread extends Thread{
         private String traceId;
-        RunTraceThread(String traceId) {
+        private String toolName;
+        RunTraceThread(String traceId, String toolName) {
             this.traceId = traceId;
+            this.toolName = toolName;
         }
 
         @Override
         public void run(){
             //TODO 执行韦志宾的命令,然后生成文件,发给众测平台
-            System.out.println("Generate Crowdsourced requirements for trace " + traceId);
+            System.out.println("Generate " + toolName + " for trace " + traceId);
             System.out.println("Send Crowdsourced requirements to Mooctest.");
         }
     }

+ 31 - 0
src/main/java/net/mooctest/www/android_auto_test/services/Impl/TraceServiceImpl.java

@@ -7,10 +7,16 @@ import net.mooctest.www.android_auto_test.dao.RedisMappers.TraceStatusMap;
 import net.mooctest.www.android_auto_test.common.constant.enums.TraceStatus;
 import net.mooctest.www.android_auto_test.models.Device;
 import net.mooctest.www.android_auto_test.services.TraceService;
+import net.mooctest.www.android_auto_test.utils.AddressUtil;
 import net.mooctest.www.android_auto_test.vo.DeviceStatusResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -60,4 +66,29 @@ public class TraceServiceImpl implements TraceService {
         }
         return result;
     }
+
+    @Override
+    public void updateTraceStartTime(String traceId) {
+        updateApkInfoTime(traceId, "startTime");
+    }
+
+    @Override
+    public void updateTraceEndTime(String traceId) {
+        updateApkInfoTime(traceId, "endTime");
+    }
+
+
+    private void updateApkInfoTime(String traceId, String key){
+        File infoFile = new File(AddressUtil.getApkInfoPath(traceId));
+        Long now = System.currentTimeMillis();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
+        String nowStr = sdf.format(now);
+        try {
+            BufferedWriter writer = new BufferedWriter(new FileWriter(infoFile, true));
+            writer.write(key + "=" + nowStr + "\n");
+            writer.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 1 - 1
src/main/java/net/mooctest/www/android_auto_test/services/SecondaryService.java

@@ -2,5 +2,5 @@ package net.mooctest.www.android_auto_test.services;
 
 public interface SecondaryService{
 
-    public void generateCrowdSourced(String traceId);
+    public void generateCrowdSourced(String traceId, String toolName);
 }

+ 10 - 0
src/main/java/net/mooctest/www/android_auto_test/services/TraceService.java

@@ -15,4 +15,14 @@ public interface TraceService {
     void setTraceDevices(String traceId, List<Device> deviceList);
 
     List<DeviceStatusResult> getTraceDeviceStatus(String traceId);
+
+    /**
+     * @param traceId traceId
+     */
+    void updateTraceStartTime(String traceId);
+
+    /**
+     * @param traceId traceId
+     */
+    void updateTraceEndTime(String traceId);
 }

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

@@ -98,7 +98,7 @@ public class TraceDaemon extends Thread{
                 //TODO 生成报告之后,将报告发给企业版主站
                 sendReport();
             }
-            apkService.updateTraceEndTime(traceId);
+            traceService.updateTraceEndTime(traceId);
             PrintUtil.print(String.format("Trace %s is done!", traceId), TAG);
             traceService.updateTraceStatue(traceId, TraceStatus.FINISH);
         }