reconnect_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. log_level = debug
  17. token = 123456
  18. `
  19. const FRPC_RECONNECT_CONF = `
  20. [common]
  21. server_addr = 127.0.0.1
  22. server_port = 20000
  23. log_file = console
  24. log_level = debug
  25. token = 123456
  26. admin_port = 21000
  27. admin_user = abc
  28. admin_pwd = abc
  29. [tcp]
  30. type = tcp
  31. local_port = 10701
  32. remote_port = 20801
  33. `
  34. func TestReconnect(t *testing.T) {
  35. assert := assert.New(t)
  36. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_RECONNECT_CONF)
  37. if assert.NoError(err) {
  38. defer os.Remove(frpsCfgPath)
  39. }
  40. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_RECONNECT_CONF)
  41. if assert.NoError(err) {
  42. defer os.Remove(frpcCfgPath)
  43. }
  44. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  45. err = frpsProcess.Start()
  46. if assert.NoError(err) {
  47. defer frpsProcess.Stop()
  48. }
  49. time.Sleep(200 * time.Millisecond)
  50. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  51. err = frpcProcess.Start()
  52. if assert.NoError(err) {
  53. defer frpcProcess.Stop()
  54. }
  55. time.Sleep(500 * time.Millisecond)
  56. // test tcp
  57. res, err := util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  58. assert.NoError(err)
  59. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  60. // stop frpc
  61. frpcProcess.Stop()
  62. time.Sleep(200 * time.Millisecond)
  63. // test tcp, expect failed
  64. _, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  65. assert.Error(err)
  66. // restart frpc
  67. newFrpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  68. err = newFrpcProcess.Start()
  69. if assert.NoError(err) {
  70. defer newFrpcProcess.Stop()
  71. }
  72. time.Sleep(500 * time.Millisecond)
  73. // test tcp
  74. res, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  75. assert.NoError(err)
  76. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  77. // stop frps
  78. frpsProcess.Stop()
  79. time.Sleep(200 * time.Millisecond)
  80. // test tcp, expect failed
  81. _, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  82. assert.Error(err)
  83. // restart frps
  84. newFrpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  85. err = newFrpsProcess.Start()
  86. if assert.NoError(err) {
  87. defer newFrpsProcess.Stop()
  88. }
  89. time.Sleep(2 * time.Second)
  90. // test tcp
  91. res, err = util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  92. assert.NoError(err)
  93. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  94. }