|
|
|
|
@ -21,42 +21,40 @@ func CheckMonkeyTasks() {
|
|
|
|
|
var list []models.MonkeyTask
|
|
|
|
|
db.Model(models.MonkeyTask{}).Where("status = ? AND is_del = 0", "WAITTING").Find(&list)
|
|
|
|
|
|
|
|
|
|
// 运行等待中的任务
|
|
|
|
|
for _, task := range list {
|
|
|
|
|
product_name := task.Product
|
|
|
|
|
if strings.Contains(task.Product, "-") {
|
|
|
|
|
product_name = strings.Split(task.Product, "-")[0]
|
|
|
|
|
}
|
|
|
|
|
var device models.Device
|
|
|
|
|
db.Table("device").Model(models.Device{}).Where("project = ? AND product_name = ? AND status = ?", task.Project, product_name, "online").First(&device)
|
|
|
|
|
if device.ID < 1 {
|
|
|
|
|
// 没有空闲设备
|
|
|
|
|
continue
|
|
|
|
|
if task.Platform == "adr" {
|
|
|
|
|
product_name := task.Product
|
|
|
|
|
if strings.Contains(task.Product, "-") {
|
|
|
|
|
product_name = strings.Split(task.Product, "-")[0]
|
|
|
|
|
}
|
|
|
|
|
var device models.Device
|
|
|
|
|
db.Table("device").Model(models.Device{}).Where("project = ? AND product_name = ? AND status = ?", task.Project, product_name, "online").First(&device)
|
|
|
|
|
if device.ID < 1 {
|
|
|
|
|
// 没有空闲设备
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
db.Table("device").Model(models.Device{}).Where("udid = ?", device.Udid).Update("status", "busy")
|
|
|
|
|
go monkey.RunAndroidMonkeyCmd(task, device.Udid)
|
|
|
|
|
common.PushCorntaskLog("执行Monkey任务:" + task.Project + "-" + device.Udid)
|
|
|
|
|
}
|
|
|
|
|
db.Table("device").Model(models.Device{}).Where("udid = ?", device.Udid).Update("status", "busy")
|
|
|
|
|
go monkey.RunAndroidMonkeyCmd(task, device.Udid)
|
|
|
|
|
common.PushCorntaskLog("执行Monkey任务:" + task.Project + "-" + device.Udid)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断运行中的任务的实际状态
|
|
|
|
|
db.Model(models.MonkeyTask{}).Where("status = ? AND is_del = 0", "RUNNING").Find(&list)
|
|
|
|
|
for i, v := range list {
|
|
|
|
|
// 如果无对应正在运行的容器,判断为【结束】或【异常停止】
|
|
|
|
|
if len(monkey.GetTaskFromDocker(v.Id)) == 0 {
|
|
|
|
|
// 如果预期结束时间(任务开始时间+运行时间) < 当前时间,判断任务为运行正常结束
|
|
|
|
|
if v.UpdateTime+v.RunTime < int(time.Now().Unix()) {
|
|
|
|
|
list[i].Status = "FINISH"
|
|
|
|
|
db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("status", list[i].Status)
|
|
|
|
|
common.PushMonkeyResult(v)
|
|
|
|
|
} else {
|
|
|
|
|
common.PushCorntaskLog("任务状态似乎异常,task_id=" + cast.ToString(v.Id))
|
|
|
|
|
if v.Platform == "adr" {
|
|
|
|
|
// 如果无对应正在运行的容器,判断为【结束】或【异常停止】
|
|
|
|
|
if len(monkey.GetTaskFromDocker(v.Id)) == 0 {
|
|
|
|
|
// 如果预期结束时间(任务开始时间+运行时间) < 当前时间,判断任务为运行正常结束
|
|
|
|
|
if v.UpdateTime+v.RunTime < int(time.Now().Unix()) {
|
|
|
|
|
list[i].Status = "FINISH"
|
|
|
|
|
db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("status", list[i].Status)
|
|
|
|
|
common.PushMonkeyResult(v)
|
|
|
|
|
} else {
|
|
|
|
|
common.PushCorntaskLog("任务状态似乎异常,task_id=" + cast.ToString(v.Id))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// var pids []models.MonkeyPid
|
|
|
|
|
// db.Model(models.MonkeyPid{}).Where("task_id = ?", task.Id).Find(&pids)
|
|
|
|
|
// if code := checkTaskPids(pids); code == 0 {
|
|
|
|
|
// task.Status = "RUNNING"
|
|
|
|
|
// } else if code == 1 {
|
|
|
|
|
// task.Status = "FINISH"
|
|
|
|
|
// db.Model(models.MonkeyTask{}).Where("id = ?", task.Id).Update("status", task.Status)
|
|
|
|
|
// common.PushMonkeyResult(task)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|