From c4b57bfa30a49627cd337f099755a5d25ec6fc40 Mon Sep 17 00:00:00 2001 From: luziqi Date: Mon, 28 Aug 2023 17:37:54 +0800 Subject: [PATCH] + updates --- crontask/corn.go | 37 ------------------------------------- crontask/monkey.go | 14 +++++++------- device/device.go | 10 ++++++++++ main.go | 1 + models/oms_products.go | 21 +++++++++++++++++++++ monkey/activity.go | 3 +++ monkey/app_pages.go | 6 ++++-- 7 files changed, 46 insertions(+), 46 deletions(-) diff --git a/crontask/corn.go b/crontask/corn.go index ff88329..fb48ed3 100644 --- a/crontask/corn.go +++ b/crontask/corn.go @@ -1,14 +1,12 @@ package crontask import ( - "autogo/common" "autogo/dbsql" "autogo/models" "autogo/monkey" "fmt" "os/exec" "strings" - "time" "github.com/robfig/cron/v3" "github.com/spf13/cast" @@ -85,41 +83,6 @@ func CheckAndroidDevices() { } } -func CheckTaskStatus() { - db, err := dbsql.GetConn(dbsql.DSN) - if err != nil { - fmt.Println("[Crontab] 数据库连接失败") - return - } - defer dbsql.Close(db) - - var list []models.MonkeyTask - db.Model(models.MonkeyTask{}).Where("status = ?", "RUNNING").Find(&list) - for i, v := range list { - // 如果无对应正在运行的容器,判断为【结束】或【异常停止】 - if len(monkey.GetTaskFromDocker(v.Id)) == 0 { - // 如果预期结束时间(任务开始时间+运行时间) < 当前时间,判断任务为运行正常结束 - 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 { - common.PushCorntaskLog("任务状态似乎异常,task_id=" + cast.ToString(v.Id)) - } - } - continue - // var count int64 - // db.Model(models.MonkeyActivity{}).Where("task_id = ?", list[i].Id).Count(&count) - // list[i].CoveredAcitvities = int(count) - // var pids []models.MonkeyPid - // db.Model(models.MonkeyPid{}).Where("task_id = ?", v.Id).Find(&pids) - // if code := checkTaskPids(pids); code != 0 { - // list[i].Status = "FINISH" - // db.Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("status", list[i].Status) - // common.PushMonkeyResult(v) - // } - } -} - func checkTaskPids(pids []models.MonkeyPid) int { if len(pids) == 0 { return -1 diff --git a/crontask/monkey.go b/crontask/monkey.go index 7850440..2acc7ba 100644 --- a/crontask/monkey.go +++ b/crontask/monkey.go @@ -59,13 +59,13 @@ func CheckMonkeyTasks() { db.Table(task.TableName()).Model(models.MonkeyTask{}).Where("id = ?", task.Id).Update("start_time", time.Now().Unix()) common.PushCorntaskLog("执行Monkey任务:" + task.Project + "-" + d.Udid) } else if task.Platform == "ios" { - product_name := task.Product + product_name := strings.ToLower(task.Product) if strings.Contains(task.Product, "-") { product_name = strings.Split(task.Product, "-")[0] } // 获取product.id - var _p models.ProductV2 - db_oms.Table(_p.TableName()).Model(models.DeviceV2{}).Where("product_line = ? AND platform = ?", product_name, "ios").Last(&_p) + var _p models.QaProduct + db_oms.Table(_p.TableName()).Model(models.QaProduct{}).Where("label = ?", product_name).Last(&_p) if _p.ID < 1 { fmt.Println("找不到产品,", product_name) // 找不到对应的产品 @@ -96,10 +96,10 @@ func CheckMonkeyTasks() { // 如果预期结束时间(任务开始时间+运行时间) < 当前时间,判断任务为运行正常结束 if v.StartTime+v.RunTime+300 < int(time.Now().Unix()) { list[i].Status = "FINISH" - // db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("status", list[i].Status) - // db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("end_time", time.Now().Unix()) - // common.PushCorntaskLog("[autogo] 任务标记为FINISH, " + cast.ToString(v.Id)) - // common.PushMonkeyResult(v) + db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("status", "FINISH") + db.Table(v.TableName()).Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("end_time", time.Now().Unix()) + common.PushCorntaskLog("[autogo] 任务标记为FINISH, " + cast.ToString(v.Id)) + common.PushMonkeyResult(v) } else { common.PushCorntaskLog("任务状态似乎异常,task_id=" + cast.ToString(v.Id)) } diff --git a/device/device.go b/device/device.go index e6812ab..90b31c0 100644 --- a/device/device.go +++ b/device/device.go @@ -287,6 +287,16 @@ func UpdateDeviceStatus(c *gin.Context) { db.Model(models.Device{}).Where("udid = ?", c.PostForm("udid")).Update("status", c.PostForm("status")) + db_oms, err := dbsql.GetConn(dbsql.DSN_qaoms()) + if err != nil { + rsp.Error(err.Error()) + c.JSON(http.StatusOK, rsp) + return + } + defer dbsql.Close(db_oms) + + db_oms.Table("qa_devices").Model(models.DeviceV2{}).Where("udid = ?", c.PostForm("udid")).Update("status", c.PostForm("status")) + rsp.Success() rsp.Data = c.PostForm("udid") c.JSON(http.StatusOK, rsp) diff --git a/main.go b/main.go index 550c363..c8daef5 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ var ( func init() { // 从环境变量读取mysql密码 pwd := os.Getenv("MYSQL_PASSWD") + pwd = "Flatincbr.com" if pwd == "" { fmt.Println("环境变量 MYSQL_PASSWD 不存在") os.Exit(1) diff --git a/models/oms_products.go b/models/oms_products.go index a5c27bd..6a18723 100644 --- a/models/oms_products.go +++ b/models/oms_products.go @@ -1,5 +1,7 @@ package models +import "time" + // Product 结构体 type ProductV2 struct { ID int `json:"id" gorm:"id"` @@ -18,3 +20,22 @@ type ProductV2 struct { func (ProductV2) TableName() string { return "product" } + +// QaProduct 结构体 +type QaProduct struct { + ID uint `gorm:"column:id"` // 主键ID + CreatedAt time.Time `json:"created_at" gorm:"column:created_at;autoCreateTime;comment:创建时间"` // 创建时间 + UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at;autoUpdateTime;comment:更新时间"` // 更新时间 + Name string `json:"name" form:"name" gorm:"column:name;comment:;"` + Label string `json:"label" form:"label" gorm:"column:label;comment:唯一,用英文小写定义;"` + ProjectId int `json:"project_id" form:"project_id" gorm:"column:project_id;comment:;"` + ProjectExtId string `json:"project_ext_id" form:"project_ext_id" gorm:"column:project_ext_id;comment:;"` + Status int `json:"status" form:"status" gorm:"column:status;comment:预留状态字段;"` + Remark string `json:"remark" form:"remark" gorm:"column:remark;comment:;"` + Mapping string `json:"mapping" form:"mapping" gorm:"column:mapping;comment:用字典json存放其它属性;"` +} + +// TableName QaProduct 表名 +func (QaProduct) TableName() string { + return "qa_products" +} diff --git a/monkey/activity.go b/monkey/activity.go index 017cb96..17e7c57 100644 --- a/monkey/activity.go +++ b/monkey/activity.go @@ -27,16 +27,19 @@ func UpdataActivity(c *gin.Context) { if res.TaskId < 1 { rsp.Error("task_id error:" + c.PostForm("task_id")) c.JSON(http.StatusOK, rsp) + return } res.DeviceName = c.PostForm("device_name") if res.DeviceName == "" { rsp.Error("device_name不能为空") c.JSON(http.StatusOK, rsp) + return } res.ActivityName = c.PostForm("activity_name") if res.ActivityName == "" { rsp.Error("activity_name不能为空") c.JSON(http.StatusOK, rsp) + return } db, err := dbsql.GetConn(dbsql.DSN) diff --git a/monkey/app_pages.go b/monkey/app_pages.go index a0e3d0e..9ae334a 100644 --- a/monkey/app_pages.go +++ b/monkey/app_pages.go @@ -3,11 +3,13 @@ package monkey import ( "autogo/dbsql" "autogo/models" + "fmt" "gorm.io/gorm" ) func countPage(p models.AppPage, db *gorm.DB) error { + if db == nil { db, err := dbsql.GetConn(dbsql.DSN) if err != nil { @@ -21,8 +23,8 @@ func countPage(p models.AppPage, db *gorm.DB) error { db.Create(&p) return nil } - p.Count += 1 - db.Where("id = ?", p.ID).Update("count", p.Count) + fmt.Println("计算页面覆盖次数", p.PageName, "->", p.Count+1) + db.Table(p.TableName()).Model(models.AppPage{}).Where("product = ? AND page_name = ?", p.Product, p.PageName).Update("count", p.Count+1) return nil }