1
0

config.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package basic
  2. import (
  3. "fmt"
  4. "github.com/onsi/ginkgo/v2"
  5. "github.com/fatedier/frp/test/e2e/framework"
  6. "github.com/fatedier/frp/test/e2e/framework/consts"
  7. "github.com/fatedier/frp/test/e2e/pkg/port"
  8. )
  9. var _ = ginkgo.Describe("[Feature: Config]", func() {
  10. f := framework.NewDefaultFramework()
  11. ginkgo.Describe("Template", func() {
  12. ginkgo.It("render by env", func() {
  13. serverConf := consts.DefaultServerConfig
  14. clientConf := consts.DefaultClientConfig
  15. portName := port.GenName("TCP")
  16. serverConf += fmt.Sprintf(`
  17. auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
  18. `, "`", "`")
  19. clientConf += fmt.Sprintf(`
  20. auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
  21. [[proxies]]
  22. name = "tcp"
  23. type = "tcp"
  24. localPort = {{ .%s }}
  25. remotePort = {{ .%s }}
  26. `, "`", "`", framework.TCPEchoServerPort, portName)
  27. f.SetEnvs([]string{"FRP_TOKEN=123"})
  28. f.RunProcesses([]string{serverConf}, []string{clientConf})
  29. framework.NewRequestExpect(f).PortName(portName).Ensure()
  30. })
  31. })
  32. ginkgo.Describe("Includes", func() {
  33. ginkgo.It("split tcp proxies into different files", func() {
  34. serverPort := f.AllocPort()
  35. serverConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
  36. bindAddr = "0.0.0.0"
  37. bindPort = %d
  38. `, serverPort))
  39. remotePort := f.AllocPort()
  40. proxyConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
  41. [[proxies]]
  42. name = "tcp"
  43. type = "tcp"
  44. localPort = %d
  45. remotePort = %d
  46. `, f.PortByName(framework.TCPEchoServerPort), remotePort))
  47. remotePort2 := f.AllocPort()
  48. proxyConfigPath2 := f.GenerateConfigFile(fmt.Sprintf(`
  49. [[proxies]]
  50. name = "tcp2"
  51. type = "tcp"
  52. localPort = %d
  53. remotePort = %d
  54. `, f.PortByName(framework.TCPEchoServerPort), remotePort2))
  55. clientConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
  56. serverPort = %d
  57. includes = ["%s","%s"]
  58. `, serverPort, proxyConfigPath, proxyConfigPath2))
  59. _, _, err := f.RunFrps("-c", serverConfigPath)
  60. framework.ExpectNoError(err)
  61. _, _, err = f.RunFrpc("-c", clientConfigPath)
  62. framework.ExpectNoError(err)
  63. framework.NewRequestExpect(f).Port(remotePort).Ensure()
  64. framework.NewRequestExpect(f).Port(remotePort2).Ensure()
  65. })
  66. })
  67. ginkgo.Describe("Support Formats", func() {
  68. ginkgo.It("YAML", func() {
  69. serverConf := fmt.Sprintf(`
  70. bindPort: {{ .%s }}
  71. log:
  72. level: trace
  73. `, port.GenName("Server"))
  74. remotePort := f.AllocPort()
  75. clientConf := fmt.Sprintf(`
  76. serverPort: {{ .%s }}
  77. log:
  78. level: trace
  79. proxies:
  80. - name: tcp
  81. type: tcp
  82. localPort: {{ .%s }}
  83. remotePort: %d
  84. `, port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
  85. f.RunProcesses([]string{serverConf}, []string{clientConf})
  86. framework.NewRequestExpect(f).Port(remotePort).Ensure()
  87. })
  88. ginkgo.It("JSON", func() {
  89. serverConf := fmt.Sprintf(`{"bindPort": {{ .%s }}, "log": {"level": "trace"}}`, port.GenName("Server"))
  90. remotePort := f.AllocPort()
  91. clientConf := fmt.Sprintf(`{"serverPort": {{ .%s }}, "log": {"level": "trace"},
  92. "proxies": [{"name": "tcp", "type": "tcp", "localPort": {{ .%s }}, "remotePort": %d}]}`,
  93. port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
  94. f.RunProcesses([]string{serverConf}, []string{clientConf})
  95. framework.NewRequestExpect(f).Port(remotePort).Ensure()
  96. })
  97. })
  98. })