frp/test/e2e/v1/basic/config.go

123 lines
3.2 KiB
Go
Raw Normal View History

2021-06-18 08:48:36 +00:00
package basic
import (
"fmt"
2023-02-27 06:44:16 +00:00
"github.com/onsi/ginkgo/v2"
2022-08-28 17:02:53 +00:00
2021-06-18 08:48:36 +00:00
"github.com/fatedier/frp/test/e2e/framework"
"github.com/fatedier/frp/test/e2e/framework/consts"
"github.com/fatedier/frp/test/e2e/pkg/port"
)
2022-08-28 17:02:53 +00:00
var _ = ginkgo.Describe("[Feature: Config]", func() {
2021-06-18 08:48:36 +00:00
f := framework.NewDefaultFramework()
2022-08-28 17:02:53 +00:00
ginkgo.Describe("Template", func() {
ginkgo.It("render by env", func() {
2021-06-18 08:48:36 +00:00
serverConf := consts.DefaultServerConfig
clientConf := consts.DefaultClientConfig
portName := port.GenName("TCP")
serverConf += fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
2021-06-18 08:48:36 +00:00
`, "`", "`")
clientConf += fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
auth.token = "{{ %s{{ .Envs.FRP_TOKEN }}%s }}"
2021-06-18 08:48:36 +00:00
2023-09-13 08:32:39 +00:00
[[proxies]]
name = "tcp"
type = "tcp"
localPort = {{ .%s }}
remotePort = {{ .%s }}
2021-06-18 08:48:36 +00:00
`, "`", "`", framework.TCPEchoServerPort, portName)
f.SetEnvs([]string{"FRP_TOKEN=123"})
f.RunProcesses([]string{serverConf}, []string{clientConf})
framework.NewRequestExpect(f).PortName(portName).Ensure()
})
})
2022-08-28 17:02:53 +00:00
ginkgo.Describe("Includes", func() {
ginkgo.It("split tcp proxies into different files", func() {
2021-06-18 08:48:36 +00:00
serverPort := f.AllocPort()
serverConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
bindAddr = "0.0.0.0"
bindPort = %d
2021-06-18 08:48:36 +00:00
`, serverPort))
remotePort := f.AllocPort()
proxyConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
[[proxies]]
name = "tcp"
type = "tcp"
localPort = %d
remotePort = %d
2021-06-18 08:48:36 +00:00
`, f.PortByName(framework.TCPEchoServerPort), remotePort))
remotePort2 := f.AllocPort()
proxyConfigPath2 := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
[[proxies]]
name = "tcp2"
type = "tcp"
localPort = %d
remotePort = %d
2021-06-18 08:48:36 +00:00
`, f.PortByName(framework.TCPEchoServerPort), remotePort2))
clientConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 08:32:39 +00:00
serverPort = %d
includes = ["%s","%s"]
2021-06-18 08:48:36 +00:00
`, serverPort, proxyConfigPath, proxyConfigPath2))
_, _, err := f.RunFrps("-c", serverConfigPath)
framework.ExpectNoError(err)
_, _, err = f.RunFrpc("-c", clientConfigPath)
framework.ExpectNoError(err)
framework.NewRequestExpect(f).Port(remotePort).Ensure()
framework.NewRequestExpect(f).Port(remotePort2).Ensure()
})
})
2023-09-13 10:59:51 +00:00
ginkgo.Describe("Support Formats", func() {
ginkgo.It("YAML", func() {
serverConf := fmt.Sprintf(`
bindPort: {{ .%s }}
log:
level: trace
`, port.GenName("Server"))
remotePort := f.AllocPort()
clientConf := fmt.Sprintf(`
serverPort: {{ .%s }}
log:
level: trace
proxies:
- name: tcp
type: tcp
localPort: {{ .%s }}
remotePort: %d
`, port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
f.RunProcesses([]string{serverConf}, []string{clientConf})
framework.NewRequestExpect(f).Port(remotePort).Ensure()
})
ginkgo.It("JSON", func() {
serverConf := fmt.Sprintf(`{"bindPort": {{ .%s }}, "log": {"level": "trace"}}`, port.GenName("Server"))
remotePort := f.AllocPort()
clientConf := fmt.Sprintf(`{"serverPort": {{ .%s }}, "log": {"level": "trace"},
"proxies": [{"name": "tcp", "type": "tcp", "localPort": {{ .%s }}, "remotePort": %d}]}`,
port.GenName("Server"), framework.TCPEchoServerPort, remotePort)
f.RunProcesses([]string{serverConf}, []string{clientConf})
framework.NewRequestExpect(f).Port(remotePort).Ensure()
})
})
2021-06-18 08:48:36 +00:00
})