优化机器人测试输入出

This commit is contained in:
zhaocy 2022-06-08 10:32:52 +08:00
parent ce0cc9385f
commit 7223f11afb
5 changed files with 91 additions and 51 deletions

33
cmd/robot/friend.go Normal file
View File

@ -0,0 +1,33 @@
package robot
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"log"
)
func (r *Robot) handleFriendMsg(msg *pb.UserMessage) {
switch msg.SubType {
case "add":
r.handleFriendAdd(msg)
}
}
//添加好友
func (r *Robot) FriendAdd() {
req := &pb.FriendAddReq{}
head := &pb.UserMessage{MainType: "friend", SubType: "add"}
defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req)
err := r.SendToClient(head, req)
if err != nil {
log.Fatal(err)
}
}
func (r *Robot) handleFriendAdd(msg *pb.UserMessage) {
rsp := &pb.FriendAddRsp{}
if !comm.ProtoDecode(msg, rsp) {
return
}
printReply(msg, rsp)
}

View File

@ -2,7 +2,6 @@ package robot
import ( import (
"fmt" "fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/utils" "go_dreamfactory/utils"
"log" "log"
@ -10,7 +9,6 @@ import (
jsoniter "github.com/json-iterator/go" jsoniter "github.com/json-iterator/go"
"github.com/nacos-group/nacos-sdk-go/util" "github.com/nacos-group/nacos-sdk-go/util"
"google.golang.org/protobuf/proto"
) )
type LoginParam struct { type LoginParam struct {
@ -21,14 +19,14 @@ type LoginParam struct {
func (r *Robot) BuildSecStr() string { func (r *Robot) BuildSecStr() string {
jsonByte, _ := jsoniter.Marshal(&LoginParam{ jsonByte, _ := jsoniter.Marshal(&LoginParam{
Account: r.Opts.Account, Account: r.opts.Account,
ServerId: r.Opts.ServerId, ServerId: r.opts.ServerId,
TimeStamp: time.Now().Unix(), TimeStamp: time.Now().Unix(),
}) })
jsonBase64 := utils.Base64Encode(jsonByte) jsonBase64 := utils.Base64Encode(jsonByte)
log.Printf("client base64:%s", jsonBase64) // log.Printf("client base64:%s", jsonBase64)
clientMd5key := util.Md5(jsonBase64) clientMd5key := util.Md5(jsonBase64)
log.Printf("client md5:%s", clientMd5key) // log.Printf("client md5:%s", clientMd5key)
return fmt.Sprintf("CE:%s%s", clientMd5key, jsonBase64) return fmt.Sprintf("CE:%s%s", clientMd5key, jsonBase64)
} }
@ -36,7 +34,7 @@ func (r *Robot) BuildSecStr() string {
func (r *Robot) AccountLogin() { func (r *Robot) AccountLogin() {
//登录 //登录
sec := r.BuildSecStr() sec := r.BuildSecStr()
log.Printf("client secret key:%s", sec) // log.Printf("client secret key:%s", sec)
loginReg := &pb.UserLoginReq{ loginReg := &pb.UserLoginReq{
Sec: sec, Sec: sec,
} }
@ -45,13 +43,11 @@ func (r *Robot) AccountLogin() {
MainType: "user", MainType: "user",
SubType: "login", SubType: "login",
} }
if comm.ProtoEncode(loginReg, head) { defer traceFunc(head.MainType, head.SubType, "0", loginReg)
data, _ := proto.Marshal(head) err := r.SendToClient(head, loginReg)
err := r.SendToClient(data)
if err != nil { if err != nil {
log.Fatalf("send err:%v", err) log.Fatalf("send err:%v", err)
} }
}
log.Printf("%s login ", r.Opts.Account) log.Printf("account:[%s] login...", r.opts.Account)
} }

View File

@ -9,14 +9,15 @@ import (
"log" "log"
"net/http" "net/http"
"github.com/golang/protobuf/proto"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
jsoniter "github.com/json-iterator/go" jsoniter "github.com/json-iterator/go"
"google.golang.org/protobuf/proto"
) )
type Robot struct { type Robot struct {
ws *websocket.Conn ws *websocket.Conn
Opts *Options opts *Options
user *pb.Cache_UserData
} }
func NewRobot(opts *Options) *Robot { func NewRobot(opts *Options) *Robot {
@ -26,7 +27,7 @@ func NewRobot(opts *Options) *Robot {
} }
r := &Robot{ r := &Robot{
ws: ws, ws: ws,
Opts: opts, opts: opts,
} }
return r return r
@ -34,9 +35,9 @@ func NewRobot(opts *Options) *Robot {
func (r *Robot) Run() { func (r *Robot) Run() {
log.Print("Robot running...") log.Print("Robot running...")
log.Printf("websocket %s \n", r.Opts.WsUrl) log.Printf("websocket %s \n", r.opts.WsUrl)
if r.Opts.Create { //创建新用户 if r.opts.Create { //创建新用户
r.AccountRegister() r.AccountRegister()
} else { } else {
r.AccountLogin() r.AccountLogin()
@ -63,10 +64,11 @@ func (r *Robot) Run() {
//模块处理 //模块处理
func (r *Robot) handleMsg(msg *pb.UserMessage) { func (r *Robot) handleMsg(msg *pb.UserMessage) {
log.Printf("route: %s.%s", msg.MainType, msg.SubType)
switch msg.MainType { switch msg.MainType {
case "user": case "user":
r.handleUserMsg(msg) r.handleUserMsg(msg)
case "friend":
r.handleFriendMsg(msg)
default: default:
log.Fatal("module route no exist") log.Fatal("module route no exist")
} }
@ -76,19 +78,24 @@ func (r *Robot) handleMsg(msg *pb.UserMessage) {
func (r *Robot) onUserLoaded() { func (r *Robot) onUserLoaded() {
//user //user
r.CreateUser("user671") r.CreateUser("user671")
//friend
r.FriendAdd()
} }
func (r *Robot) SendToClient(data []byte) error { func (r *Robot) SendToClient(msg *pb.UserMessage, rsp proto.Message) error {
if comm.ProtoEncode(rsp, msg) {
data, _ := proto.Marshal(msg)
return r.ws.WriteMessage(websocket.BinaryMessage, data) return r.ws.WriteMessage(websocket.BinaryMessage, data)
} }
return nil
}
//注册账号 //注册账号
func (r *Robot) AccountRegister() { func (r *Robot) AccountRegister() {
//http //http
regReq := &pb.UserRegisterReq{} regReq := &pb.UserRegisterReq{}
jsonByte, _ := json.Marshal(regReq) jsonByte, _ := json.Marshal(regReq)
req, err := http.NewRequest("POST", r.Opts.RegUrl, bytes.NewReader(jsonByte)) req, err := http.NewRequest("POST", r.opts.RegUrl, bytes.NewReader(jsonByte))
if err != nil { if err != nil {
log.Fatalf("account register err %v", err) log.Fatalf("account register err %v", err)
} }
@ -115,12 +122,18 @@ func (r *Robot) AccountRegister() {
MainType: "user", MainType: "user",
SubType: "login", SubType: "login",
} }
if comm.ProtoEncode(loginReg, head) { err = r.SendToClient(head, loginReg)
err = r.SendToClient(head.Data)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
}
} }
} }
func printReply(msg *pb.UserMessage, rsp interface{}) {
log.Printf("rsp [%s.%s] [%d] [%v]", msg.MainType, msg.SubType, msg.Code, rsp)
}
func traceFunc(module string, funcName string, uid string, funcArgs interface{}) {
log.Printf("req [%s.%s] [%s] [%v]", module, funcName, uid, funcArgs)
}

View File

@ -4,45 +4,36 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"log" "log"
"google.golang.org/protobuf/proto"
) )
func (r *Robot) handleUserMsg(msg *pb.UserMessage) { func (r *Robot) handleUserMsg(msg *pb.UserMessage) {
switch msg.SubType { switch msg.SubType {
case "login": case "login":
handleLogin(r, msg) r.handleLogin(msg)
case "create": case "create":
handleCreateUser(r, msg) r.handleCreateUser(msg)
} }
} }
//处理登录响应数据 //处理登录响应数据
func handleLogin(r *Robot, msg *pb.UserMessage) { func (r *Robot) handleLogin(msg *pb.UserMessage) {
rsp := &pb.UserLoginResp{} rsp := &pb.UserLoginResp{}
if !comm.ProtoDecode(msg, rsp) { if !comm.ProtoDecode(msg, rsp) {
return return
} }
log.Printf("登录返回: %v", rsp) printReply(msg, rsp)
//是否有登录数据返回 //是否有登录数据返回
if rsp != nil { if rsp != nil {
r.user = rsp.Data
r.onUserLoaded() r.onUserLoaded()
} else { } else {
r.AccountRegister() //请求Http接口模拟创建新账号 r.AccountRegister() //请求Http接口模拟创建新账号
} }
} }
func handleCreateUser(r *Robot, msg *pb.UserMessage) { //创角
rsp := &pb.UserCreateRsp{}
if !comm.ProtoDecode(msg, rsp) {
return
}
log.Printf("创角返回: %v", rsp)
}
//创角色
func (r *Robot) CreateUser(NickName string) { func (r *Robot) CreateUser(NickName string) {
req := &pb.UserCreateReq{ req := &pb.UserCreateReq{
NickName: NickName, NickName: NickName,
@ -53,12 +44,17 @@ func (r *Robot) CreateUser(NickName string) {
SubType: "create", SubType: "create",
} }
if comm.ProtoEncode(req, head) { defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req)
data, _ := proto.Marshal(head) err := r.SendToClient(head, req)
err := r.SendToClient(data)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
} }
func (r *Robot) handleCreateUser(msg *pb.UserMessage) {
rsp := &pb.UserCreateRsp{}
if !comm.ProtoDecode(msg, rsp) {
return
}
printReply(msg, rsp)
} }

View File

@ -3,6 +3,7 @@ package friend
import ( import (
"context" "context"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
) )
@ -18,6 +19,7 @@ func (this *FriendComp) Search(ctx context.Context, session comm.IUserSession, r
//添加好友 //添加好友
func (this *FriendComp) Add(ctx context.Context, session comm.IUserSession, req *pb.FriendAddReq) error { func (this *FriendComp) Add(ctx context.Context, session comm.IUserSession, req *pb.FriendAddReq) error {
log.Debug("add")
return nil return nil
} }