mux_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package mux
  2. import (
  3. "github.com/cnlh/nps/lib/common"
  4. conn3 "github.com/cnlh/nps/lib/conn"
  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:8899", 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)
  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:8080")
  33. if err != nil {
  34. log.Fatalln(err)
  35. }
  36. go common.CopyBuffer(c2, conn3.NewCryptConn(c, true, nil))
  37. common.CopyBuffer(conn3.NewCryptConn(c, true, nil), c2)
  38. c.Close()
  39. c2.Close()
  40. }(c)
  41. }
  42. }()
  43. go func() {
  44. m1 := NewMux(conn1)
  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(conn3.NewCryptConn(tmpCpnn, true, nil), conn)
  60. common.CopyBuffer(conn, conn3.NewCryptConn(tmpCpnn, true, nil))
  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. }