1
0

mux_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package mux
  2. import (
  3. "log"
  4. "net"
  5. "net/http"
  6. _ "net/http/pprof"
  7. "testing"
  8. "time"
  9. "github.com/astaxie/beego/logs"
  10. "github.com/cnlh/nps/lib/common"
  11. "github.com/cnlh/nps/lib/pool"
  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. for {
  27. c, err := m2.Accept()
  28. if err != nil {
  29. log.Fatalln(err)
  30. }
  31. go func(c net.Conn) {
  32. c2, err := net.Dial("tcp", "127.0.0.1:8082")
  33. if err != nil {
  34. log.Fatalln(err)
  35. }
  36. go common.CopyBuffer(c2, c)
  37. common.CopyBuffer(c, c2)
  38. c.Close()
  39. c2.Close()
  40. }(c)
  41. }
  42. }()
  43. go func() {
  44. m1 := NewMux(conn1, "tcp")
  45. l, err := net.Listen("tcp", "127.0.0.1:7777")
  46. if err != nil {
  47. log.Fatalln(err)
  48. }
  49. for {
  50. conn, err := l.Accept()
  51. if err != nil {
  52. log.Fatalln(err)
  53. }
  54. go func(conn net.Conn) {
  55. tmpCpnn, err := m1.NewConn()
  56. if err != nil {
  57. log.Fatalln(err)
  58. }
  59. go common.CopyBuffer(tmpCpnn, conn)
  60. common.CopyBuffer(conn, tmpCpnn)
  61. conn.Close()
  62. tmpCpnn.Close()
  63. }(conn)
  64. }
  65. }()
  66. for {
  67. time.Sleep(time.Second * 5)
  68. }
  69. }
  70. func server() {
  71. var err error
  72. l, err := net.Listen("tcp", "127.0.0.1:9999")
  73. if err != nil {
  74. log.Fatalln(err)
  75. }
  76. go func() {
  77. conn1, err = l.Accept()
  78. if err != nil {
  79. log.Fatalln(err)
  80. }
  81. }()
  82. return
  83. }
  84. func client() {
  85. var err error
  86. conn2, err = net.Dial("tcp", "127.0.0.1:9999")
  87. if err != nil {
  88. log.Fatalln(err)
  89. }
  90. }
  91. func TestNewConn(t *testing.T) {
  92. buf := pool.GetBufPoolCopy()
  93. logs.Warn(len(buf), cap(buf))
  94. //b := pool.GetBufPoolCopy()
  95. //b[0] = 1
  96. //b[1] = 2
  97. //b[2] = 3
  98. b := []byte{1, 2, 3}
  99. logs.Warn(copy(buf[:3], b), len(buf), cap(buf))
  100. logs.Warn(len(buf), buf[0])
  101. }