feat: 异常上报接口v2&上报后提单

master
luziqi 3 years ago
parent c39e0c2d5d
commit 1ccd77e156

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

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

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

@ -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<br>\n\n"
content += "**上报时间:**" + ano.CreateTime.Format("2006-01-02 15:04:05") + "\n\n<br>\n\n"
content += "**应用版本:**" + task.Version + "\n\n<br>\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)
}

Loading…
Cancel
Save