reconnect_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package ci
  2. import (
  3. "os"
  4. "testing"
  5. "time"
  6. "github.com/fatedier/frp/tests/config"
  7. "github.com/fatedier/frp/tests/consts"
  8. "github.com/fatedier/frp/tests/util"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. const FRPS_RECONNECT_CONF = `
  12. [common]
  13. bind_addr = 0.0.0.0
  14. bind_port = 20000
  15. log_file = console
  16. # debug, info, warn, error
  17. log_level = debug
  18. token = 123456
  19. `
  20. const FRPC_RECONNECT_CONF = `
  21. [common]
  22. server_addr = 127.0.0.1
  23. server_port = 20000
  24. log_file = console
  25. # debug, info, warn, error
  26. log_level = debug
  27. token = 123456
  28. admin_port = 21000
  29. admin_user = abc
  30. admin_pwd = abc
  31. [tcp]
  32. type = tcp
  33. local_port = 10701
  34. remote_port = 20801
  35. `
  36. func TestReconnect(t *testing.T) {
  37. assert := assert.New(t)
  38. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_RECONNECT_CONF)
  39. if assert.NoError(err) {
  40. defer os.Remove(frpsCfgPath)
  41. }
  42. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_RECONNECT_CONF)
  43. if assert.NoError(err) {
  44. defer os.Remove(frpcCfgPath)
  45. }
  46. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  47. err = frpsProcess.Start()
  48. if assert.NoError(err) {
  49. defer frpsProcess.Stop()
  50. }
  51. time.Sleep(100 * time.Millisecond)
  52. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  53. err = frpcProcess.Start()
  54. if assert.NoError(err) {
  55. defer frpcProcess.Stop()
  56. }
  57. time.Sleep(250 * time.Millisecond)
  58. // test tcp
  59. res, err := util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  60. assert.NoError(err)
  61. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  62. // stop frpc
  63. frpcProcess.Stop()
  64. time.Sleep(100 * time.Millisecond)
  65. // test tcp, expect failed
  66. _, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  67. assert.Error(err)
  68. // restart frpc
  69. newFrpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  70. err = newFrpcProcess.Start()
  71. if assert.NoError(err) {
  72. defer newFrpcProcess.Stop()
  73. }
  74. time.Sleep(250 * time.Millisecond)
  75. // test tcp
  76. res, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  77. assert.NoError(err)
  78. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  79. // stop frps
  80. frpsProcess.Stop()
  81. time.Sleep(100 * time.Millisecond)
  82. // test tcp, expect failed
  83. _, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  84. assert.Error(err)
  85. // restart frps
  86. newFrpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  87. err = newFrpsProcess.Start()
  88. if assert.NoError(err) {
  89. defer newFrpsProcess.Stop()
  90. }
  91. time.Sleep(2 * time.Second)
  92. // test tcp
  93. res, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  94. assert.NoError(err)
  95. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  96. }