bug.go 2.9 KB
Newer Older
1 2 3 4
package zentaoService

import (
	"fmt"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
5
	"github.com/bitly/go-simplejson"
6
	"github.com/easysoft/zentaoatf/src/model"
7 8
	"github.com/easysoft/zentaoatf/src/service/client"
	testingService "github.com/easysoft/zentaoatf/src/service/testing"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9
	configUtils "github.com/easysoft/zentaoatf/src/utils/config"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
11
	"github.com/easysoft/zentaoatf/src/utils/log"
12
	"github.com/easysoft/zentaoatf/src/utils/vari"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
13
	uuid "github.com/satori/go.uuid"
14
	"strconv"
15
	"strings"
16 17
)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
18 19 20 21 22 23
func GenBug(resultDir string, caseIdStr string) (model.Bug, string) {
	caseId, err := strconv.Atoi(caseIdStr)

	if err != nil {
		return model.Bug{}, ""
	}
24

aaronchen2k2k's avatar
aaronchen2k2k 已提交
25
	report := testingService.GetTestTestReportForSubmit(resultDir)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
26
	for _, cs := range report.Cases {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
27
		if cs.Id != caseId {
28 29 30
			continue
		}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
31
		title := cs.Title
32 33
		module := GetFirstNoEmptyVal(vari.ZentaoBugFileds.Modules)
		typ := GetFirstNoEmptyVal(vari.ZentaoBugFileds.Categories)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34
		openedBuild := map[string]string{"0": "trunk"}
35 36
		severity := GetFirstNoEmptyVal(vari.ZentaoBugFileds.Severities)
		priority := GetFirstNoEmptyVal(vari.ZentaoBugFileds.Priorities)
37

aaronchen2k2k's avatar
aaronchen2k2k 已提交
38
		product := cs.ProductId
39
		caseId := cs.Id
40

41
		uid := uuid.NewV4().String()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
42
		caseVersion := "0"
43
		oldTaskID := "0"
44

45 46
		stepIds := ""
		steps := make([]string, 0)
47
		for _, step := range cs.Steps {
48
			if !step.Status {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
49
				stepIds += strconv.Itoa(step.Id) + "_"
50 51
			}

52
			stepsContent := testingService.GetStepContent(step)
53
			steps = append(steps, stepsContent)
54 55
		}

56 57
		bug := model.Bug{Title: title,
			Module: module, Type: typ, OpenedBuild: openedBuild, Severity: severity, Pri: priority,
aaronchen2k2k's avatar
aaronchen2k2k 已提交
58 59
			Product: strconv.Itoa(product), Project: "0", Case: strconv.Itoa(caseId),
			Testtask: "0", Steps: strings.Join(steps, "<br/>"),
60
			Uid: uid, CaseVersion: caseVersion, OldTaskID: oldTaskID,
61
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
62
		return bug, stepIds
63

64
	}
65

aaronchen2k2k's avatar
aaronchen2k2k 已提交
66
	return model.Bug{}, ""
67
}
68

aaronchen2k2k's avatar
aaronchen2k2k 已提交
69 70 71 72 73
func CommitBug(bug model.Bug, stepIds string) bool {
	// TODO: open cui

	conf := configUtils.ReadCurrConfig()
	Login(conf.Url, conf.Account, conf.Password)
74 75 76 77 78 79

	productId := bug.Product
	projectId := bug.Project

	// bug-create-1-0-caseID=1,version=3,resultID=93,runID=0,stepIdList=9_12_
	// bug-create-1-0-caseID=1,version=3,resultID=84,runID=6,stepIdList=9_12_,testtask=2,projectID=1,buildID=1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
80 81
	params := fmt.Sprintf("caseID=%s,version=0,resultID=%s,runID=0,stepIdList=%s",
		bug.Case, bug.Result, stepIds)
82

aaronchen2k2k's avatar
aaronchen2k2k 已提交
83
	bug.Steps = strings.Replace(bug.Steps, " ", "&nbsp;", -1)
84 85 86
	if bug.Testtask != "" {
		temp := fmt.Sprintf("testtask=%s,projectID=%s,buildID=1", bug.Testtask, projectId)
		params += temp
87
	}
88

89 90
	uri := fmt.Sprintf("bug-create-%s-0-%s.json", productId, params)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
91
	url := uri
aaronchen2k2k's avatar
aaronchen2k2k 已提交
92 93 94 95 96
	body, ok := client.PostObject(url, bug)

	json, _ := simplejson.NewJson([]byte(body))
	msg, _ := json.Get("message").String()
	if ok && msg == "" {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
97
		logUtils.PrintToCmd(i118Utils.I118Prt.Sprintf("success_to_report_bug", bug.Case) + "\n")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
98 99 100 101

		return true
	} else {
		return false
102
	}
103
}