From 9dcaee11d551d0811b6721bd6893e14fd7b5ced2 Mon Sep 17 00:00:00 2001 From: luziqi Date: Tue, 6 Jun 2023 14:01:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E5=8D=93=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/push.go | 2 +- crontask/corn.go | 5 ++-- crontask/monkey.go | 58 ++++++++++++++++++++++------------------------ monkey/task.go | 7 +++--- 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/common/push.go b/common/push.go index 64f029a..606c76e 100644 --- a/common/push.go +++ b/common/push.go @@ -36,7 +36,7 @@ func PushMonkeyResult(task models.MonkeyTask) { cli := dingtalk.InitDingTalkWithSecret(Bot_Test_Token, Bot_Test_Secret) if task.Remark != "debug" { n, err := GetNotifyInfo("monkey", task.Project) - if err == nil { + if err == nil && len(n.Token) > 10 && len(n.Secret) > 10 { cli = dingtalk.InitDingTalkWithSecret(n.Token, n.Secret) } } diff --git a/crontask/corn.go b/crontask/corn.go index 0544c32..a163eb7 100644 --- a/crontask/corn.go +++ b/crontask/corn.go @@ -17,6 +17,7 @@ import ( func Run() { crontab := cron.New(cron.WithSeconds()) crontab.AddFunc("0 */1 * * * ?", CheckAndroidDevices) + crontab.AddFunc("0 */1 * * * ?", CheckIOSDevices) crontab.AddFunc("*/15 * * * * ?", CheckMonkeyTasks) crontab.Start() fmt.Println("[Crontab] 定时任务启动") @@ -50,7 +51,7 @@ func CheckAndroidDevices() { defer dbsql.Close(db) var list []models.Device - db.Model(models.Device{}).Where("is_del = 0").Find(&list) + db.Model(models.Device{}).Where("platform = ? AND is_del = 0", "adr").Find(&list) for _, v := range list { if vv, ok := device[v.Udid]; ok { // 数据表中的设备,adb有获取到 @@ -97,7 +98,7 @@ func CheckTaskStatus() { // 如果无对应正在运行的容器,判断为【结束】或【异常停止】 if len(monkey.GetTaskFromDocker(v.Id)) == 0 { // 如果预期结束时间(任务开始时间+运行时间) < 当前时间,判断任务为运行正常结束 - if v.UpdateTime+v.RunTime < int(time.Now().Unix()) { + if v.CreateTime+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) } else { diff --git a/crontask/monkey.go b/crontask/monkey.go index b630426..4f82277 100644 --- a/crontask/monkey.go +++ b/crontask/monkey.go @@ -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) - // } } } diff --git a/monkey/task.go b/monkey/task.go index ccafde0..be07187 100644 --- a/monkey/task.go +++ b/monkey/task.go @@ -305,7 +305,7 @@ func GetTaskById(c *gin.Context) { c.JSON(http.StatusOK, rsp) } -// @Tags Monkey相关 /api/monkey/v1/ +// @Tags 文件相关 /webdav // @Summary 上传Logcat日志 // @Description 上传Logcat日志 // @accept x-www-form-urlencoded @@ -443,12 +443,13 @@ func StopMonkeyTask(c *gin.Context) { list := GetTaskFromDocker(task_id) for _, v := range list { if StopDockerContainer(v.Name) { - db.Table("monkey_task").Model(models.MonkeyTask{}).Where("id = ?", task_id).Update("status", "CANCEL") db.Table("device").Model(models.Device{}).Where("udid = ?", v.Device).Update("status", "online") } } - rsp.Data = list + db.Table("monkey_task").Model(models.MonkeyTask{}).Where("id = ?", task_id).Update("status", "CANCEL") + + rsp.Data = "done" c.JSON(http.StatusOK, rsp.Success()) return