优化测试请求
This commit is contained in:
parent
f21f9baf1f
commit
67677ed168
@ -30,9 +30,9 @@ func init() {
|
||||
RootCmd.AddCommand(runCmd)
|
||||
}
|
||||
|
||||
var account = flag.String("account", "", "account")
|
||||
var account = flag.String("account", "", "登录账号")
|
||||
var sid = flag.Int32("sid", 0, "区服ID")
|
||||
var create = flag.Bool("create", false, "account") //false 不创建新账号
|
||||
var create = flag.Bool("create", false, "是否创建新账号") //false 不创建新账号
|
||||
|
||||
func main() {
|
||||
Execute()
|
||||
|
@ -91,7 +91,7 @@ var (
|
||||
enabled: true,
|
||||
}
|
||||
tcs = append(tcs, tc)
|
||||
robot.AddTestCases(tcs)
|
||||
robot.addTestCaseAndReq(tcs)
|
||||
}
|
||||
|
||||
},
|
||||
@ -106,7 +106,7 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
//声明加入到构建器
|
||||
func (r *Robot) RunFriend() {
|
||||
r.AddTestCases(friendBuilders)
|
||||
r.addBuilders(friendBuilders)
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ var (
|
||||
}
|
||||
tcs = append(tcs, tc)
|
||||
}
|
||||
robot.AddTestCases(tcs)
|
||||
robot.addTestCaseAndReq(tcs)
|
||||
}
|
||||
|
||||
},
|
||||
@ -96,5 +96,5 @@ var (
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
func (r *Robot) RunHero() {
|
||||
r.AddTestCases(heroBuilders)
|
||||
r.addBuilders(heroBuilders)
|
||||
}
|
||||
|
@ -60,15 +60,15 @@ func (r *Robot) AccountLogin() {
|
||||
req: &pb.UserCreateReq{ //设置请求参数
|
||||
NickName: nick,
|
||||
},
|
||||
rsp: &pb.UserCreateResp{},
|
||||
// enabled: true,
|
||||
rsp: &pb.UserCreateResp{},
|
||||
enabled: true,
|
||||
}
|
||||
tcs = append(tcs, tc)
|
||||
r.AddTestCases(tcs)
|
||||
r.addTestCaseAndReq(tcs)
|
||||
}
|
||||
|
||||
},
|
||||
},
|
||||
}
|
||||
r.AddTestCases(builders)
|
||||
r.addTestCaseAndReq(builders)
|
||||
}
|
||||
|
@ -19,5 +19,5 @@ var pack_builders = []*TestCase{
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
func (r *Robot) RunPack() {
|
||||
r.AddTestCases(pack_builders)
|
||||
r.addBuilders(pack_builders)
|
||||
}
|
||||
|
@ -24,8 +24,9 @@ type Robot struct {
|
||||
user *pb.DBUser
|
||||
builderMap map[string]*TestCase
|
||||
// linkCase *LinkCase
|
||||
wg sync.WaitGroup
|
||||
ch chan string //uuid
|
||||
wg sync.WaitGroup
|
||||
reqCh chan string //请求通道uuid
|
||||
// rspCh chan string //响应通道uuid
|
||||
}
|
||||
|
||||
func NewRobot(opts *Options) *Robot {
|
||||
@ -37,7 +38,8 @@ func NewRobot(opts *Options) *Robot {
|
||||
ws: ws,
|
||||
opts: opts,
|
||||
builderMap: make(map[string]*TestCase),
|
||||
ch: make(chan string, 10),
|
||||
reqCh: make(chan string, 1),
|
||||
// rspCh: make(chan string, 10),
|
||||
}
|
||||
|
||||
return r
|
||||
@ -67,7 +69,7 @@ func (r *Robot) Run() {
|
||||
if err = proto.Unmarshal(data, msg); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
r.batchhandleRsp(msg)
|
||||
r.handleRsp(msg)
|
||||
}
|
||||
}()
|
||||
|
||||
@ -75,7 +77,7 @@ func (r *Robot) Run() {
|
||||
}
|
||||
|
||||
type TestCase struct {
|
||||
id string //uuid
|
||||
id string //用例ID 如果没有指定,会自动赋值uuid
|
||||
desc string //用例描述
|
||||
mainType string //协议类型 L1
|
||||
subType string //协议类型 L2
|
||||
@ -115,23 +117,29 @@ func (r *Robot) handleReq() {
|
||||
defer traceFunc(head.MainType, head.SubType, r.user.GetUid(), b.req)
|
||||
err := r.SendToClient(head, b.req)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
delete(r.builderMap, b.id)
|
||||
log.Print(err)
|
||||
continue
|
||||
}
|
||||
b.requested = true
|
||||
r.ch <- b.id
|
||||
r.reqCh <- b.id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//执行请求
|
||||
func (r *Robot) AddTestCases(tcs []*TestCase) {
|
||||
//加入用例并执行请求
|
||||
func (r *Robot) addTestCaseAndReq(tcs []*TestCase) {
|
||||
r.addBuilders(tcs)
|
||||
r.handleReq()
|
||||
}
|
||||
|
||||
//执行响应
|
||||
func (r *Robot) batchhandleRsp(msg *pb.UserMessage) {
|
||||
uuid := <-r.ch
|
||||
//处理响应
|
||||
func (r *Robot) handleRsp(msg *pb.UserMessage) {
|
||||
uuid := <-r.reqCh
|
||||
if uuid == "" {
|
||||
log.Printf("[%v.%v] uuid is empty", msg.MainType, msg.SubType)
|
||||
return
|
||||
}
|
||||
if v, ok := r.builderMap[uuid]; ok {
|
||||
if v.enabled &&
|
||||
(msg.MainType == v.mainType &&
|
||||
@ -140,6 +148,7 @@ func (r *Robot) batchhandleRsp(msg *pb.UserMessage) {
|
||||
if !comm.ProtoUnmarshal(msg, v.rsp) {
|
||||
return
|
||||
}
|
||||
//执行自定义打印
|
||||
if v.print == nil {
|
||||
printReply(msg, v)
|
||||
} else {
|
||||
@ -149,6 +158,7 @@ func (r *Robot) batchhandleRsp(msg *pb.UserMessage) {
|
||||
fmt.Println("==============================")
|
||||
}
|
||||
|
||||
//处理下一层用例
|
||||
if v.next != nil {
|
||||
v.next(r, v.rsp)
|
||||
}
|
||||
@ -156,9 +166,10 @@ func (r *Robot) batchhandleRsp(msg *pb.UserMessage) {
|
||||
if msg.MainType == "user" && msg.SubType == "login" {
|
||||
r.loginCallback(v.rsp)
|
||||
} else {
|
||||
//清除已执行的用例
|
||||
delete(r.builderMap, v.id)
|
||||
}
|
||||
|
||||
// r.rspCh <- v.id
|
||||
r.wg.Done()
|
||||
}
|
||||
}
|
||||
@ -166,16 +177,19 @@ func (r *Robot) batchhandleRsp(msg *pb.UserMessage) {
|
||||
|
||||
//登录回调
|
||||
func (r *Robot) loginCallback(rsp proto.Message) {
|
||||
//清除登录用例
|
||||
delete(r.builderMap, "login")
|
||||
lr := rsp.(*pb.UserLoginResp)
|
||||
if lr.Data != nil {
|
||||
r.user = lr.Data
|
||||
r.onUserLoaded()
|
||||
} else {
|
||||
r.AccountRegister(r.opts.Account, int32(r.opts.ServerId)) //请求Http接口,模拟创建新账号
|
||||
//请求Http接口,模拟创建新账号
|
||||
r.AccountRegister(r.opts.Account, int32(r.opts.ServerId))
|
||||
}
|
||||
}
|
||||
|
||||
//发送消息
|
||||
func (r *Robot) SendToClient(msg *pb.UserMessage, rsp proto.Message) error {
|
||||
//模拟客户端 每次请求都会生成新的秘钥
|
||||
msg.Sec = r.BuildSecStr()
|
||||
@ -186,28 +200,6 @@ func (r *Robot) SendToClient(msg *pb.UserMessage, rsp proto.Message) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
//在这里添加玩家成功登录以后的测试方法
|
||||
//次方法在用户登录成功后调用
|
||||
func (r *Robot) onUserLoaded() {
|
||||
//notify
|
||||
r.RunNotify()
|
||||
//user
|
||||
r.RunUser()
|
||||
//hero
|
||||
r.RunHero()
|
||||
//friend
|
||||
r.RunFriend()
|
||||
|
||||
//pack
|
||||
// r.RunPack()
|
||||
|
||||
//task
|
||||
r.RunTask()
|
||||
|
||||
// story
|
||||
r.RunStory()
|
||||
}
|
||||
|
||||
//注册账号
|
||||
func (r *Robot) AccountRegister(account string, sid int32) {
|
||||
if account == "" {
|
||||
@ -233,11 +225,11 @@ func (r *Robot) AccountRegister(account string, sid int32) {
|
||||
err = jsoniter.Unmarshal(body, regRsp)
|
||||
|
||||
if regRsp.Code == pb.ErrorCode_Success { //注册成功
|
||||
|
||||
fmt.Printf("account:%s 注册成功", regRsp.Account)
|
||||
//登录
|
||||
var user_builders = []*TestCase{
|
||||
{
|
||||
id: "login",
|
||||
desc: "登录",
|
||||
mainType: "user",
|
||||
subType: "login",
|
||||
@ -249,7 +241,7 @@ func (r *Robot) AccountRegister(account string, sid int32) {
|
||||
enabled: true,
|
||||
},
|
||||
}
|
||||
r.AddTestCases(user_builders)
|
||||
r.addTestCaseAndReq(user_builders)
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,3 +264,25 @@ func printReply(msg *pb.UserMessage, builder *TestCase) {
|
||||
func traceFunc(module string, funcName string, uid string, funcArgs interface{}) {
|
||||
log.Printf("req [%s.%s] [%s] [%v]", module, funcName, uid, funcArgs)
|
||||
}
|
||||
|
||||
//在这里添加玩家成功登录以后的测试方法
|
||||
//次方法在用户登录成功后调用
|
||||
func (r *Robot) onUserLoaded() {
|
||||
//notify
|
||||
r.RunNotify()
|
||||
//user
|
||||
r.RunUser()
|
||||
//hero
|
||||
r.RunHero()
|
||||
//friend
|
||||
r.RunFriend()
|
||||
|
||||
//pack
|
||||
// r.RunPack()
|
||||
|
||||
//task
|
||||
r.RunTask()
|
||||
|
||||
// story
|
||||
r.RunStory()
|
||||
}
|
||||
|
@ -40,5 +40,5 @@ var (
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
func (r *Robot) RunStory() {
|
||||
r.AddTestCases(storyBuilders)
|
||||
r.addBuilders(storyBuilders)
|
||||
}
|
||||
|
@ -62,5 +62,5 @@ var (
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
func (r *Robot) RunTask() {
|
||||
r.AddTestCases(taskBuilders)
|
||||
r.addBuilders(taskBuilders)
|
||||
}
|
||||
|
@ -36,5 +36,5 @@ var user_builders = []*TestCase{
|
||||
|
||||
//声明加入到构建器并发起请求
|
||||
func (r *Robot) RunUser() {
|
||||
r.AddTestCases(user_builders)
|
||||
r.addBuilders(user_builders)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user