From 75b83f4bf2534ef8f54e968c596686f737477837 Mon Sep 17 00:00:00 2001 From: luziqi Date: Tue, 4 Jul 2023 17:44:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E5=A0=86=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbsql/db.go | 6 +++++- docs/docs.go | 14 +++++++++++++- docs/swagger.json | 14 +++++++++++++- docs/swagger.yaml | 10 +++++++++- main.go | 10 ++++++++++ models/monkey_task.go | 4 ++-- monkey/cli_adr.go | 2 +- monkey/task.go | 11 ++++++++--- 8 files changed, 61 insertions(+), 10 deletions(-) diff --git a/dbsql/db.go b/dbsql/db.go index 7800b38..224f602 100644 --- a/dbsql/db.go +++ b/dbsql/db.go @@ -9,7 +9,7 @@ import ( var DSN = "" -const DSN_local = "root:flatincbr@tcp(qa.flatincbr.work:3306)/qa?charset=utf8&parseTime=true" +var DSN_local = "" // 初始化数据库 func GetConn(dsn string) (*gorm.DB, error) { @@ -33,3 +33,7 @@ func Close(db *gorm.DB) { func SetPageQuery(db *gorm.DB, pageIndex int, pageSize int) *gorm.DB { return db.Limit(pageSize).Offset((pageIndex - 1) * pageSize) } + +func SetDSN(pwd string) { + DSN_local = "root:" + pwd + "@tcp(mysql.flatincbr.work:3306)/qa?charset=utf8&parseTime=true" +} diff --git a/docs/docs.go b/docs/docs.go index 40e33d7..1171a6a 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -813,6 +813,18 @@ const docTemplate = `{ "description": "第几页,默认为第一页", "name": "page_index", "in": "query" + }, + { + "type": "integer", + "description": "项目名称", + "name": "project", + "in": "query" + }, + { + "type": "integer", + "description": "传1筛选有异常的任务", + "name": "has_error", + "in": "query" } ], "responses": { @@ -1048,7 +1060,7 @@ const docTemplate = `{ "application/x-www-form-urlencoded" ], "tags": [ - "Monkey相关 /api/monkey/v1/" + "文件相关 /webdav" ], "summary": "上传Logcat日志", "responses": { diff --git a/docs/swagger.json b/docs/swagger.json index fa0b753..5965983 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -801,6 +801,18 @@ "description": "第几页,默认为第一页", "name": "page_index", "in": "query" + }, + { + "type": "integer", + "description": "项目名称", + "name": "project", + "in": "query" + }, + { + "type": "integer", + "description": "传1筛选有异常的任务", + "name": "has_error", + "in": "query" } ], "responses": { @@ -1036,7 +1048,7 @@ "application/x-www-form-urlencoded" ], "tags": [ - "Monkey相关 /api/monkey/v1/" + "文件相关 /webdav" ], "summary": "上传Logcat日志", "responses": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 26eb6a5..fefdf8f 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -537,6 +537,14 @@ paths: in: query name: page_index type: integer + - description: 项目名称 + in: query + name: project + type: integer + - description: 传1筛选有异常的任务 + in: query + name: has_error + type: integer responses: "200": description: 返回更新后的任务信息 @@ -701,5 +709,5 @@ paths: $ref: '#/definitions/models.Response' summary: 上传Logcat日志 tags: - - Monkey相关 /api/monkey/v1/ + - 文件相关 /webdav swagger: "2.0" diff --git a/main.go b/main.go index f6e5671..993fd1b 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "flag" "fmt" "net/http" + "os" _ "autogo/docs" @@ -24,6 +25,15 @@ var ( ) func init() { + // 从环境变量读取mysql密码 + pwd := os.Getenv("MYSQL_PASSWD") + if pwd == "" { + fmt.Println("环境变量 MYSQL_PASSWD 不存在") + os.Exit(1) + } + // 设置mysql密码 + dbsql.SetDSN(pwd) + flag.StringVar(&ENV, "env", "dev", "测试环境") } diff --git a/models/monkey_task.go b/models/monkey_task.go index 41406db..805f50c 100644 --- a/models/monkey_task.go +++ b/models/monkey_task.go @@ -45,8 +45,8 @@ func (task *MonkeyTask) Cmd(udid string, filename string) string { cmd_str += "-e PACKAGE=" + task.PackageName + " " cmd_str += "-e RUN_TIME=" + cast.ToString(task.RunTime) + " " cmd_str += "-e DEVICE=" + udid + " " - cmd_str += "-v /home/tmp/pkg/" + filename + ":/tmp/test.apk" + " " - cmd_str += "-v /home/app/uat:/home/app/uat" + " " + cmd_str += "-v /root/app/autogo/downloads/" + filename + ":/tmp/test.apk" + " " + cmd_str += "-v /root/app/uat-adr:/home/app/uat" + " " cmd_str += "monkey-adr" // cmd_str = "cd /home/app/monkey && nohup python3 main_adr.py" + diff --git a/monkey/cli_adr.go b/monkey/cli_adr.go index 85181c9..630fa45 100644 --- a/monkey/cli_adr.go +++ b/monkey/cli_adr.go @@ -19,7 +19,7 @@ import ( func RunAndroidMonkeyCmd(task models.MonkeyTask, udid string) { filename := cast.ToString(time.Now().Unix()) + ".apk" - pkg_path := "/home/tmp/pkg/" + filename + pkg_path := "/root/app/autogo/downloads/" + filename log.Debug("正在下载apk:", task.PackageURL) err := exec.Command("wget", task.PackageURL, "-O", pkg_path).Run() if err != nil { diff --git a/monkey/task.go b/monkey/task.go index b56a566..728598f 100644 --- a/monkey/task.go +++ b/monkey/task.go @@ -193,6 +193,7 @@ func UpdateTaskCrashCount(c *gin.Context) { // @Param page_size query int false "每页大小,默认为10" // @Param page_index query int false "第几页,默认为第一页" // @Param project query int false "项目名称" +// @Param has_error query int false "传1筛选有异常的任务" // @Success 200 {object} models.Response "返回更新后的任务信息" // @Router /api/monkey/v1/tasks [get] func GetTasks(c *gin.Context) { @@ -214,6 +215,8 @@ func GetTasks(c *gin.Context) { project := c.DefaultQuery("project", "") + has_error := cast.ToInt(c.DefaultQuery("has_error", "0")) + db, err := dbsql.GetConn(dbsql.DSN) if err != nil { c.JSON(http.StatusOK, rsp.Error(err.Error())) @@ -228,6 +231,9 @@ func GetTasks(c *gin.Context) { if project != "" { db = db.Where("project = ?", project) } + if has_error == 1 { + db = db.Where("crash_count > 0") + } db = db.Where("is_del = 0").Count(&lenght) db = dbsql.SetPageQuery(db, pageIndex, pageSize) db.Order("id desc").Find(&list) @@ -448,9 +454,8 @@ func StopMonkeyTask(c *gin.Context) { list := GetTaskFromDocker(task_id) for _, v := range list { - if StopDockerContainer(v.Name) { - db.Table("device").Model(models.Device{}).Where("udid = ?", v.Device).Update("status", "online") - } + StopDockerContainer(v.Name) + db.Table("device").Model(models.Device{}).Where("udid = ?", v.Device).Update("status", "online") } db.Table("monkey_task").Model(models.MonkeyTask{}).Where("id = ?", task_id).Update("status", "CANCEL")