mux_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package mux
  2. import (
  3. "github.com/cnlh/nps/lib/common"
  4. "github.com/cnlh/nps/vender/github.com/astaxie/beego/logs"
  5. "log"
  6. "net"
  7. "net/http"
  8. _ "net/http/pprof"
  9. "testing"
  10. "time"
  11. )
  12. var conn1 net.Conn
  13. var conn2 net.Conn
  14. func TestNewMux(t *testing.T) {
  15. go func() {
  16. http.ListenAndServe("0.0.0.0:8899", nil)
  17. }()
  18. logs.EnableFuncCallDepth(true)
  19. logs.SetLogFuncCallDepth(3)
  20. server()
  21. client()
  22. time.Sleep(time.Second * 3)
  23. go func() {
  24. m2 := NewMux(conn2)
  25. for {
  26. c, err := m2.Accept()
  27. if err != nil {
  28. log.Fatalln(err)
  29. }
  30. go func(c net.Conn) {
  31. c2, err := net.Dial("tcp", "127.0.0.1:8080")
  32. if err != nil {
  33. log.Fatalln(err)
  34. }
  35. go common.CopyBuffer(c2, c)
  36. common.CopyBuffer(c, c2)
  37. c.Close()
  38. c2.Close()
  39. }(c)
  40. }
  41. }()
  42. go func() {
  43. m1 := NewMux(conn1)
  44. l, err := net.Listen("tcp", "127.0.0.1:7777")
  45. if err != nil {
  46. log.Fatalln(err)
  47. }
  48. for {
  49. conn, err := l.Accept()
  50. if err != nil {
  51. log.Fatalln(err)
  52. }
  53. go func(conn net.Conn) {
  54. tmpCpnn, err := m1.NewConn()
  55. if err != nil {
  56. log.Fatalln(err)
  57. }
  58. go common.CopyBuffer(tmpCpnn, conn)
  59. common.CopyBuffer(conn, tmpCpnn)
  60. conn.Close()
  61. tmpCpnn.Close()
  62. }(conn)
  63. }
  64. }()
  65. for {
  66. time.Sleep(time.Second * 5)
  67. }
  68. }
  69. func server() {
  70. var err error
  71. l, err := net.Listen("tcp", "127.0.0.1:9999")
  72. if err != nil {
  73. log.Fatalln(err)
  74. }
  75. go func() {
  76. conn1, err = l.Accept()
  77. if err != nil {
  78. log.Fatalln(err)
  79. }
  80. }()
  81. return
  82. }
  83. func client() {
  84. var err error
  85. conn2, err = net.Dial("tcp", "127.0.0.1:9999")
  86. if err != nil {
  87. log.Fatalln(err)
  88. }
  89. }