/
yfRunBoomerMaster.go
140 lines (129 loc) · 4.11 KB
/
yfRunBoomerMaster.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package hrp
import (
"errors"
"fmt"
"github.com/test-instructor/yangfan/server/global"
"github.com/test-instructor/yangfan/server/model/common/request"
"github.com/test-instructor/yangfan/server/model/interfacecase"
"gorm.io/gorm"
)
func NewBoomerMaster(id uint) *RunBoomerMaster {
return &RunBoomerMaster{
runCaseReq: request.RunCaseReq{
CaseID: id,
},
}
}
type RunBoomerMaster struct {
reportID uint
PTask interfacecase.Performance
PReport interfacecase.PerformanceReport
//CaseID uint
runCaseReq request.RunCaseReq
TCM ApisCaseModel
envVars map[string]string
ID uint
}
func (r *RunBoomerMaster) LoadCase() (err error) {
//获取运行配置
var testCase interfacecase.HrpCase
var testCaseList []interfacecase.HrpCase
var apiCase interfacecase.Performance
var apiCaseCase []interfacecase.PerformanceRelationship
{
var testCaseStep interfacecase.Performance
err := global.GVA_DB.Model(interfacecase.Performance{}).Where("id = ? ", r.runCaseReq.CaseID).First(&testCaseStep).Error
if err != nil {
return err
}
r.runCaseReq.ConfigID = testCaseStep.RunConfigID
r.runCaseReq.Env = testCaseStep.ApiEnvID
}
//获取运行配置
apiConfig, err := getConfig(r.runCaseReq.ConfigID)
if err != nil {
return errors.New("获取配置失败")
}
r.envVars, _, err = GetEnvVar(apiConfig.ProjectID, r.runCaseReq.Env)
if err != nil {
return errors.New("获取环境变量失败")
}
apiConfig.Environs = r.envVars
apiConfig.CaseID = r.runCaseReq.CaseID
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 1 apiConfig:%d", apiConfig.ID))
//设置前置步骤
if apiConfig.SetupCaseID != nil && *apiConfig.SetupCaseID != 0 {
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 2 apiConfig.SetupCaseID %d", *apiConfig.SetupCaseID))
hrpCaseStep, err := getCaseStepHrp(*apiConfig.SetupCaseID)
if err != nil {
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 8 已设置前置步骤,%s", err))
}
testCase.Confing = *apiConfig
testCase.TestSteps = append(testCase.TestSteps, hrpCaseStep)
}
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 3 已设置前置步骤,%d", apiConfig.ID))
r.TCM.Config = *apiConfig
//读取用例信息
apiCase.ID = r.runCaseReq.CaseID
err = global.GVA_DB.Model(interfacecase.Performance{}).First(&apiCase).Error
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 4 apiCase,%v", apiCase))
caseDB := global.GVA_DB.Model(interfacecase.PerformanceRelationship{}).
Preload("ApiCaseStep").
Preload("ApiCaseStep.TStep", func(db2 *gorm.DB) *gorm.DB {
return db2.Order("Sort")
}).
Preload("ApiCaseStep.TStep.Request").
Preload("ApiCaseStep.TStep.Grpc").
Where("performance_id = ?", r.runCaseReq.CaseID).
Order("Sort")
caseDB.Find(&apiCaseCase)
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 5 获取用例信息,%v", apiCaseCase))
for _, v := range apiCaseCase {
hrpCaseStep, err := getCaseStepHrp(v.ApiCaseStepId)
if err != nil {
return err
}
testCase.TestSteps = append(testCase.TestSteps, hrpCaseStep)
global.GVA_LOG.Debug(fmt.Sprintf("boomer debug 8 *apiConfig.SetupCaseID:%v", hrpCaseStep))
}
testCase.Confing = *apiConfig
testCaseList = append(testCaseList, testCase)
{
var pTask interfacecase.Performance
var pReport interfacecase.PerformanceReport
err = global.GVA_DB.Model(&interfacecase.Performance{}).
Where("id = ?", r.runCaseReq.CaseID).First(&pTask).Error
if err != nil {
return err
}
pReport.Name = pTask.Name
pReport.PerformanceID = pTask.ID
pReport.ProjectID = pTask.ProjectID
pReport.State = 1
err = global.GVA_DB.Save(&pReport).Error
if err != nil {
return err
}
r.reportID = pReport.ID
r.PReport = pReport
pTask.PerformanceReportId = pReport.ID
pTask.State = interfacecase.StateInit
err = global.GVA_DB.Save(&pTask).Error
if err != nil {
return err
}
r.PTask = pTask
r.TCM.Config.ReportID = pReport.ID
}
err = yangfanTestCaseToHrpCase(testCaseList, "", &r.TCM)
if err != nil {
return errors.New("用例转换失败")
}
return nil
}
func (r *RunBoomerMaster) RunCase() (err error) {
return err
}
func (r *RunBoomerMaster) Report() (report *interfacecase.ApiReport, err error) {
return
}