瀏覽代碼

1. 添加强行停止某台设备的接口
2. 设备测试结束后,手动or超时停止时,会reconnect adb

LiHaoyu 5 年之前
父節點
當前提交
427a709a58

+ 5 - 0
src/main/java/net/mooctest/www/android_auto_test/controller/AutoTestController.java

@@ -45,4 +45,9 @@ public class AutoTestController {
     public boolean stopTraceTasks(@RequestParam(name = "traceId") String traceId){
         return autoTestService.stopTrace(traceId);
     }
+
+    @RequestMapping(value = "/api/v1/stopDevice", method = RequestMethod.DELETE)
+    public boolean stopDevice(@RequestParam(name = "udid") String udid){
+        return autoTestService.stopDevice(udid);
+    }
 }

+ 2 - 0
src/main/java/net/mooctest/www/android_auto_test/services/AutoTestService.java

@@ -27,4 +27,6 @@ public interface AutoTestService {
      * @return 成功返回true,失败抛出异常
      */
     boolean stopTrace(String traceId);
+
+    boolean stopDevice(String udid);
 }

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

@@ -13,6 +13,7 @@ import net.mooctest.www.android_auto_test.common.exceptions.HttpNotFoundExceptio
 import net.mooctest.www.android_auto_test.common.exceptions.NoFreeDeviceException;
 import net.mooctest.www.android_auto_test.models.Device;
 import net.mooctest.www.android_auto_test.services.*;
+import net.mooctest.www.android_auto_test.utils.OsUtil;
 import net.mooctest.www.android_auto_test.utils.PrintUtil;
 import net.mooctest.www.android_auto_test.vo.DeviceStatusResult;
 import net.mooctest.www.android_auto_test.vo.TraceMetaInfo;
@@ -166,4 +167,19 @@ public class AutoTestServiceImpl implements AutoTestService {
         }
         throw new HttpNotFoundException(String.format("TraceId [%s] 不存在", traceId));
     }
+
+    @Override
+    public boolean stopDevice(String udid) {
+        new Thread(() -> {
+            try {
+                String command = String.format("adb -s %s reconnect", udid);
+                OsUtil.runCommand(command);
+                Thread.sleep(5000);
+                OsUtil.runCommand(OsUtil.getCmd() + " Commands/stopAppium.sh " + udid);
+            } catch (Exception e){
+                e.printStackTrace();
+            }
+        }).start();
+        return true;
+    }
 }

+ 7 - 3
src/main/java/net/mooctest/www/android_auto_test/utils/CoverageTest.java

@@ -151,7 +151,10 @@ public class CoverageTest extends Thread{
             // 停止appium server
             stopAppiumServer(this.port);
             // 重新连接设备的adb
-            reconnectDeviceAdb();
+            try{
+                Thread.sleep(3000);
+                reconnectDeviceAdb();
+            }catch (Exception ignored){}
             PrintUtil.print("Device " + udid + ", test has finished", TAG, udid);
             boolean r = deviceService.endRunDevice(udid);
             if (!r){
@@ -469,9 +472,10 @@ public class CoverageTest extends Thread{
             script.endScript();
         }
         try {
-            Thread.sleep(10000);
+            Thread.sleep(2000);
+            reconnectDeviceAdb();
+            Thread.sleep(3000);
         } catch (Exception ignored) { }
-//        reconnectDeviceAdb();
         stopAppiumServer(this.port);
     }