From c87bca90040c9dee56c35afdd7baf26f8faccb68 Mon Sep 17 00:00:00 2001 From: zhaocy Date: Fri, 15 Jul 2022 10:37:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/cmd.go | 2 ++ cmd/robot/addRes.go | 44 ------------------------ cmd/robot/friend.go | 2 +- cmd/robot/hero.go | 4 +-- cmd/robot/login.go | 4 +-- cmd/robot/options.go | 1 + cmd/robot/pack.go | 4 +-- cmd/robot/robot.go | 79 +++++++++++++++++++++++++++---------------- cmd/robot/user.go | 14 ++++---- modules/modulebase.go | 4 ++- 10 files changed, 70 insertions(+), 88 deletions(-) delete mode 100644 cmd/robot/addRes.go diff --git a/cmd/cmd.go b/cmd/cmd.go index b5cdced36..d18bbb67b 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -35,6 +35,7 @@ func init() { var account = flag.String("account", "", "登录账号") var sid = flag.Int32("sid", 0, "区服ID") var create = flag.Bool("create", false, "是否创建新账号") //false 不创建新账号 +var role = flag.Bool("role", false, "创角") func main() { Execute() @@ -49,6 +50,7 @@ var runCmd = &cobra.Command{ opts.Create = *create opts.Account = *account opts.ServerId = *sid + opts.Role = *role r := robot.NewRobot(opts) r.Run() }, diff --git a/cmd/robot/addRes.go b/cmd/robot/addRes.go deleted file mode 100644 index c92c1bc9c..000000000 --- a/cmd/robot/addRes.go +++ /dev/null @@ -1,44 +0,0 @@ -package robot - -import ( - "go_dreamfactory/comm" - "go_dreamfactory/modules/user" - "go_dreamfactory/pb" -) - -var ( - addResBuilders = []*TestCase{ - { - desc: "添加资源", - mainType: string(comm.ModuleUser), - subType: user.UserSubTypeAddRes, - req: &pb.UserAddResReq{ - Res: &pb.UserAssets{ - A: "item", - T: "10001", - N: 1000, - }, - }, - rsp: &pb.UserAddResResp{}, - enabled: true, - }, - { - desc: "添加资源2", - mainType: string(comm.ModuleUser), - subType: user.UserSubTypeAddRes, - req: &pb.UserAddResReq{ - Res: &pb.UserAssets{ - A: "item", - T: "10011", - N: 1000, - }, - }, - rsp: &pb.UserAddResResp{}, - enabled: true, - }, - } -) - -func (r *Robot) RunAddRes() { - r.addBuilders(addResBuilders) -} diff --git a/cmd/robot/friend.go b/cmd/robot/friend.go index 40fc95760..cbc1af51c 100644 --- a/cmd/robot/friend.go +++ b/cmd/robot/friend.go @@ -91,7 +91,7 @@ var ( enabled: true, } tcs = append(tcs, tc) - robot.addTestCaseAndReq(tcs) //这里一定要调用此方法才会发送请求 + robot.addBuilders(tcs) //这里一定要调用此方法才会发送请求 } }, diff --git a/cmd/robot/hero.go b/cmd/robot/hero.go index 6f33e33a9..9de505b5f 100644 --- a/cmd/robot/hero.go +++ b/cmd/robot/hero.go @@ -54,12 +54,12 @@ var ( enabled: true, }, } - robot.addTestCaseAndReq(tcs) + robot.addBuilders(tcs) }, } tcs = append(tcs, tc) } - robot.addTestCaseAndReq(tcs) //这里一定要调用此方法才会发送请求 + robot.addBuilders(tcs) //这里一定要调用此方法才会发送请求 } }, diff --git a/cmd/robot/login.go b/cmd/robot/login.go index 9e5efca0f..7264e407f 100644 --- a/cmd/robot/login.go +++ b/cmd/robot/login.go @@ -60,8 +60,8 @@ func (r *Robot) AccountLogin() { req: &pb.UserCreateReq{ //设置请求参数 NickName: nick, }, - rsp: &pb.UserCreateResp{}, - // enabled: r.enable, + rsp: &pb.UserCreateResp{}, + enabled: r.enable, } tcs = append(tcs, tc) r.addBuilders(tcs) diff --git a/cmd/robot/options.go b/cmd/robot/options.go index 47ae39284..878f3f424 100644 --- a/cmd/robot/options.go +++ b/cmd/robot/options.go @@ -7,6 +7,7 @@ type Options struct { Create bool Secretkey string //秘钥串 ServerId int32 //区服ID + Role bool //是否创角 } func DefaultOpts() *Options { diff --git a/cmd/robot/pack.go b/cmd/robot/pack.go index bf2fe8411..777d8e7fe 100644 --- a/cmd/robot/pack.go +++ b/cmd/robot/pack.go @@ -12,8 +12,8 @@ var pack_builders = []*TestCase{ mainType: string(comm.ModulePack), subType: "queryuserpackreq", // req: &pb.Pack_Getlist_Req{IType: 1}, - rsp: &pb.UserCreateResp{}, - enabled: true, + rsp: &pb.UserCreateResp{}, + // enabled: true, }, } diff --git a/cmd/robot/robot.go b/cmd/robot/robot.go index 3781d312d..41fdeccd2 100644 --- a/cmd/robot/robot.go +++ b/cmd/robot/robot.go @@ -89,28 +89,28 @@ func (r *Robot) Run() { if r.opts.Account == "" { zlog.Fatal("WARNNING: account is required !!!") } + r.enable = r.opts.Role r.AccountLogin() } - go func() { - for { - r.handleRsp() - } - }() + // go func() { + // for { + // r.handleRsp() + // } + // }() - ticker := time.NewTicker(time.Second * 65) + ticker := time.NewTicker(time.Second * 5) go func() { for { - select { - case <-ticker.C: - if len(r.builderMap) == 0 { - r.printReport(&TestReport{ - caseTotal: r.caseTotal, - caseSuccess: r.caseSuccess, - caseError: r.caseError, - }) - os.Exit(0) - } + r.printBuilders() + <-ticker.C + if len(r.builderMap) == 0 { + r.printReport(&TestReport{ + caseTotal: r.caseTotal, + caseSuccess: r.caseSuccess, + caseError: r.caseError, + }) + os.Exit(0) } } }() @@ -149,13 +149,20 @@ func (r *Robot) addBuilders(builders []*TestCase) { } } +func (r *Robot) printBuilders() { + for k, v := range r.builderMap { + zlog.Debugf("%v %s.%s", k, v.mainType, v.subType) + } +} + //处理用例,发送请求 func (r *Robot) handleReq() { - go func() { + // go func() { + for len(r.builderMap) > 0 { for _, b := range r.builderMap { if b.enabled && b.req != nil && !b.requested { time.Sleep(time.Millisecond * 500) - r.reqCh <- b.id + // r.reqCh <- b.id b.start = time.Now() r.start = time.Now() head := &pb.UserMessage{MainType: b.mainType, SubType: b.subType} @@ -166,9 +173,12 @@ func (r *Robot) handleReq() { zlog.Errorf("send to client err:%v", err) } b.requested = true + + r.handleRsp(b.id) } } - }() + } + // }() } //加入用例并执行请求 @@ -196,12 +206,11 @@ func (r *Robot) handleNotify(uuid string, msg *pb.UserMessage) { r.printReply(msg, tc) delete(r.builderMap, uuid) - return } } //处理响应 -func (r *Robot) handleRsp() { +func (r *Robot) handleRsp(id string) { defer func() { r.caseTotal++ }() @@ -215,14 +224,19 @@ func (r *Robot) handleRsp() { zlog.Fatalf("unmarshal err:%v", err) } - uuid := <-r.reqCh + uuid, _ := r.findTestCase(msg) + if uuid == "" { + uuid = id + } + // uuid := <-r.reqCh + r.handleNotify(uuid, msg) if v, ok := r.builderMap[uuid]; ok { - r.handleNotify(uuid, msg) - if v.enabled && - (msg.MainType == v.mainType && - msg.SubType == v.subType) && - v.requested { + + // if v.enabled && + // (msg.MainType == v.mainType && + // msg.SubType == v.subType) && + // v.requested { v.hs = time.Since(v.start) if !comm.ProtoUnmarshal(msg, v.rsp) { @@ -230,7 +244,6 @@ func (r *Robot) handleRsp() { } //处理下一层用例 - // r.goNext(v) if v.next != nil { v.next(r, v.rsp) } @@ -253,7 +266,16 @@ func (r *Robot) handleRsp() { } r.caseSuccess++ } + // } +} + +func (r *Robot) findTestCase(msg *pb.UserMessage) (string, bool) { + for k, v := range r.builderMap { + if v.mainType == msg.MainType && v.subType == msg.SubType { + return k, true + } } + return "", false } //登录回调 @@ -439,7 +461,6 @@ func (r *Robot) onUserLoaded() { //user r.RunUser() - r.RunAddRes() //hero r.RunHero() //friend diff --git a/cmd/robot/user.go b/cmd/robot/user.go index fc3bbb260..e3c8f96d8 100644 --- a/cmd/robot/user.go +++ b/cmd/robot/user.go @@ -17,19 +17,19 @@ var user_builders = []*TestCase{ NickName: "乐谷70616", }, rsp: &pb.UserCreateResp{}, - enabled: true, + // enabled: true, }, { desc: "添加资源", mainType: string(comm.ModuleUser), - subType: user.UserSubTypeAddRes, - req: &pb.UserAddResReq{ //设置请求参数 + subType: "addres", + req: &pb.UserAddResReq{ Res: &pb.UserAssets{ - A: comm.ResGold, - T: "", - N: 100, + A: "item", + T: "10011", + N: 999, }, }, - rsp: &pb.UserAddResResp{}, + rsp: &pb.UserAddResResp{}, // enabled: true, }, } diff --git a/modules/modulebase.go b/modules/modulebase.go index 669243116..374fe09a7 100644 --- a/modules/modulebase.go +++ b/modules/modulebase.go @@ -12,6 +12,7 @@ import ( cfg "go_dreamfactory/sys/configure/structs" "strconv" + "github.com/spf13/cast" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" ) @@ -224,7 +225,8 @@ func (this *ModuleBase) DispenseRes(uid string, res []*cfg.Game_atn, bPush bool) code = this.ModuleUser.AddAttributeValue(uid, v.T, v.N, bPush) } else if v.A == comm.ItemType { //道具资源 - resID, _ = strconv.Atoi(v.T) + resID = cast.ToInt(v.T) + // resID, _ = strconv.Atoi(v.T) code = this.ModuleItems.AddItem(source, uid, int32(resID), v.N, bPush) } else if v.A == comm.HeroType { //卡片资源 resID, _ = strconv.Atoi(v.T)