|
@@ -7,10 +7,7 @@ import net.mooctest.www.android_auto_test.common.constant.enums.DeviceStatus;
|
|
|
import net.mooctest.www.android_auto_test.models.Device;
|
|
|
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.utils.AddressUtil;
|
|
|
-import net.mooctest.www.android_auto_test.utils.CoverageTest;
|
|
|
-import net.mooctest.www.android_auto_test.utils.PrintUtil;
|
|
|
-import net.mooctest.www.android_auto_test.utils.TraceDaemon;
|
|
|
+import net.mooctest.www.android_auto_test.utils.*;
|
|
|
import net.mooctest.www.android_auto_test.vo.TraceMetaInfo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -46,10 +43,6 @@ public class MyApplicationRunner implements ApplicationRunner {
|
|
|
return;
|
|
|
}
|
|
|
System.out.println("轮询获取任务信息");
|
|
|
- //TODO 先获取当前空闲设备
|
|
|
- // 然后带着设备信息去发请求,获取任务信息
|
|
|
- // 获取到任务信息后,起一个线程去跑任务
|
|
|
- // 如果有一些额外配置,则触发生成报告的操作,然后告诉企业版,报告好了
|
|
|
runDevicesTasks();
|
|
|
}
|
|
|
|
|
@@ -58,17 +51,22 @@ public class MyApplicationRunner implements ApplicationRunner {
|
|
|
// 获取目前在线设备且可用的设备
|
|
|
List<Device> deviceList = deviceService.getOnlineDeviceList();
|
|
|
for (Device device: deviceList){
|
|
|
- DeviceStatus deviceStatus = deviceService.getDeviceStatus(device.getUdid());
|
|
|
- if (deviceStatus != DeviceStatus.FREE){
|
|
|
- PrintUtil.print("Device is running, continue.", TAG, device.getUdid());
|
|
|
+ boolean r = deviceService.occupyDevice(device.getUdid());
|
|
|
+ if (!r){
|
|
|
+ PrintUtil.print("Occupy device failed, continue.", TAG, device.getUdid());
|
|
|
continue;
|
|
|
}
|
|
|
- //TODO 这里用CAS去更新device的状态
|
|
|
- // 或者把接收任务的口子关了。。
|
|
|
- device = buildDevice(device);
|
|
|
+ device.build();
|
|
|
PrintUtil.print("Get TraceInfo.", TAG, device.getUdid());
|
|
|
TraceMetaInfo traceMetaInfo = getTraceMetaInfo(device);
|
|
|
- if (traceMetaInfo == null){
|
|
|
+ if (traceMetaInfo == null
|
|
|
+ || traceMetaInfo.getDownloadUrl() == null
|
|
|
+ || traceMetaInfo.getTraceId() == null){
|
|
|
+ PrintUtil.print("No trace task, free device, continue.", TAG, device.getUdid());
|
|
|
+ boolean t = deviceService.freeDevice(device.getUdid());
|
|
|
+ if (!r){
|
|
|
+ PrintUtil.printErr("释放Device, 这个路径不会被触发。", TAG, device.getUdid());
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -99,8 +97,11 @@ public class MyApplicationRunner implements ApplicationRunner {
|
|
|
CoverageTest coverageTest = new CoverageTest(apkInfo, apkPath, device, traceId);
|
|
|
coverageTest.setName(Consts.AUTO_TEST_THREAD_NAME_PREFIX + device.getUdid());
|
|
|
oneTraceTasks.add(coverageTest);
|
|
|
- //TODO 这里需要CAS更新,而不是单纯的更新
|
|
|
- deviceService.updateDeviceStatus(device.getUdid(), DeviceStatus.RUNNING);
|
|
|
+ // CAS更新Device状态,OCCUPY -> RUNNING
|
|
|
+ deviceService.startRunDevice(device.getUdid());
|
|
|
+ if (!r){
|
|
|
+ PrintUtil.printErr("开始Device任务, 这个路径不会被触发。", TAG, device.getUdid());
|
|
|
+ }
|
|
|
coverageTest.start();
|
|
|
|
|
|
//启动守护线程
|
|
@@ -121,10 +122,6 @@ public class MyApplicationRunner implements ApplicationRunner {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private Device buildDevice(Device device){
|
|
|
- return device;
|
|
|
- }
|
|
|
-
|
|
|
private TraceMetaInfo getTraceMetaInfo(Device device){
|
|
|
// TODO 发送请求,获取Trace信息,这里Mock一下发给自己这个项目
|
|
|
RestTemplate rt = new RestTemplate();
|