| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708 |
- package model
- import (
- "log"
- "math/rand"
- "net/url"
- "rocommon"
- "rocommon/service"
- "rocommon/socket"
- "rocommon/util"
- "roserver/serverproto"
- "strconv"
- "sync"
- "time"
- )
- var (
- cliLock sync.Mutex
- totalCreateNum int = 0
- totalCreateTime uint64 = 0
- totalConnNum int = 0
- totalSendMsgNum int = 0
- //TmpIpStr string = "127.0.0.1:21001"
- TmpIpStr string = "192.168.10.158:21011"
- TestBeginTime uint64
- //读取机器人压测数据文件
- BenchmarkMsgDataList []*RobotBenchmarkSt
- lockKvTime sync.Mutex
- reqAckMsgKvTimeList = map[int]MsgKVTimeInfo{}
- )
- type RobotBenchmarkSt struct {
- MsgTime uint64
- MsgData []byte
- MsgId uint32
- }
- type MsgKVTimeInfo struct {
- AckMsgId int
- TotalTime uint64 //总时间
- TotalCount uint32 //次数
- MsgName string
- }
- var MaxConnNum = 20
- func Client(id int) {
- defer func() {
- //打印奔溃信息
- if err := recover(); err != nil {
- log.Printf("err=%v", err)
- }
- }()
- queue := service.NewEventQueue()
- queue.StartQueue()
- //node := socket.NewServerNode("tcpConnector", "client", "192.168.10.158:22002", queue)
- node := socket.NewServerNode("tcpConnector", "client", TmpIpStr, nil)
- //node := socket.NewServerNode("tcpConnector", "client", "47.102.45.26:21011", queue)
- rv := rocommon.NewNetSyncRecv(node)
- socket.SetProcessorRPC(node, "tcp.demo", rv.EventCB())
- node.(rocommon.TCPConnector).SetReconnectTime(20 * time.Millisecond)
- node.Start()
- rv.WaitMsg(rocommon.SessionConnected{})
- cliLock.Lock()
- totalConnNum++
- //log.Print("totalConnNum:", totalConnNum)
- if totalConnNum >= MaxConnNum {
- //log.Print("totalConnNum:", totalConnNum)
- }
- cliLock.Unlock()
- //握手处理
- var wg sync.WaitGroup
- aesPass := ""
- wg.Add(1)
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCHandShakeNtf:
- //log.Printf("SCHandShakeNtf msg=%v", msg.CryptPass)
- aesPass = msg.CryptPass
- wg.Done()
- }
- })
- wg.Wait()
- //aesPass := ""
- //wg.Add(1)
- //rv.Recv(func(ev rocommon.ProcEvent) {
- // switch msg := ev.Msg().(type) {
- // case *serverproto.SCHandShakeAck:
- // log.Printf("SCHandShakeAck msg=%v", msg.CryptPass)
- // aesPass = msg.CryptPass
- // }
- // wg.Done()
- //})
- //wg.Wait()
- createBeginTime := util.GetTimeMilliseconds()
- openid := "editor01" + *service.TempParam + strconv.Itoa(id)
- //openid = "chy001"
- //openid = "editor3abc31"
- node.(rocommon.TCPConnector).Session().SetAES(aesPass)
- //openid = "editor11abc2"
- //openid = "aebfrtbxs4nvgadh4"
- loginReqMsg := &serverproto.CSLoginReq{
- OpenId: openid,
- Platform: "PC",
- SelectZone: 4,
- //Platform: "SDKUni",
- //Platform: "",
- //CryptPass: "wenting123456789",
- //PlatformToken: "@171@91@163@82@111@88@112@151@97@155@107@109@152@105@105@152@86@96@87@172@159@149@90@114@83@110@153@101@155@108@111@110@150@157@97@147@106@108@109@156@104@108@155@159@104@149@149@107@149@150@101@107@108@146@110@104@149@117@149@93@95@85@99@89@164@162@157@149@87@112@107@104@100@99@87@156@87@109@86@99@86@177",
- //PlatformToken: "cb999e7904332d3eb13d9a5ba5f90472vhnkgdem",
- //PlatformToken: "{\"gameid\":\"ma112\",\"login_channel\":\"netease\",\"app_channel\":\"netease_appchannel\",\"platform\":\"ad\",\"sdkuid\":\"aebfrtbxs4nvgadh\",\"udid\":\"117984ba34acb4c7\",\"sessionid\":\"1-eyJzIjogInlkXzIwMDAwMDAwZGNmNmVjZWIxNGI2MWM0MTdmMTg0ODU1NDdjMTc0NTIiLCAiZ19pIjogImFlY2ZvaXl6eWFhYWFhaWYiLCAidCI6IDcsICJ1X2kiOiAiOTUzN0U2RkI5MkMzODhDRTAwQzRDMkREMjYwRENBQTZBOTgyNDYxQ0NDNjVCNEQzRDZCNUExNzQyQTY0NkRBOTlFN0M2NzgwREIzQ0MxNDYwRjA2NzA2NTE2OEQwQkIyIn0g\",\"sdk_version\":\"3.3.1\",\"deviceid\":\"aiav7eueoxja4jpz-d\",\"step\":\"-626036401\",\"ip\":\"127.0.0.1\",\"hostid\":60}",
- //PlatformToken: "{\"gameid\":\"ma112\",\"login_channel\":\"netease\",\"app_channel\":\"netease_appchannel\",\"platform\":\"ad\",\"sdkuid\":\"aebfrtbxs4nvgadh\",\"udid\":\"117984ba34acb4c7\",\"sessionid\":\"1-eyJzIjogInlkXzIwMDAwMDAwZGNmNmVjZWIxNGI2MWM0MTdmMTg0ODU1NDdjMTc0NTIiLCAiZ19pIjogImFlY2ZvaXl6eWFhYWFhaWYiLCAidCI6IDcsICJ1X2kiOiAiOTUzN0U2RkI5MkMzODhDRTAwQzRDMkREMjYwRENBQTZBOTgyNDYxQ0NDNjVCNEQzRDZCNUExNzQyQTY0NkRBOTlFN0M2NzgwREIzQ0MxNDYwRjA2NzA2NTE2OEQwQkIyIn0g\",\"sdk_version\":\"3.3.1\",\"deviceid\":\"aiav7eueoxja4jpz-d\",\"step\":\"-626036401\",\"ip\":\"127.0.0.1\",\"hostid\":60}",
- }
- //node.(rocommon.TCPConnector).Session().SetAES(aesPass)
- //log.Println("sessionmain:", node.(rocommon.TCPConnector).Session())
- node.(rocommon.TCPConnector).Session().Send(loginReqMsg)
- //log.Println("openid:", openid)
- //var Addcount int32 = 1.0
- //var worldBossUid uint64 = 0
- if *service.TestTypeParam == 1 {
- //注册到登录成功阶段
- GameRegister(openid, rv, createBeginTime)
- } else if *service.TestTypeParam == 2 {
- //发起压测数据阶段
- GameBenchmark(openid, rv, createBeginTime)
- } else if *service.TestTypeParam == 3 {
- //聊天压测
- GameChatMsg(openid, rv, createBeginTime)
- } else if *service.TestTypeParam == 4 {
- GameYuanHangMsg(openid, rv, createBeginTime)
- }
- }
- func Clientws(id int) {
- defer func() {
- //打印奔溃信息
- if err := recover(); err != nil {
- log.Printf("err=%v", err)
- }
- }()
- queue := service.NewEventQueue()
- queue.StartQueue()
- u := url.URL{Scheme: "ws", Host: TmpIpStr, Path: "/"}
- //node := socket.NewServerNode("tcpConnector", "client", "192.168.10.158:22002", queue)
- node := socket.NewServerNode("wsConnector", "wsclient", u.String(), nil)
- //node := socket.NewServerNode("tcpConnector", "client", "47.102.45.26:21011", queue)
- rv := rocommon.NewNetSyncRecv(node)
- socket.SetProcessorRPC(node, "ws.demo", rv.EventCB())
- node.(rocommon.TCPConnector).SetReconnectTime(20 * time.Millisecond)
- node.Start()
- rv.WaitMsg(rocommon.SessionConnected{})
- cliLock.Lock()
- totalConnNum++
- if totalConnNum >= MaxConnNum {
- }
- cliLock.Unlock()
- //握手处理
- var wg sync.WaitGroup
- aesPass := ""
- wg.Add(1)
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCHandShakeNtf:
- //log.Printf("SCHandShakeNtf msg=%v", msg.CryptPass)
- aesPass = msg.CryptPass
- wg.Done()
- }
- })
- wg.Wait()
- createBeginTime := util.GetTimeMilliseconds()
- openid := "editor4" + *service.TempParam + strconv.Itoa(id)
- node.(rocommon.TCPConnector).Session().SetAES(aesPass)
- loginReqMsg := &serverproto.CSLoginReq{
- OpenId: openid,
- Platform: "PC",
- SelectZone: 4,
- }
- node.(rocommon.TCPConnector).Session().Send(loginReqMsg)
- if *service.TestTypeParam == 1 {
- //注册到登录成功阶段
- GameRegister(openid, rv, createBeginTime)
- } else if *service.TestTypeParam == 2 {
- //发起压测数据阶段
- GameBenchmark(openid, rv, createBeginTime)
- } else if *service.TestTypeParam == 3 {
- //聊天压测
- GameChatMsg(openid, rv, createBeginTime)
- }
- }
- func GameRegister(openid string, rv *rocommon.NetSyncRecv, createBeginTime uint64) {
- for {
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCLoginAck:
- //log.Printf("recv SCLoginAck[%v]...\n", ev.Msg())
- //ev.Session().Send(&serverproto.CSGMAddMoney{Coin:1000,})
- if msg.Error == int32(serverproto.ErrorCode_ERROR_ROLE_NOT_FOUND) {
- req := &serverproto.CSCreateRoleReq{
- OpenId: openid,
- Country: 1,
- Eye: 1002,
- Head: 10001,
- Hair: 1003,
- HairAvatar: 1001,
- JobId: 10000,
- Sex: 2,
- }
- ev.Session().Send(req)
- }
- case *serverproto.SSAccountGetRoleListAck:
- //log.Printf("recv SSAccountGetRoleListAck[%v]...\n", ev.Msg())
- case *serverproto.SCCreateRoleAck:
- //log.Printf("recv SCCreateRoleAck[%v]...\n", ev.Msg())
- case *serverproto.SCStartupInfoNtf:
- //log.Println("recv SCStartupInfoNtf:", ev.Msg())
- cliLock.Lock()
- totalCreateNum++
- totalCreateTime += util.GetTimeMilliseconds() - createBeginTime
- if totalCreateNum%20 == 0 || totalCreateNum >= totalConnNum {
- //deltaTime := util.GetTimeMilliseconds() - testBeginTime
- //util.InfoF("[onlinenum=%v,pertime=%v(ms),totaltime=%v(ms)]", totalCreateNum, float64(totalCreateTime)/float64(totalCreateNum), deltaTime)
- util.InfoF("[onlinenum=%v]", totalCreateNum)
- }
- //log.Printf("totalCreateNum:%v", totalCreateNum)
- cliLock.Unlock()
- reqMsg := &serverproto.CSChatMessageReq{
- Type: int32(serverproto.ChatMessageType_CMT_WORLD),
- Message: &serverproto.ChatMessageInfo{
- Message: "messagetest0111111",
- SendTime: util.GetTimeMilliseconds(),
- },
- }
- ev.Session().Send(reqMsg)
- }
- //log.Printf("type=%v msg=%v", reflect.TypeOf(ev.Msg()).Elem().String(), ev.Msg())
- })
- }
- }
- func GameBenchmark(openid string, rv *rocommon.NetSyncRecv, createBeginTime uint64) {
- msgSendIdx := 0
- var msgSendBeginTime uint64 = 0
- var msgSendTime uint64 = 0
- //var tmpSendTime uint64 = 0
- var pingTime uint64 = 0
- bLoginOk := false
- for {
- if !bLoginOk {
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCLoginAck:
- //log.Printf("recv SCLoginAck[%v]...\n", ev.Msg())
- //ev.Session().Send(&serverproto.CSGMAddMoney{Coin:1000,})
- if msg.Error == int32(serverproto.ErrorCode_ERROR_ROLE_NOT_FOUND) {
- req := &serverproto.CSCreateRoleReq{
- OpenId: openid,
- Country: 1,
- //Eye: 1002,
- //Head: 10001,
- //Hair: 1003,
- //HairAvatar: 1001,
- JobId: 10000,
- Sex: 2,
- }
- ev.Session().Send(req)
- }
- case *serverproto.SSAccountGetRoleListAck:
- //log.Printf("recv SSAccountGetRoleListAck[%v]...\n", ev.Msg())
- case *serverproto.SCCreateRoleAck:
- //log.Printf("recv SCCreateRoleAck[%v]...\n", ev.Msg())
- case *serverproto.SCStartupInfoNtf:
- //log.Println("recv SCStartupInfoNtf:", ev.Msg())
- cliLock.Lock()
- totalCreateNum++
- totalCreateTime += ev.KVTime() - createBeginTime
- if totalCreateNum%30 == 0 || totalCreateNum >= totalConnNum {
- deltaTime := util.GetTimeMilliseconds() - TestBeginTime
- util.InfoF("[onlinenum=%v,pertime=%v,totalTime=%v]", totalCreateNum, float64(totalCreateTime)/float64(totalCreateNum), deltaTime)
- //util.InfoF("[onlinenum=%v]", totalCreateNum)
- }
- if totalCreateNum >= totalConnNum {
- util.InfoF("start test...")
- }
- //log.Printf("totalCreateNum:%v", totalCreateNum)
- cliLock.Unlock()
- bLoginOk = true
- pingTime = util.GetTimeMilliseconds()
- pingReqMsg := &serverproto.CSPingReq{}
- ev.Session().Send(pingReqMsg)
- }
- //log.Printf("type=%v msg=%v", reflect.TypeOf(ev.Msg()).Elem().String(), ev.Msg())
- })
- }
- cliLock.Lock()
- if totalCreateNum < totalConnNum {
- cliLock.Unlock()
- continue
- }
- cliLock.Unlock()
- break
- }
- ////recv msg
- //var lockPerform sync.Mutex
- //var kvTimeInfo = map[int]MsgKVTimeInfo{}
- //go func() {
- // for {
- // rv.Recv(func(ev rocommon.ProcEvent) {
- // tmpInfo := rocommon.MessageInfoByMsg(ev.Msg())
- // if tmpInfo == nil {
- // return
- // }
- // if tmpInfo.ID == 1001 {
- // util.InfoF("pingtime=%v stamptime=%v", ev.KVTime()-pingTime, ev.KVTime())
- // }
- // ackMSgId := 0
- // MsgName := ""
- // var delTime uint64 = 0
- // lockPerform.Lock()
- // reqData, ok := kvTimeInfo[tmpInfo.ID]
- // if ok {
- // ackMSgId = tmpInfo.ID
- // delTime = ev.KVTime() - reqData.TotalTime
- // MsgName = reqData.MsgName
- // }
- // lockPerform.Unlock()
- //
- // if tmpInfo.ID == 1174 {
- // nowTime := util.GetTimeMilliseconds()
- // msgsendtime := ev.Msg().(*serverproto.SCPlayerBossRewardAck).ServerTimeStamp
- // util.DebugF("pertime recvkvtime=%v msgsendtime=%v delTime=%v", nowTime-ev.KVTime(), nowTime-msgsendtime, delTime)
- // }
- //
- // //lockKvTime.Lock()
- // //if ackMSgId > 0 {
- // // tmpVal, ok2 := reqAckMsgKvTimeList[ackMSgId]
- // // if ok2 {
- // // tmpVal.TotalCount++
- // // tmpVal.TotalTime += delTime
- // // reqAckMsgKvTimeList[ackMSgId] = tmpVal
- // // } else {
- // // reqAckMsgKvTimeList[ackMSgId] = MsgKVTimeInfo{
- // // AckMsgId: ackMSgId,
- // // TotalCount: 1,
- // // TotalTime: delTime,
- // // MsgName: MsgName,
- // // }
- // // }
- // //
- // // //util.InfoF("recv msgid=%v deltime=%v msgname=%v", tmpInfo.ID, delTime, MsgName)
- // //}
- // //lockKvTime.Unlock()
- // })
- // }
- //}()
- go func() {
- for {
- rv.Recv(func(ev rocommon.ProcEvent) {})
- }
- }()
- //send msg
- for {
- //发送压测协议
- if len(BenchmarkMsgDataList) <= 0 {
- break
- }
- nowTime := util.GetTimeMilliseconds()
- if msgSendIdx == 0 {
- msgSendBeginTime = BenchmarkMsgDataList[0].MsgTime
- msgSendTime = nowTime
- //tmpSendTime = nowTime
- }
- delTime := BenchmarkMsgDataList[msgSendIdx].MsgTime - msgSendBeginTime
- if (nowTime-msgSendTime)*1 >= delTime {
- benchmarkMsg := &rocommon.TransmitPacket{
- MsgData: BenchmarkMsgDataList[msgSendIdx].MsgData,
- MsgId: BenchmarkMsgDataList[msgSendIdx].MsgId,
- }
- if benchmarkMsg.MsgId > 1005 {
- //if benchmarkMsg.MsgId == 1162 {
- // if rand.Int31n(100) <= 2 {
- // rv.Session().Send(benchmarkMsg)
- // }
- //} else {
- // rv.Session().Send(benchmarkMsg)
- //}
- rv.Session().Send(benchmarkMsg)
- util.InfoF("send msgid=%v idx=%v", benchmarkMsg.MsgId, msgSendIdx+1)
- }
- ////修改发送时间
- //if benchmarkMsg.MsgId == 1173 {
- // tmpInfo := rocommon.MessageInfoByID(1173)
- // tmpSt := &serverproto.CSPlayerBossRewardReq{}
- // tmpInfo.Codec.Unmarshal(benchmarkMsg.MsgData, tmpSt)
- // tmpSt.RecordTimeStamp = util.GetTimeMilliseconds()
- // tmpData, _ := tmpInfo.Codec.Marshal(tmpSt)
- // benchmarkMsg.MsgData = tmpData.([]byte)
- //}
- //util.DebugF("1173time0=%v", util.GetTimeMilliseconds())
- //rv.Session().Send(benchmarkMsg)
- //if msgSendIdx%10 == 0 {
- //util.InfoF("send msgid=%v idx=%v", benchmarkMsg.MsgId, msgSendIdx+1)
- //}
- //是否是req和ack匹配的协议
- //sendMsgId := int(msgDataList[msgSendIdx].msgId)
- //if kvMatch, ok1 := router.ReqAckKVList[sendMsgId]; ok1 {
- // lockPerform.Lock()
- // kvTimeInfo[int(kvMatch.AckMsgId)] = MsgKVTimeInfo{
- // TotalTime: nowTime,
- // MsgName: kvMatch.ReqMsgName,
- // }
- // lockPerform.Unlock()
- //}
- msgSendBeginTime = BenchmarkMsgDataList[msgSendIdx].MsgTime
- msgSendTime = nowTime
- msgSendIdx++
- }
- //if msgSendIdx%10 == 0 {
- // reqAckMsgKvTimeList.Range(func(key, val interface{}) bool {
- // time := float64(val.(*MsgKVTimeInfo).TotalTime)
- // count := float64(val.(*MsgKVTimeInfo).TotalCount)
- // util.InfoF("msgid=%v pertime=%v", key, time/count)
- // return true
- // })
- //}
- if msgSendIdx >= len(BenchmarkMsgDataList) {
- //delTime := (nowTime - tmpSendTime) / 1000
- //util.InfoF("msgTotalTime=%v(s) %v(m)", delTime, delTime/60)
- //tmpNum := 0
- cliLock.Lock()
- totalSendMsgNum++
- //tmpNum = totalSendMsgNum
- if totalSendMsgNum%100 == 0 || totalSendMsgNum >= totalCreateNum {
- util.InfoF("finish num=%v", totalSendMsgNum)
- }
- cliLock.Unlock()
- //lockKvTime.Lock()
- //if tmpNum >= totalCreateNum {
- // var tmpList []MsgKVTimeInfo
- // for _, val := range reqAckMsgKvTimeList {
- // tmpList = append(tmpList, val)
- // }
- // sort.Slice(tmpList, func(i, j int) bool {
- // return tmpList[i].AckMsgId < tmpList[j].AckMsgId
- // })
- // for idx := 0; idx < len(tmpList); idx++ {
- // time := float64(tmpList[idx].TotalTime)
- // count := float64(tmpList[idx].TotalCount)
- // util.InfoF("msgid=%v pertime=%v msgname=%v", tmpList[idx].AckMsgId, time/count, tmpList[idx].MsgName)
- // }
- //}
- //lockKvTime.Unlock()
- break
- }
- time.Sleep(time.Millisecond * 10)
- }
- }
- func GameChatMsg(openid string, rv *rocommon.NetSyncRecv, createBeginTime uint64) {
- bLoginOk := false
- for {
- if !bLoginOk {
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCLoginAck:
- //log.Printf("recv SCLoginAck[%v]...\n", ev.Msg())
- //ev.Session().Send(&serverproto.CSGMAddMoney{Coin:1000,})
- if msg.Error == int32(serverproto.ErrorCode_ERROR_ROLE_NOT_FOUND) {
- req := &serverproto.CSCreateRoleReq{
- OpenId: openid,
- Country: 1,
- Eye: 1002,
- Head: 10001,
- Hair: 1003,
- HairAvatar: 1001,
- JobId: 10000,
- Sex: 1,
- }
- ev.Session().Send(req)
- }
- case *serverproto.SSAccountGetRoleListAck:
- //log.Printf("recv SSAccountGetRoleListAck[%v]...\n", ev.Msg())
- case *serverproto.SCCreateRoleAck:
- //log.Printf("recv SCCreateRoleAck[%v]...\n", ev.Msg())
- case *serverproto.SCStartupInfoNtf:
- //log.Println("recv SCStartupInfoNtf:", ev.Msg())
- cliLock.Lock()
- totalCreateNum++
- totalCreateTime += util.GetTimeMilliseconds() - createBeginTime
- if totalCreateNum%20 == 0 || totalCreateNum >= totalConnNum {
- //deltaTime := util.GetTimeMilliseconds() - testBeginTime
- //util.InfoF("[onlinenum=%v,pertime=%v(ms),totaltime=%v(ms)]", totalCreateNum, float64(totalCreateTime)/float64(totalCreateNum), deltaTime)
- util.InfoF("[onlinenum=%v]", totalCreateNum)
- }
- //log.Printf("totalCreateNum:%v", totalCreateNum)
- cliLock.Unlock()
- bLoginOk = true
- }
- //log.Printf("type=%v msg=%v", reflect.TypeOf(ev.Msg()).Elem().String(), ev.Msg())
- })
- }
- cliLock.Lock()
- if totalCreateNum < totalConnNum {
- cliLock.Unlock()
- continue
- }
- cliLock.Unlock()
- break
- }
- go func() {
- for {
- rv.Recv(func(ev rocommon.ProcEvent) {})
- }
- }()
- //delayTimer := time.NewTimer(20 * time.Millisecond)
- //for {
- // delayTimer.Reset(20 * time.Millisecond)
- // select {
- // case <-delayTimer.C:
- // }
- //
- // reqMsg := &serverproto.CSChatMessageReq{
- // Type: int32(serverproto.ChatMessageType_CMT_WORLD),
- // Message: &serverproto.ChatMessageInfo{
- // Message: openid + "messagetest" + strconv.Itoa(rand.Intn(100)),
- // SendTime: util.GetTimeMilliseconds(),
- // },
- // }
- // if rand.Int31n(100) < 5 {
- // rv.Session().Send(reqMsg)
- // }
- //}
- randInt := rand.Intn(120)
- delayTimer := time.NewTimer(time.Duration(randInt) * time.Second)
- <-delayTimer.C
- gmMsg := &serverproto.CSGMCommandReq{
- GmCmd: "AddRes 2 99999",
- }
- rv.Session().Send(gmMsg)
- crossMsg0 := &serverproto.CSCrossYuanHangTrialRefreshTrialTypeReq{
- Force: true,
- }
- rv.Session().Send(crossMsg0)
- crossMsg1 := &serverproto.CSCrossYuanHangTrialRewardReq{}
- rv.Session().Send(crossMsg1)
- crossMsg := &serverproto.CSCrossYuanHangTrialReq{}
- rv.Session().Send(crossMsg)
- util.InfoF("randInt=%v", randInt)
- }
- func GameYuanHangMsg(openid string, rv *rocommon.NetSyncRecv, createBeginTime uint64) {
- bLoginOk := false
- for {
- if !bLoginOk {
- rv.Recv(func(ev rocommon.ProcEvent) {
- switch msg := ev.Msg().(type) {
- case *serverproto.SCLoginAck:
- //log.Printf("recv SCLoginAck[%v]...\n", ev.Msg())
- //ev.Session().Send(&serverproto.CSGMAddMoney{Coin:1000,})
- if msg.Error == int32(serverproto.ErrorCode_ERROR_ROLE_NOT_FOUND) {
- req := &serverproto.CSCreateRoleReq{
- OpenId: openid,
- Country: 1,
- Eye: 1002,
- Head: 10001,
- Hair: 1003,
- HairAvatar: 1001,
- JobId: 10000,
- Sex: 1,
- }
- ev.Session().Send(req)
- }
- case *serverproto.SSAccountGetRoleListAck:
- //log.Printf("recv SSAccountGetRoleListAck[%v]...\n", ev.Msg())
- case *serverproto.SCCreateRoleAck:
- //log.Printf("recv SCCreateRoleAck[%v]...\n", ev.Msg())
- case *serverproto.SCStartupInfoNtf:
- //log.Println("recv SCStartupInfoNtf:", ev.Msg())
- cliLock.Lock()
- totalCreateNum++
- totalCreateTime += util.GetTimeMilliseconds() - createBeginTime
- if totalCreateNum%20 == 0 || totalCreateNum >= totalConnNum {
- //deltaTime := util.GetTimeMilliseconds() - testBeginTime
- //util.InfoF("[onlinenum=%v,pertime=%v(ms),totaltime=%v(ms)]", totalCreateNum, float64(totalCreateTime)/float64(totalCreateNum), deltaTime)
- util.InfoF("[onlinenum=%v]", totalCreateNum)
- }
- //log.Printf("totalCreateNum:%v", totalCreateNum)
- //randInt := rand.Intn(120) + totalCreateNum*5
- cliLock.Unlock()
- bLoginOk = true
- //delayTimer := time.NewTimer(time.Duration(randInt) * time.Second)
- //<-delayTimer.C
- gmMsg := &serverproto.CSGMCommandReq{
- GmCmd: "AddRes 2 99999",
- }
- rv.Session().Send(gmMsg)
- //-ip 127.0.0.1:6379 -t 3 -tfname ./log/testload10_7002.log
- //setmapMsg := &serverproto.CSGMCommandReq{
- // GmCmd: "setmap 10 2",
- //}
- //rv.Session().Send(setmapMsg)
- //
- ////买路自己
- //toptowerMsg := &serverproto.CSGMCommandReq{
- // GmCmd: "toptower",
- //}
- //rv.Session().Send(toptowerMsg)
- //crossMsg0 := &serverproto.CSCrossYuanHangTrialRefreshTrialTypeReq{
- // Force: true,
- //}
- //rv.Session().Send(crossMsg0)
- //
- //crossMsg1 := &serverproto.CSCrossYuanHangTrialRewardReq{}
- //rv.Session().Send(crossMsg1)
- //
- //crossMsg := &serverproto.CSCrossYuanHangTrialReq{}
- //rv.Session().Send(crossMsg)
- //util.InfoF("randInt=%v", randInt)
- //gmMsg = &serverproto.CSGMCommandReq{
- // GmCmd: "test",
- //}
- //rv.Session().Send(gmMsg)
- tmpInt := rand.Intn(10)
- crossMsg := &serverproto.CSGCrossPlayerEnterMapReq{
- MapType: 31,
- Pos: &serverproto.Vector3{X: 1 + float32(tmpInt), Y: 0, Z: -30},
- }
- rv.Session().Send(crossMsg)
- //delayTimer := time.NewTimer(5 * time.Second)
- //<-delayTimer.C
- //posCrossMsg := &serverproto.CSGCrossPlayerMapSyncPosReq{
- // Pos: &serverproto.Vector3{X: 1, Y: 1, Z: 1},
- //}
- //rv.Session().Send(posCrossMsg)
- //leaveCrossMsg := &serverproto.CSGCrossPlayerLeaveMapReq{}
- //rv.Session().Send(leaveCrossMsg)
- }
- //log.Printf("type=%v msg=%v", reflect.TypeOf(ev.Msg()).Elem().String(), ev.Msg())
- })
- }
- cliLock.Lock()
- if totalCreateNum < totalConnNum {
- cliLock.Unlock()
- continue
- }
- cliLock.Unlock()
- break
- }
- go func() {
- for {
- rv.Recv(func(ev rocommon.ProcEvent) {})
- }
- }()
- }
|