diff --git a/test/bugly.go b/test/bugly.go new file mode 100644 index 0000000..6d01df7 --- /dev/null +++ b/test/bugly.go @@ -0,0 +1,120 @@ +package test + +import ( + "fmt" + "net/http" + "time" + + "github.com/imroc/req/v3" +) + +func BuglyHelper() { + var rsp BuglyRsp + url := `https://bugly.qq.com/v2/search?start=0&userSearchPage=%2Fv2%2Fworkbench%2Fapps&pid=2&platformId=2&date=last_7_day&sortOrder=desc&useSearchTimes=3&rows=10&sortField=matchCount&appId=447d39aea1&fsn=8799e426-34c8-4a75-bd0d-1e186509eb5e` + client := req.C(). + SetTimeout(5 * time.Second) + resp, err := client.R(). + SetCookies(cookies()...). + SetHeader("X-Token", "264561818"). + SetHeader("Accept", "application/json;charset=utf-8"). + SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"). + // SetHeader("Cookie", "bugly-session=s%3AqQZzQXsgw0wv_lFKAOT88ND_yh_B1f6H.au%2F78LCSHj5zhwqe%2FljmOXGP7TBW3yHnMwypYesrn34;bugly_session=eyJpdiI6InV1R3R0TmZ2S01HTkVBSGpucThXZXc9PSIsInZhbHVlIjoiam1lM3o1cVJISjNyZVJ6U3JJYzhmK1M1UVJiUlhCS1wvRTh6T1d4XC93NDdiY3FITVNJQXRpVFd6Y1BBV1wvZTBhOWR0MHBxNTlRdGNYdExoS2VWK2swckE9PSIsIm1hYyI6IjliMDExNTdmMzgyODFmNTEyYzVmMGQ3MGMxYTdjOTZmMDNjYzVjYzlkYzcxMmVjNmUyMzk4YWE2OTRmNzY4NzAifQ%3D%3D;"). + SetHeader("Accept", "application/json;charset=utf-8"). + SetHeader("Accept-Encoding", "gzip, deflate, br"). + SetHeader("Accept-Language", "zh-CN,zh;q=0.9"). + SetHeader("Connection", "keep-alive"). + SetSuccessResult(&rsp). + // SetResult(&rsp). + Get(url) + if err != nil { + fmt.Println(err) + return + } + if resp.IsErrorState() { + fmt.Println(resp.StatusCode) + return + } + if len(rsp.Ret.IssueList) > 0 { + fmt.Println(len(rsp.Ret.IssueList)) + } else { + fmt.Println(resp.String()) + } + +} + +func cookies() []*http.Cookie { + var cookies []*http.Cookie + // var c1 http.Cookie + // c1.Name = "bugly-session" + // c1.Value = "s:qQZzQXsgw0wv_lFKAOT88ND_yh_B1f6H.au/78LCSHj5zhwqe/ljmOXGP7TBW3yHnMwypYesrn34" + // cookies = append(cookies, &c1) + + var c3 http.Cookie + c3.Name = "bugly_session" + c3.Value = "eyJpdiI6InpwcG1uZW5XaWhrOWxpb1FEUWlVeEE9PSIsInZhbHVlIjoiK3NMd3cyZ0N0eWJSc21DRXhTRlRvME8yb0ZCdjlmcW5EMjlISmQ3XC9tXC80UDhCemVlUG1FS25LemJEb0tlSXY3MGRXQjBkVkJMVHR0TGhldHlMYStKUT09IiwibWFjIjoiZTdmZTk4MDNlZjgyZTIxNGY1NzE1YTc1YzgyMzdhZGVmYWM2YTgxNDJjMDZlNDJkODIyMjJkZGQ3ZjRkMTM4YiJ9" + cookies = append(cookies, &c3) + return cookies +} + +type BuglyRsp struct { + Status int `json:"status"` + Msg string `json:"msg"` + Ret struct { + AppID string `json:"appId"` + PlatformID string `json:"platformId"` + IssueList []struct { + IssueID int `json:"issueId"` + IssueHash string `json:"issueHash"` + IssueCount int `json:"issueCount"` + CrashInfo struct { + CrashID string `json:"crashId"` + TagID int `json:"tagId"` + } `json:"crashInfo"` + IssueVersions []struct { + Version string `json:"version"` + Count int `json:"count"` + DeviceCount int `json:"deviceCount"` + } `json:"issueVersions"` + FtName string `json:"ftName"` + IssueDocMap struct { + ID string `json:"id"` + IssueID int `json:"issueId"` + Status int `json:"status"` + Count int `json:"count"` + SysCount int `json:"sysCount"` + ProductVersion string `json:"productVersion"` + DeviceCount int `json:"deviceCount"` + SysDeviceCount int `json:"sysDeviceCount"` + LastUpdateTime string `json:"lastUpdateTime"` + FirstUploadTime string `json:"firstUploadTime"` + LastUploadTime string `json:"lastUploadTime"` + ExpName string `json:"expName"` + ExpFingure string `json:"expFingure"` + IsSystemStack int `json:"isSystemStack"` + KeyStack string `json:"keyStack"` + Type string `json:"type"` + AverageBattery float64 `json:"averageBattery"` + AverageMemory float64 `json:"averageMemory"` + AverageSD float64 `json:"averageSD"` + AverageStorage float64 `json:"averageStorage"` + CrossVersionIssueID int `json:"crossVersionIssueId"` + VersionIssueIds []int `json:"versionIssueIds"` + SubIssueVersions string `json:"subIssueVersions"` + ExpMessage string `json:"expMessage"` + RootCount int `json:"rootCount"` + SysRootCount int `json:"sysRootCount"` + ExpAddr string `json:"expAddr"` + RefSdkAppID string `json:"refSdkAppId"` + RefSdkIssueID string `json:"refSdkIssueId"` + CrashRecordCount int `json:"crashRecordCount"` + } `json:"issueDocMap"` + CrossVersionIssueID int `json:"crossVersionIssueId"` + EsCount int `json:"esCount"` + EsDeviceCount int `json:"esDeviceCount"` + } `json:"issueList"` + NumFound int `json:"numFound"` + CrashNums int `json:"crashNums"` + AnrNums int `json:"anrNums"` + ErrorNums int `json:"errorNums"` + } `json:"ret"` +} diff --git a/test/cli/test.go b/test/cli/test.go index 2e446c7..9adbd25 100644 --- a/test/cli/test.go +++ b/test/cli/test.go @@ -8,34 +8,30 @@ import ( "autogo/monkey" "autogo/test" "fmt" - "net/http" "os/exec" "strings" "time" - - "github.com/imroc/req/v3" - "github.com/spf13/cast" ) func main() { - test.GetMonkeyResult() + test.GetSysMapping() return - db, err := dbsql.GetConn(dbsql.DSN_local) - if err != nil { - return - } - defer dbsql.Close(db) - var list []models.MonkeyTask - db.Model(models.MonkeyTask{}).Where("crash_count > 0 AND is_del = 0").Find(&list) - str := "" - for _, v := range list { - str += "\"" + cast.ToString(v.Id) + "\" " - } - fmt.Println(str) + // db, err := dbsql.GetConn(dbsql.DSN_local) + // if err != nil { + // return + // } + // defer dbsql.Close(db) + // var list []models.MonkeyTask + // db.Model(models.MonkeyTask{}).Where("crash_count > 0 AND is_del = 0").Find(&list) + // str := "" + // for _, v := range list { + // str += "\"" + cast.ToString(v.Id) + "\" " + // } + // fmt.Println(str) - return - buglyHelper() + // return + test.BuglyHelper() return cmd := exec.Command("docker", "ps") output, err := cmd.Output() @@ -58,54 +54,6 @@ func main() { fmt.Println("end") } -func buglyHelper() { - var rsp BuglyRsp - url := `https://bugly.qq.com/v2/search?start=0&userSearchPage=%2Fv2%2Fworkbench%2Fapps&pid=2&platformId=2&date=last_7_day&sortOrder=desc&useSearchTimes=3&rows=10&sortField=matchCount&appId=447d39aea1&fsn=8799e426-34c8-4a75-bd0d-1e186509eb5e` - client := req.C(). - SetTimeout(5 * time.Second) - resp, err := client.R(). - SetCookies(cookies()...). - SetHeader("X-Token", "957369952"). - SetHeader("Accept", "application/json;charset=utf-8"). - SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"). - // SetHeader("Cookie", "bugly-session=s%3AqQZzQXsgw0wv_lFKAOT88ND_yh_B1f6H.au%2F78LCSHj5zhwqe%2FljmOXGP7TBW3yHnMwypYesrn34;bugly_session=eyJpdiI6InV1R3R0TmZ2S01HTkVBSGpucThXZXc9PSIsInZhbHVlIjoiam1lM3o1cVJISjNyZVJ6U3JJYzhmK1M1UVJiUlhCS1wvRTh6T1d4XC93NDdiY3FITVNJQXRpVFd6Y1BBV1wvZTBhOWR0MHBxNTlRdGNYdExoS2VWK2swckE9PSIsIm1hYyI6IjliMDExNTdmMzgyODFmNTEyYzVmMGQ3MGMxYTdjOTZmMDNjYzVjYzlkYzcxMmVjNmUyMzk4YWE2OTRmNzY4NzAifQ%3D%3D;"). - SetHeader("Accept", "application/json;charset=utf-8"). - SetHeader("Accept-Encoding", "gzip, deflate, br"). - SetHeader("Accept-Language", "zh-CN,zh;q=0.9"). - SetHeader("Connection", "keep-alive"). - SetSuccessResult(&rsp). - // SetResult(&rsp). - Get(url) - if err != nil { - fmt.Println(err) - return - } - if resp.IsErrorState() { - fmt.Println(resp.StatusCode) - return - } - if len(rsp.Ret.IssueList) > 0 { - fmt.Println(len(rsp.Ret.IssueList)) - } else { - fmt.Println(resp.String()) - } - -} - -func cookies() []*http.Cookie { - var cookies []*http.Cookie - // var c1 http.Cookie - // c1.Name = "bugly-session" - // c1.Value = "s:qQZzQXsgw0wv_lFKAOT88ND_yh_B1f6H.au/78LCSHj5zhwqe/ljmOXGP7TBW3yHnMwypYesrn34" - // cookies = append(cookies, &c1) - - var c3 http.Cookie - c3.Name = "bugly_session" - c3.Value = "eyJpdiI6InV1R3R0TmZ2S01HTkVBSGpucThXZXc9PSIsInZhbHVlIjoiam1lM3o1cVJISjNyZVJ6U3JJYzhmK1M1UVJiUlhCS1wvRTh6T1d4XC93NDdiY3FITVNJQXRpVFd6Y1BBV1wvZTBhOWR0MHBxNTlRdGNYdExoS2VWK2swckE9PSIsIm1hYyI6IjliMDExNTdmMzgyODFmNTEyYzVmMGQ3MGMxYTdjOTZmMDNjYzVjYzlkYzcxMmVjNmUyMzk4YWE2OTRmNzY4NzAifQ==" - cookies = append(cookies, &c3) - return cookies -} - func getRuntime(containerID string) { // 执行 docker inspect 命令获取容器创建时间 @@ -190,66 +138,3 @@ func Dir() { fmt.Println(err) } } - -type BuglyRsp struct { - Status int `json:"status"` - Msg string `json:"msg"` - Ret struct { - AppID string `json:"appId"` - PlatformID string `json:"platformId"` - IssueList []struct { - IssueID int `json:"issueId"` - IssueHash string `json:"issueHash"` - IssueCount int `json:"issueCount"` - CrashInfo struct { - CrashID string `json:"crashId"` - TagID int `json:"tagId"` - } `json:"crashInfo"` - IssueVersions []struct { - Version string `json:"version"` - Count int `json:"count"` - DeviceCount int `json:"deviceCount"` - } `json:"issueVersions"` - FtName string `json:"ftName"` - IssueDocMap struct { - ID string `json:"id"` - IssueID int `json:"issueId"` - Status int `json:"status"` - Count int `json:"count"` - SysCount int `json:"sysCount"` - ProductVersion string `json:"productVersion"` - DeviceCount int `json:"deviceCount"` - SysDeviceCount int `json:"sysDeviceCount"` - LastUpdateTime string `json:"lastUpdateTime"` - FirstUploadTime string `json:"firstUploadTime"` - LastUploadTime string `json:"lastUploadTime"` - ExpName string `json:"expName"` - ExpFingure string `json:"expFingure"` - IsSystemStack int `json:"isSystemStack"` - KeyStack string `json:"keyStack"` - Type string `json:"type"` - AverageBattery float64 `json:"averageBattery"` - AverageMemory float64 `json:"averageMemory"` - AverageSD float64 `json:"averageSD"` - AverageStorage float64 `json:"averageStorage"` - CrossVersionIssueID int `json:"crossVersionIssueId"` - VersionIssueIds []int `json:"versionIssueIds"` - SubIssueVersions string `json:"subIssueVersions"` - ExpMessage string `json:"expMessage"` - RootCount int `json:"rootCount"` - SysRootCount int `json:"sysRootCount"` - ExpAddr string `json:"expAddr"` - RefSdkAppID string `json:"refSdkAppId"` - RefSdkIssueID string `json:"refSdkIssueId"` - CrashRecordCount int `json:"crashRecordCount"` - } `json:"issueDocMap"` - CrossVersionIssueID int `json:"crossVersionIssueId"` - EsCount int `json:"esCount"` - EsDeviceCount int `json:"esDeviceCount"` - } `json:"issueList"` - NumFound int `json:"numFound"` - CrashNums int `json:"crashNums"` - AnrNums int `json:"anrNums"` - ErrorNums int `json:"errorNums"` - } `json:"ret"` -} diff --git a/test/monkey_result.go b/test/monkey_result.go index 63ddc55..e0cfabb 100644 --- a/test/monkey_result.go +++ b/test/monkey_result.go @@ -4,7 +4,6 @@ import ( "autogo/common" "autogo/dbsql" "autogo/models" - "encoding/json" "fmt" "strings" @@ -12,7 +11,7 @@ import ( ) func GetMonkeyResult() { - var res models.MonkeyResult + var ano models.MonkeyAnomaly dbsql.SetDSN("Flatincbr.com") db, err := dbsql.GetConn(dbsql.DSN_local) if err != nil { @@ -20,47 +19,62 @@ func GetMonkeyResult() { return } defer dbsql.Close(db) - db.Model(models.MonkeyResult{}).Last(&res) - - var strs []string - json.Unmarshal([]byte(res.CrashLogs), &strs) - if len(strs) > 0 { - res.CrashLogList = strs - } - json.Unmarshal([]byte(res.ActivityNameInfo), &strs) - if len(strs) > 0 { - res.ActivityList = strs - } - json.Unmarshal([]byte(res.Logs), &strs) - if len(strs) > 0 { - res.LogList = strs - } + db.Model(models.MonkeyAnomaly{}).Last(&ano) var task models.MonkeyTask - db.Table(task.TableName()).Model(models.MonkeyTask{}).Where("id = ?", res.TaskId).Last(&task) + db.Table(task.TableName()).Model(models.MonkeyTask{}).Where("id = ?", ano.TaskId).Last(&task) + + bug_type := "Other" + if strings.Contains(ano.AnomalyInfos, "FATAL EXCEPTION") { + bug_type = "EXCEPTION" + } - // buf, _ := json.Marshal(res) - content := "" - content += "**关联Monkey报告:** [点击查看](http://qa.flatincbr.work/#/monkey/result/" + cast.ToString(res.TaskId) + ")" + "\n\n
\n\n" - content += "**上报时间:**" + res.CreateTime.Format("2006-01-02 15:04:05") + "\n\n
\n\n" + content := "**异常ID:**" + cast.ToString(ano.ID) + " " + 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 i, v := range strings.Split(res.CrashLogList[0], "\n") { - content += "> " + v + "\n" - if i > 10 { - break + + title := "【Monkey测试】" + + ano.JsonReady() + for i, v := range ano.Anomalies { + for ii, vv := range strings.Split(v, "\n") { + content += "> " + vv + "\n" + 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 + } } + content += "> " + "——————————————————————" + "\n" } content += "> " + "(...更多请查看Monkey报告)" + "\n" content += "\n" - // fmt.Println(content) - bug := common.NewBug("crushu") - bug.SetExecutor("62733beb6918b259138d7577"). - SetInvolveMember("62733beb6918b259138d7577"). - SetTitle("【Monkey测试】测试缺陷标题byProjectName"). - SetPlatform("adr"). - SetContent(content) + bug := common.NewBug("crushu") //task.Project + + bug.SetTitle(title). + SetPlatform(task.Platform). + SetContent(content). + SetCategory(common.BugCategory_Anomaly) id, err := bug.Create() if err != nil { @@ -68,4 +82,6 @@ func GetMonkeyResult() { return } fmt.Println("缺陷创建成功:", "https://www.teambition.com/task/"+id) + + db.Table(ano.TableName()).Model(models.MonkeyAnomaly{}).Where("id = ?", ano.ID).Update("bug_id", id) } diff --git a/test/sys_mapping.go b/test/sys_mapping.go new file mode 100644 index 0000000..109e554 --- /dev/null +++ b/test/sys_mapping.go @@ -0,0 +1,22 @@ +package test + +import ( + "autogo/dbsql" + "autogo/models" + "fmt" +) + +func GetSysMapping() { + dbsql.SetDSN("Flatincbr.com") + db, err := dbsql.GetConn(dbsql.DSN_local) + if err != nil { + fmt.Println(err) + return + } + defer dbsql.Close(db) + + var list []models.SysMap + db.Model(models.SysMap{}).Where("name = ?", "bugly-login").Find(&list) + + fmt.Println(list) +}