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