+ updates

master
luziqi 2 years ago
parent 4c48e3ef4e
commit c4b57bfa30

@ -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

@ -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))
}

@ -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)

@ -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)

@ -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"
}

@ -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)

@ -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
}

Loading…
Cancel
Save