1
0

reload_test.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package ci
  2. import (
  3. "os"
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/fatedier/frp/tests/config"
  8. "github.com/fatedier/frp/tests/consts"
  9. "github.com/fatedier/frp/tests/util"
  10. )
  11. const FRPS_RELOAD_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_RELOAD_CONF_1 = `
  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. # change remote port
  36. [tcp2]
  37. type = tcp
  38. local_port = 10701
  39. remote_port = 20802
  40. # delete
  41. [tcp3]
  42. type = tcp
  43. local_port = 10701
  44. remote_port = 20803
  45. `
  46. const FRPC_RELOAD_CONF_2 = `
  47. [common]
  48. server_addr = 127.0.0.1
  49. server_port = 20000
  50. log_file = console
  51. # debug, info, warn, error
  52. log_level = debug
  53. token = 123456
  54. admin_port = 21000
  55. admin_user = abc
  56. admin_pwd = abc
  57. [tcp]
  58. type = tcp
  59. local_port = 10701
  60. remote_port = 20801
  61. [tcp2]
  62. type = tcp
  63. local_port = 10701
  64. remote_port = 20902
  65. `
  66. func TestReload(t *testing.T) {
  67. assert := assert.New(t)
  68. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_RELOAD_CONF)
  69. if assert.NoError(err) {
  70. defer os.Remove(frpsCfgPath)
  71. }
  72. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_RELOAD_CONF_1)
  73. if assert.NoError(err) {
  74. rmFile1 := frpcCfgPath
  75. defer os.Remove(rmFile1)
  76. }
  77. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  78. err = frpsProcess.Start()
  79. if assert.NoError(err) {
  80. defer frpsProcess.Stop()
  81. }
  82. time.Sleep(200 * time.Millisecond)
  83. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  84. err = frpcProcess.Start()
  85. if assert.NoError(err) {
  86. defer frpcProcess.Stop()
  87. }
  88. time.Sleep(500 * time.Millisecond)
  89. // test tcp1
  90. res, err := util.SendTCPMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  91. assert.NoError(err)
  92. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  93. // test tcp2
  94. res, err = util.SendTCPMsg("127.0.0.1:20802", consts.TEST_TCP_ECHO_STR)
  95. assert.NoError(err)
  96. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  97. // test tcp3
  98. res, err = util.SendTCPMsg("127.0.0.1:20803", consts.TEST_TCP_ECHO_STR)
  99. assert.NoError(err)
  100. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  101. // reload frpc config
  102. frpcCfgPath, err = config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_RELOAD_CONF_2)
  103. if assert.NoError(err) {
  104. rmFile2 := frpcCfgPath
  105. defer os.Remove(rmFile2)
  106. }
  107. err = util.ReloadConf("127.0.0.1:21000", "abc", "abc")
  108. assert.NoError(err)
  109. time.Sleep(time.Second)
  110. // test tcp1
  111. res, err = util.SendTCPMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  112. assert.NoError(err)
  113. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  114. // test origin tcp2, expect failed
  115. res, err = util.SendTCPMsg("127.0.0.1:20802", consts.TEST_TCP_ECHO_STR)
  116. assert.Error(err)
  117. // test new origin tcp2 with different port
  118. res, err = util.SendTCPMsg("127.0.0.1:20902", consts.TEST_TCP_ECHO_STR)
  119. assert.NoError(err)
  120. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  121. // test tcp3, expect failed
  122. res, err = util.SendTCPMsg("127.0.0.1:20803", consts.TEST_TCP_ECHO_STR)
  123. assert.Error(err)
  124. }