From 1ccd77e156f8b24d98ffada11f78de4cc4183873 Mon Sep 17 00:00:00 2001 From: luziqi Date: Wed, 19 Jul 2023 20:11:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=82=E5=B8=B8=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3v2&=E4=B8=8A=E6=8A=A5=E5=90=8E=E6=8F=90?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/create_bug.go | 26 +++++++++------------- main.go | 3 +++ models/monkey_anomaly.go | 1 + monkey/anomaly.go | 47 ++++++++++++++++++++++++++++++++++------ 4 files changed, 54 insertions(+), 23 deletions(-) diff --git a/common/create_bug.go b/common/create_bug.go index 7075ab6..d105c52 100644 --- a/common/create_bug.go +++ b/common/create_bug.go @@ -11,14 +11,14 @@ import ( const API_tbapi = "http://qa.flatincbr.work:5354" +const BugCategory_Anomaly = "monkey异常" + type BugInfo struct { - ProjectName string `json:"project_name"` // tb项目名称 - ProjectID string `json:"project_id"` // tb项目id - ExecutorID string `json:"executor_id"` // tb缺陷的处理人 - Title string `json:"title"` // tb缺陷的标题 - Content string `json:"content"` // tb缺陷的备注 - InvolveMembers []string `json:"involve_members"` // tb缺陷的参与人 - Pf string `json:"pf"` // 所属平台,除了adr/ios其它不处理 + ProjectName string `json:"project_name"` // tb项目名称 + Category string `json:"category"` // 提单配置中的缺陷类型 + Title string `json:"title"` // tb缺陷的标题 + Content string `json:"content"` // tb缺陷的备注 + Pf string `json:"pf"` // 所属平台,除了adr/ios其它不处理 } func NewBug(project_name string) BugInfo { @@ -27,15 +27,9 @@ func NewBug(project_name string) BugInfo { return v } -// 指定执行者 -func (b *BugInfo) SetExecutor(id string) *BugInfo { - b.ExecutorID = id - return b -} - -// 指定参与者 -func (b *BugInfo) SetInvolveMember(id ...string) *BugInfo { - b.InvolveMembers = id +// 设置类别 +func (b *BugInfo) SetCategory(category string) *BugInfo { + b.Category = category return b } diff --git a/main.go b/main.go index 993fd1b..29e45c2 100644 --- a/main.go +++ b/main.go @@ -83,6 +83,9 @@ func main() { r.POST("/api/monkey/v2/create_task", monkey.CreateTaskV2) r.POST("/api/monkey/v2/task/handle/set", monkey.UpdateHandleStatus) r.GET("/api/monkey/v2/task/command", monkey.GetTaskCommand) + r.POST("/api/monkey/v2/task/store_anomaly", monkey.StoreMonkeyAnomaly) + r.GET("/api/monkey/v2/task/get_anomalies", monkey.GetMonkeyAnomaliesByTaskId) + // // device r.GET("/api/device/v1/list", device.GetDevices) diff --git a/models/monkey_anomaly.go b/models/monkey_anomaly.go index 9ae8033..61da608 100644 --- a/models/monkey_anomaly.go +++ b/models/monkey_anomaly.go @@ -14,6 +14,7 @@ type MonkeyAnomaly struct { Anomalies []string `json:"anomalies" gorm:"-"` CoverdPages string `json:"coverd_pages"` Logs string `json:"logs"` + BugId string `json:"bug_id"` } func (m *MonkeyAnomaly) TableName() string { diff --git a/monkey/anomaly.go b/monkey/anomaly.go index 42e68f4..68ca612 100644 --- a/monkey/anomaly.go +++ b/monkey/anomaly.go @@ -113,6 +113,12 @@ func GetMonkeyAnomaliesByTaskId(c *gin.Context) { } func createTbBug(ano models.MonkeyAnomaly) { + // 暂时忽略anr提单 + if strings.Contains(ano.AnomalyInfos, "ANR in") { + fmt.Println("[Debug]", "anr异常将跳过提单逻辑") + return + } + db, err := dbsql.GetConn(dbsql.DSN) if err != nil { fmt.Println("[createTbBug]", err) @@ -127,15 +133,41 @@ func createTbBug(ano models.MonkeyAnomaly) { return } + bug_type := "Other" + if strings.Contains(ano.AnomalyInfos, "FATAL EXCEPTION") { + bug_type = "EXCEPTION" + } + content := "" content += "**关联Monkey报告:** [点击查看](http://qa.flatincbr.work/#/monkey/result/" + cast.ToString(ano.TaskId) + ")" + "\n\n
\n\n" content += "**上报时间:**" + ano.CreateTime.Format("2006-01-02 15:04:05") + "\n\n
\n\n" content += "**应用版本:**" + task.Version + "\n\n
\n\n" content += "**信息预览:**" + "\n\n" - for _, v := range ano.Anomalies { - for i, vv := range strings.Split(v, "\n") { + + title := "【Monkey测试】" + for i, v := range ano.Anomalies { + for ii, vv := range strings.Split(v, "\n") { content += "> " + vv + "\n" - if i > 10 { + switch bug_type { + case "EXCEPTION": + // 取第一行和第三行内容拼接 + if i == 0 && ii == 0 { + _strs := strings.Split(vv, "): ") + if len(_strs) > 1 { + title += _strs[1] + " - " + } + } else if i == 0 && ii == 2 { + _strs := strings.Split(vv, "): ") + if len(_strs) > 1 { + title += _strs[1] + } + } + default: + if i == 0 && ii == 0 { + title += "未知异常 - " + vv + } + } + if ii > 10 { break } } @@ -145,11 +177,11 @@ func createTbBug(ano models.MonkeyAnomaly) { content += "\n" bug := common.NewBug("crushu") //task.Project - bug.SetExecutor("62733beb6918b259138d7577"). - SetInvolveMember("62733beb6918b259138d7577"). - SetTitle("【Monkey测试】任务id=" + cast.ToString(task.Id) + "发生异常"). + + bug.SetTitle(title). SetPlatform(task.Platform). - SetContent(content) + SetContent(content). + SetCategory(common.BugCategory_Anomaly) id, err := bug.Create() if err != nil { @@ -158,4 +190,5 @@ func createTbBug(ano models.MonkeyAnomaly) { } fmt.Println("缺陷创建成功:", "https://www.teambition.com/task/"+id) + db.Table(ano.TableName()).Model(models.MonkeyAnomaly{}).Where("id = ?", ano.ID).Update("bug_id", id) }