main.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package main
  2. import (
  3. _ "context"
  4. "encoding/base64"
  5. _ "github.com/olivere/elastic/v7"
  6. _ "github.com/olivere/elastic/v7/config"
  7. "io/ioutil"
  8. "log"
  9. "os"
  10. "rocommon/service"
  11. _ "rocommon/socket"
  12. _ "rocommon/socket/http"
  13. _ "rocommon/socket/tcp"
  14. _ "rocommon/socket/websocket"
  15. "rocommon/util"
  16. "roserver/baseserver/model"
  17. "roserver/baseserver/set"
  18. testModel "roserver/test/model"
  19. "runtime"
  20. "strings"
  21. )
  22. type IBase interface {
  23. SetVal()
  24. GetBase() *abase
  25. }
  26. type abase struct {
  27. aabase int
  28. }
  29. type a1 struct {
  30. abase
  31. aaa int
  32. }
  33. func (this *a1) SetVal() {
  34. this.aabase = 1
  35. }
  36. func (this *a1) GetBase() *abase {
  37. return &this.abase
  38. }
  39. func main() {
  40. //testModel.ConvertOldRedis()
  41. testModel.ConvertGuildRedis()
  42. return
  43. //tmpa1 := &a1{}
  44. //tmpa1.SetVal()
  45. //var tmpa2 IBase
  46. //tmpa2 = tmpa1
  47. //tmpVal := (*abase)(unsafe.Pointer(tmpa1))
  48. //tmpa2.GetBase().aabase = 2
  49. //log.Printf("tmpval=%v tmpa2=%v", tmpVal, tmpa2.GetBase().aabase)
  50. //return
  51. //uuuuid := 3132646845219
  52. //tmpUid := uuuuid >> 32
  53. //tmpUid1 := 3132646845219 - (tmpUid << 32)
  54. //log.Printf("tmpuid=%v | %v | %v", tmpUid, tmpUid<<32, tmpUid1)
  55. //
  56. //return
  57. //testStr := "CFwQDxiQmtnLpy8g6NjagbYvKAGCAQcIgPnhw6cv"
  58. //tmpData := &serverproto.ActivitiesDetailData{}
  59. //model.GetDecodeMessage(tmpData, testStr)
  60. //
  61. //testStr = "Cg0IARAQGgcIgLH77KcvIPqizYiSLygOOgQISBABOgQIXxABOgQIYxABOgQIRxABOgQICBABOgQIBRABOgQIBBABOgQIBhABOgQIdhABOgQIaBABOgQIBxABOgQIcxABOgQIbhABOgQIbBABOgQIAhABOgQIZRABOgQIahABOgQIYhABOgQIShABOgQIARABOgQIdRABOgQIaRABOgQIbxABOgQIbRABOgQIZxABOgQIcBABOgQIAxABOgQIchABOgQIZhABOgQIaxABOgQIcRABOgQIdBABOgQISRABQg8DCTgBAgsSJBYoFylaXF0="
  62. //tmpData1 := &serverproto.RoleActivity{}
  63. //model.GetDecodeMessage(tmpData1, testStr)
  64. runtime.GOMAXPROCS(runtime.NumCPU() / 3)
  65. //
  66. err := util.InitLog(1, 0, "./log", "test", "")
  67. testModel.GetRoleFromRedis1()
  68. return
  69. //err := util.InitLog(1, 0, "./log", "test", "")
  70. //prof := profile.Start(profile.CPUProfile, profile.ProfilePath("./pprof/test.pprof"), profile.NoShutdownHook)
  71. err = service.ServerCmd.Parse(os.Args[1:])
  72. if err != nil {
  73. util.InfoF("err=%v", err)
  74. }
  75. if *service.MaxOnlineNumParam > 0 {
  76. testModel.MaxConnNum = *service.MaxOnlineNumParam
  77. }
  78. if *service.IPParam != "" {
  79. testModel.TmpIpStr = *service.IPParam
  80. }
  81. log.Printf("ip=%v", testModel.TmpIpStr)
  82. //读取机器人压测数据文件
  83. TestRobotBenchmark(&testModel.BenchmarkMsgDataList)
  84. msgList := testModel.BenchmarkMsgDataList
  85. if len(msgList) > 0 {
  86. totalTime := msgList[len(msgList)-1].MsgTime - msgList[0].MsgTime
  87. totalTime /= 1000
  88. util.InfoF("msgTotalTime=%v(s) %v(m) count=%v", totalTime, totalTime/60, len(msgList))
  89. }
  90. //t := time.Now().Unix()
  91. t := 1
  92. //log.Printf("begin:%v %v", t, *service.TempParam)
  93. //log.Println("begin:", t, *service.TempParam)
  94. testModel.TestBeginTime = util.GetTimeMilliseconds()
  95. //for i := 0; i < testModel.MaxConnNum; i++ {
  96. // go testModel.Client(int(t) + i)
  97. //}
  98. for i := 0; i < testModel.MaxConnNum; i++ {
  99. go testModel.Client(int(t) + i)
  100. }
  101. //client(int(t) + maxConnNum)
  102. service.WaitExitSignal()
  103. }
  104. func TestRobotBenchmark(msgDtaList *[]*testModel.RobotBenchmarkSt) {
  105. f, err := os.Open("./game.log")
  106. if err != nil {
  107. return
  108. }
  109. defer f.Close()
  110. fd, err := ioutil.ReadAll(f)
  111. if err != nil {
  112. return
  113. }
  114. fileStr := string(fd)
  115. uniMsgId := set.New(set.NonThreadSafe)
  116. fileStrList := strings.Split(fileStr, "\n")
  117. for idx := 0; idx < len(fileStrList); idx++ {
  118. tmpStr := fileStrList[idx]
  119. if !strings.Contains(tmpStr, "receivemsg") {
  120. continue
  121. }
  122. tmpStrList := strings.Split(tmpStr, " ")
  123. msgIdStr := getTextData(tmpStrList[5])
  124. msgId, _ := model.Str2Num(msgIdStr)
  125. msgDataStr := getTextData(tmpStrList[6])
  126. msgData, _ := base64.StdEncoding.DecodeString(msgDataStr)
  127. msgTimeStr := getTextData(tmpStrList[7])
  128. msgTime, _ := model.Str2NumU64(msgTimeStr)
  129. *msgDtaList = append(*msgDtaList, &testModel.RobotBenchmarkSt{
  130. MsgTime: msgTime,
  131. MsgId: uint32(msgId),
  132. MsgData: msgData,
  133. })
  134. uniMsgId.Add(msgId)
  135. }
  136. //for _, data := range uniMsgId.List() {
  137. // util.InfoF("receivemsg sendmsgid=%v", data.(int)+1)
  138. //}
  139. }
  140. func getTextData(str string) string {
  141. retStr := ""
  142. findIdx := strings.Index(str, "=")
  143. for idx := findIdx + 1; idx < len(str); idx++ {
  144. retStr += string(str[idx])
  145. }
  146. return retStr
  147. }