mux_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package mux
  2. import (
  3. "github.com/cnlh/nps/lib/common"
  4. "github.com/cnlh/nps/lib/pool"
  5. "github.com/cnlh/nps/vender/github.com/astaxie/beego/logs"
  6. "log"
  7. "net"
  8. "net/http"
  9. _ "net/http/pprof"
  10. "testing"
  11. "time"
  12. )
  13. var conn1 net.Conn
  14. var conn2 net.Conn
  15. func TestNewMux(t *testing.T) {
  16. go func() {
  17. http.ListenAndServe("0.0.0.0:8889", nil)
  18. }()
  19. logs.EnableFuncCallDepth(true)
  20. logs.SetLogFuncCallDepth(3)
  21. server()
  22. client()
  23. time.Sleep(time.Second * 3)
  24. go func() {
  25. m2 := NewMux(conn2, "tcp")
  26. connCh := make(chan bool, 1)
  27. for {
  28. c, err := m2.Accept()
  29. if err != nil {
  30. log.Fatalln(err)
  31. }
  32. connCh <- true
  33. go func(c net.Conn, ch chan bool) {
  34. c2, err := net.Dial("tcp", "127.0.0.1:80")
  35. if err != nil {
  36. log.Fatalln(err)
  37. }
  38. go common.CopyBuffer(c2, c)
  39. common.CopyBuffer(c, c2)
  40. c2.Close()
  41. c.Close()
  42. logs.Warn("close npc")
  43. <-ch
  44. }(c, connCh)
  45. }
  46. }()
  47. go func() {
  48. m1 := NewMux(conn1, "tcp")
  49. l, err := net.Listen("tcp", "127.0.0.1:7777")
  50. if err != nil {
  51. log.Fatalln(err)
  52. }
  53. connCh := make(chan bool, 1)
  54. for {
  55. conn, err := l.Accept()
  56. if err != nil {
  57. log.Fatalln(err)
  58. }
  59. connCh <- true
  60. go func(conn net.Conn, ch chan bool) {
  61. tmpCpnn, err := m1.NewConn()
  62. if err != nil {
  63. log.Fatalln(err)
  64. }
  65. go common.CopyBuffer(tmpCpnn, conn)
  66. common.CopyBuffer(conn, tmpCpnn)
  67. conn.Close()
  68. //tmpCpnn.Close()
  69. logs.Warn("close from out nps ", tmpCpnn.connId)
  70. <-ch
  71. }(conn, connCh)
  72. }
  73. }()
  74. for {
  75. time.Sleep(time.Second * 5)
  76. }
  77. }
  78. func server() {
  79. var err error
  80. l, err := net.Listen("tcp", "127.0.0.1:9999")
  81. if err != nil {
  82. log.Fatalln(err)
  83. }
  84. go func() {
  85. conn1, err = l.Accept()
  86. if err != nil {
  87. log.Fatalln(err)
  88. }
  89. }()
  90. return
  91. }
  92. func client() {
  93. var err error
  94. conn2, err = net.Dial("tcp", "127.0.0.1:9999")
  95. if err != nil {
  96. log.Fatalln(err)
  97. }
  98. }
  99. func TestNewConn(t *testing.T) {
  100. buf := pool.GetBufPoolCopy()
  101. logs.Warn(len(buf), cap(buf))
  102. //b := pool.GetBufPoolCopy()
  103. //b[0] = 1
  104. //b[1] = 2
  105. //b[2] = 3
  106. b := []byte{1, 2, 3}
  107. logs.Warn(copy(buf[:3], b), len(buf), cap(buf))
  108. logs.Warn(len(buf), buf[0])
  109. }