108 lines
2.9 KiB
Go
108 lines
2.9 KiB
Go
|
package service
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"encoding/json"
|
|||
|
|
|||
|
"go-common/app/admin/ep/melloi/model"
|
|||
|
"go-common/library/log"
|
|||
|
)
|
|||
|
|
|||
|
//AddSciptSnap add scriptSnap
|
|||
|
func (s *Service) AddSciptSnap(ptestParam model.DoPtestParam, excuteId string) (scriptSnapIds []int, err error) {
|
|||
|
var (
|
|||
|
scripts []*model.Script
|
|||
|
scriptSnapId int
|
|||
|
)
|
|||
|
|
|||
|
//场景脚本快照保存逻辑
|
|||
|
if ptestParam.Type == model.SCENE_SCRIPT_TYPE {
|
|||
|
for _, script := range ptestParam.Scripts {
|
|||
|
script.SceneID = ptestParam.SceneID
|
|||
|
if scriptSnapId, err = s.AddScriptSnapInfo(script, excuteId); err != nil {
|
|||
|
log.Error("s.AddScriptSnapInfo err :(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
scriptSnapIds = append(scriptSnapIds, scriptSnapId)
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//单场景http 脚本的快照保存
|
|||
|
if scripts, err = s.QueryScripts(&model.Script{ID: ptestParam.ScriptID}, 1, 5); err != nil {
|
|||
|
log.Error(" s.QueryScripts err :(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
if scriptSnapId, err = s.AddScriptSnapInfo(scripts[0], excuteId); err != nil {
|
|||
|
log.Error("s.AddScriptSnapInfo err :(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
scriptSnapIds = append(scriptSnapIds, scriptSnapId)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//AddScriptSnapInfo Add scriptSnap Info
|
|||
|
func (s *Service) AddScriptSnapInfo(script *model.Script, excuteId string) (scriptSnapId int, err error) {
|
|||
|
var JSON []byte
|
|||
|
scriptSnap := model.ScriptSnap{ScriptID: script.ID}
|
|||
|
script.ID = 0
|
|||
|
|
|||
|
if JSON, err = json.Marshal(script); err != nil {
|
|||
|
log.Error(" json.Marshal(script) error :(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
if err = json.Unmarshal([]byte(string(JSON)), &scriptSnap); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
scriptSnap.ExecuteID = excuteId
|
|||
|
if scriptSnapId, err = s.dao.AddScriptSnap(&scriptSnap); err != nil {
|
|||
|
log.Error("s.dao.AddScriptSnap error :(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//AddSnap add snap
|
|||
|
func (s *Service) AddSnap(c context.Context, ptestParam model.DoPtestParam, executeID, jobName, jobNamed string) (scriptSnapIDs []int, err error) {
|
|||
|
if ptestParam.Type == model.PROTOCOL_GRPC {
|
|||
|
if scriptSnapIDs, err = s.AddGRPCSnap(ptestParam.ScriptID, executeID); err != nil {
|
|||
|
log.Error("save grpc snap failed,(%v)", err)
|
|||
|
s.DeleteJob(context.TODO(), jobName)
|
|||
|
return
|
|||
|
}
|
|||
|
} else {
|
|||
|
//用jobNamed 表示执行id,即是 ExcuteId
|
|||
|
if scriptSnapIDs, err = s.AddSciptSnap(ptestParam, jobNamed); err != nil {
|
|||
|
log.Error("s.AddSciptSnap err :(%v)", err)
|
|||
|
s.DeleteJob(context.TODO(), jobName)
|
|||
|
return
|
|||
|
}
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// AddGRPCSnap Add GRPC Snap
|
|||
|
func (s *Service) AddGRPCSnap(grpcID int, executeID string) (snapIDs []int, err error) {
|
|||
|
var (
|
|||
|
grpc *model.GRPC
|
|||
|
grpcSnap *model.GRPCSnap
|
|||
|
j []byte
|
|||
|
)
|
|||
|
if grpc, err = s.dao.QueryGRPCByID(grpcID); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
grpcSnap = &model.GRPCSnap{GRPCID: grpc.ID, ExecuteID: executeID}
|
|||
|
grpc.ID = 0
|
|||
|
if j, err = json.Marshal(grpc); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if err = json.Unmarshal([]byte(string(j)), grpcSnap); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if err = s.dao.CreateGRPCSnap(grpcSnap); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
return []int{grpcSnap.ID}, nil
|
|||
|
}
|