244 lines
6.1 KiB
Go
244 lines
6.1 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
|
||
|
"go-common/app/admin/ep/melloi/model"
|
||
|
"go-common/app/admin/ep/melloi/service"
|
||
|
"go-common/library/log"
|
||
|
bm "go-common/library/net/http/blademaster"
|
||
|
"go-common/library/net/http/blademaster/binding"
|
||
|
)
|
||
|
|
||
|
//excute performTest
|
||
|
func doPtest(c *bm.Context) {
|
||
|
var (
|
||
|
script model.Script
|
||
|
ptestParam model.DoPtestParam
|
||
|
)
|
||
|
userName := c.Request.Form.Get("userName")
|
||
|
param := c.Request.Form.Get("param")
|
||
|
resJtl := c.Request.Form.Get("resJtl")
|
||
|
jmeterLog := c.Request.Form.Get("jmeterLog")
|
||
|
cookie := c.Request.Header.Get("Cookie")
|
||
|
if err := json.Unmarshal([]byte(param), &script); err != nil {
|
||
|
log.Error("sorry,script err(%v)", err)
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
log.Info("接口名:(%s),压测脚本路径:(%s)", script.TestName, script.SavePath)
|
||
|
if script.Upload {
|
||
|
testNames := service.QueryTestNamesByJmfile(script.SavePath)
|
||
|
ptestParam = model.DoPtestParam{
|
||
|
TestNames: testNames,
|
||
|
FileName: script.SavePath,
|
||
|
LoadTime: 1800,
|
||
|
UserName: userName,
|
||
|
Upload: true,
|
||
|
ProjectName: script.ProjectName,
|
||
|
FileSplit: script.FileSplit,
|
||
|
SplitNum: script.SplitNum,
|
||
|
APIHeader: script.APIHeader,
|
||
|
}
|
||
|
} else {
|
||
|
ptestParam = model.DoPtestParam{
|
||
|
TestNames: service.StringToSlice(script.TestName),
|
||
|
FileName: script.SavePath,
|
||
|
LoadTime: script.LoadTime,
|
||
|
UserName: userName,
|
||
|
URL: script.URL,
|
||
|
FileSplit: script.FileSplit,
|
||
|
SplitNum: script.SplitNum,
|
||
|
APIHeader: script.APIHeader,
|
||
|
}
|
||
|
}
|
||
|
ptestParam.Department = script.Department
|
||
|
ptestParam.Project = script.Project
|
||
|
ptestParam.APP = script.App
|
||
|
ptestParam.Domain = script.Domain
|
||
|
ptestParam.Cookie = cookie
|
||
|
ptestParam.JmeterLog = jmeterLog
|
||
|
ptestParam.ResJtl = resJtl
|
||
|
ptestParam.ScriptID = script.ID
|
||
|
ptestParam.UseBusinessStop = script.UseBusinessStop
|
||
|
ptestParam.BusinessStopPercent = script.BusinessStopPercent
|
||
|
ptestParam.Fusing = script.Fusing
|
||
|
c.JSON(srv.DoPtest(c, ptestParam))
|
||
|
}
|
||
|
|
||
|
//addPtest 加压
|
||
|
func addPtest(c *bm.Context) {
|
||
|
var ptestAdd model.PtestAdd
|
||
|
if err := c.BindWith(&ptestAdd, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
log.Info("AddPtest ----")
|
||
|
c.JSON(nil, srv.AddPtest(c, ptestAdd))
|
||
|
}
|
||
|
|
||
|
//stopPtest
|
||
|
func stopPtest(c *bm.Context) {
|
||
|
var ptestJob model.PtestJob
|
||
|
if err := c.BindWith(&ptestJob, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
c.JSON(nil, srv.StopPtest(c, ptestJob))
|
||
|
}
|
||
|
|
||
|
//stopAllPtest
|
||
|
func stopAllPtest(c *bm.Context) {
|
||
|
var allPtestStop model.AllPtestStop
|
||
|
if err := c.BindWith(&allPtestStop, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
c.JSON(srv.QueryOrStopAllPtestByJobName(c, allPtestStop.ReportSuID, true, 3))
|
||
|
}
|
||
|
|
||
|
//reducePtest
|
||
|
func reducePtest(c *bm.Context) {
|
||
|
var (
|
||
|
reducePtest model.ReducePtest
|
||
|
resMap = make(map[string]interface{})
|
||
|
)
|
||
|
if err := c.BindWith(&reducePtest, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
message, err := srv.ReducePtest(c, reducePtest)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
resMap["message"] = message
|
||
|
c.JSON(resMap, err)
|
||
|
}
|
||
|
|
||
|
//queryAllJob
|
||
|
func queryAllJob(c *bm.Context) {
|
||
|
var (
|
||
|
ptestJob model.PtestJob
|
||
|
resMap = make(map[string]interface{})
|
||
|
)
|
||
|
if err := c.BindWith(&ptestJob, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
ptestJobs, err := srv.QueryOrStopAllPtestByJobName(c, ptestJob.ReportSuID, false, 3)
|
||
|
if err != nil {
|
||
|
log.Error("query ptestJob err", err)
|
||
|
return
|
||
|
}
|
||
|
resMap["ptest_jobs"] = ptestJobs
|
||
|
c.JSON(resMap, err)
|
||
|
}
|
||
|
|
||
|
//queryAllJobFree queryAll JobFree
|
||
|
func queryAllJobFree(c *bm.Context) {
|
||
|
var (
|
||
|
ptestJob model.PtestJob
|
||
|
resMap = make(map[string]interface{})
|
||
|
)
|
||
|
if err := c.BindWith(&ptestJob, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
ptestJobs, err := srv.QueryAllJobFree(c, &ptestJob)
|
||
|
if err != nil {
|
||
|
log.Error("query ptestJob err", err)
|
||
|
return
|
||
|
}
|
||
|
resMap["ptest_jobs"] = ptestJobs
|
||
|
c.JSON(resMap, err)
|
||
|
}
|
||
|
|
||
|
//doDebug
|
||
|
func doDebug(c *bm.Context) {
|
||
|
var script model.Script
|
||
|
var ptestParam model.DoPtestParam
|
||
|
param := c.Request.Form.Get("param")
|
||
|
userName := c.Request.Form.Get("userName")
|
||
|
if err := json.Unmarshal([]byte(param), &script); err != nil {
|
||
|
log.Error("sorry,script err(%v)", err)
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
log.Info("接口名:(%s),压测脚本路径:(%s)", script.TestName, script.SavePath)
|
||
|
if script.Upload {
|
||
|
ptestParam = model.DoPtestParam{
|
||
|
TestNames: service.QueryTestNamesByJmfile(script.SavePath),
|
||
|
FileName: script.SavePath,
|
||
|
LoadTime: 1800,
|
||
|
UserName: userName,
|
||
|
Upload: true,
|
||
|
ProjectName: script.ProjectName,
|
||
|
ResJtl: script.ResJtl,
|
||
|
JmeterLog: script.JmeterLog,
|
||
|
Department: script.Department,
|
||
|
Project: script.Project,
|
||
|
APP: script.App,
|
||
|
ScriptID: script.ID,
|
||
|
}
|
||
|
} else {
|
||
|
ptestParam = model.DoPtestParam{
|
||
|
TestNames: service.StringToSlice(script.TestName),
|
||
|
FileName: script.SavePath,
|
||
|
LoadTime: script.LoadTime,
|
||
|
UserName: userName,
|
||
|
ResJtl: script.ResJtl,
|
||
|
JmeterLog: script.JmeterLog,
|
||
|
Department: script.Department,
|
||
|
Project: script.Project,
|
||
|
APP: script.App,
|
||
|
ScriptID: script.ID,
|
||
|
Domain: script.Domain,
|
||
|
}
|
||
|
}
|
||
|
c.JSON(srv.DoPtest(c, ptestParam))
|
||
|
}
|
||
|
|
||
|
func doPtestByFile(c *bm.Context) {
|
||
|
var script model.Script
|
||
|
if err := c.BindWith(&script, binding.JSON); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
resJtl := script.ResJtl
|
||
|
jmeterLog := script.JmeterLog
|
||
|
script.ResJtl = ""
|
||
|
script.JmeterLog = ""
|
||
|
resp, err := srv.DoPtestByFile(c, script, resJtl, jmeterLog)
|
||
|
if err != nil {
|
||
|
c.JSON(err, nil)
|
||
|
return
|
||
|
}
|
||
|
c.JSON(resp, err)
|
||
|
}
|
||
|
|
||
|
//excute batch ptest
|
||
|
func doPtestBatch(c *bm.Context) {
|
||
|
var PtestBatch model.PtestBatch
|
||
|
if err := c.BindWith(&PtestBatch, binding.JSON); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
cookie := c.Request.Header.Get("Cookie")
|
||
|
status, _ := srv.DoPtestArr(c, PtestBatch, cookie)
|
||
|
var doPostMap = make(map[string]string)
|
||
|
doPostMap["status"] = status
|
||
|
c.JSON(doPostMap, nil)
|
||
|
}
|
||
|
|
||
|
//doPtestByScriptId
|
||
|
func doPtestByScriptId(c *bm.Context) {
|
||
|
var script model.Script
|
||
|
if err := c.BindWith(&script, binding.Form); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
cookie := c.Request.Header.Get("Cookie")
|
||
|
executor := c.Request.Form.Get("executor")
|
||
|
c.JSON(srv.DoPtestByScriptId(c, &script, cookie, executor))
|
||
|
}
|