123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- 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))
- }
|