main.go 4.2 KB

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