main.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "strconv"
  6. "git.wecise.com/wecise/odbserver/test/eifsend/ovo"
  7. )
  8. func main() {
  9. ip := flag.String("ip", "127.0.0.1", "Send server ip")
  10. port := flag.Uint("port", 9998, "Send server port")
  11. //var wgTest sync.WaitGroup
  12. // EIF发送器
  13. eifSender := &ovo.EIFSender{
  14. Tracer: ovo.NewTracer("eifSender"),
  15. Configuration: &ovo.Configuration{
  16. ID: "test.eifSender",
  17. ServerLocation: *ip,
  18. ServerPort: int(*port),
  19. },
  20. }
  21. defer eifSender.Close()
  22. eifSender.Trace('D', "发送地址%s:%d", *ip, *port)
  23. //// EIF接收器
  24. //eifReceiver := &ovo.EIFReceiver{
  25. // Tracer: ovo.NewTracer("eifReceiver"),
  26. // Configuration: &ovo.Configuration{
  27. // ID: "test.eifReceiver",
  28. // ServerLocation: "",
  29. // ServerPort: 9999,
  30. // InitRecvBufSize: 1024 * 4, // 每个连接初始分配的缓冲区字节数,建议为常规一条数据字节数的4~8倍
  31. // MaxRecvBufSize: 1024 * 1024 * 100, // 每个连接可以分配的最大缓冲区字节数
  32. // },
  33. //}
  34. // 消息发送函数
  35. msgsend := func(class string, data map[string]string) {
  36. count, _ := strconv.Atoi(data["number"])
  37. eifSender.Trace('X', "测试 %d 消息准备发送: %v:%v", count, class, data)
  38. ns, err := eifSender.Send(class, data)
  39. if err != nil {
  40. eifSender.Trace('D', "测试 %d 消息发送失败 %s", count, err)
  41. }
  42. eifSender.Trace('D', "测试 %d 消息发送 %d 字节", count, ns)
  43. }
  44. //// 短链接消息发送函数
  45. //imsgsend := func(class string, data map[string]string) {
  46. // // EIF发送器
  47. // tempEifSender := &ovo.EIFSender{
  48. // Tracer: ovo.NewTracer("tempEifSender"),
  49. // Configuration: &ovo.Configuration{
  50. // ID: "test.tempEifSender",
  51. // ServerLocation: "127.0.0.1",
  52. // ServerPort: 9990,
  53. // },
  54. // }
  55. // defer tempEifSender.Close()
  56. // count, _ := strconv.Atoi(data["number"])
  57. // tempEifSender.Trace('X', "测试 %d 消息准备发送: %v:%v", count, class, data)
  58. // ns, err := tempEifSender.Send(class, data)
  59. // if err != nil {
  60. // tempEifSender.Trace('D', "测试 %d 消息发送失败 %s", count, err)
  61. // }
  62. // tempEifSender.Trace('D', "测试 %d 消息发送 %d 字节", count, ns)
  63. //}
  64. //
  65. //starttime := time.Now()
  66. //msgcount := 0
  67. //// 消息处理函数
  68. //msgproc := func(remote_addr string, class string, data map[string]string) {
  69. // msgcount++
  70. // eifReceiver.CalmTrace("eifReceiver", 1000, 'D', "%v 收到 %d:%v => %v:%v", time.Now().Sub(starttime), msgcount, remote_addr, class, data)
  71. // sleep, _ := strconv.Atoi(data["sleep"])
  72. // if sleep <= 0 {
  73. // sleep = 1000
  74. // data["sleep"] = "1000"
  75. // }
  76. // number, _ := strconv.Atoi(data["number"])
  77. // number--
  78. // data["number"] = fmt.Sprintf("%d", number)
  79. // if number > 0 {
  80. // // 延时发送新消息
  81. // go func(sleep int, class string, data map[string]string) {
  82. // time.Sleep(time.Duration(sleep) * 1e6)
  83. // if rand.Float32() < 0.8 {
  84. // // 短链接
  85. // imsgsend(class, data)
  86. // } else {
  87. // // 长链接
  88. // msgsend(class, data)
  89. // }
  90. // }(sleep, class, data)
  91. // }
  92. //}
  93. //
  94. //// 启动EIFReceiver
  95. //go func() {
  96. // wgTest.Add(1)
  97. // defer wgTest.Done()
  98. // eifReceiver.Run(msgproc)
  99. //}()
  100. //
  101. //// 等待Receiver启动完成
  102. //for !(eifReceiver.IsRunning()) {
  103. // time.Sleep(1)
  104. //}
  105. // 发送测试信息
  106. func(n int) {
  107. data := make(map[string]string)
  108. data["number"] = fmt.Sprintf("%d", n)
  109. data["sleep"] = "1000"
  110. data["string"] = "EIF信息发送测试'`~!@#$%^&*?...'"
  111. msgsend("test", data)
  112. }(10)
  113. // 等待Recever结束
  114. //wgTest.Wait()
  115. }