frp/test/e2e/v1/features/chaos.go

65 lines
1.7 KiB
Go
Raw Normal View History

package features
2021-06-18 16:48:36 +08:00
import (
"fmt"
"time"
2023-02-27 14:44:16 +08:00
"github.com/onsi/ginkgo/v2"
2021-06-18 16:48:36 +08:00
2022-08-29 01:02:53 +08:00
"github.com/fatedier/frp/test/e2e/framework"
2021-06-18 16:48:36 +08:00
)
2022-08-29 01:02:53 +08:00
var _ = ginkgo.Describe("[Feature: Chaos]", func() {
2021-06-18 16:48:36 +08:00
f := framework.NewDefaultFramework()
2022-08-29 01:02:53 +08:00
ginkgo.It("reconnect after frps restart", func() {
2021-06-18 16:48:36 +08:00
serverPort := f.AllocPort()
serverConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 16:32:39 +08:00
bindAddr = "0.0.0.0"
bindPort = %d
2021-06-18 16:48:36 +08:00
`, serverPort))
remotePort := f.AllocPort()
clientConfigPath := f.GenerateConfigFile(fmt.Sprintf(`
2023-09-13 16:32:39 +08:00
serverPort = %d
log.level = "trace"
[[proxies]]
name = "tcp"
type = "tcp"
localPort = %d
remotePort = %d
2021-06-18 16:48:36 +08:00
`, serverPort, f.PortByName(framework.TCPEchoServerPort), remotePort))
// 1. start frps and frpc, expect request success
ps, _, err := f.RunFrps("-c", serverConfigPath)
framework.ExpectNoError(err)
pc, _, err := f.RunFrpc("-c", clientConfigPath)
framework.ExpectNoError(err)
framework.NewRequestExpect(f).Port(remotePort).Ensure()
// 2. stop frps, expect request failed
2022-08-29 01:02:53 +08:00
_ = ps.Stop()
2021-06-18 16:48:36 +08:00
time.Sleep(200 * time.Millisecond)
framework.NewRequestExpect(f).Port(remotePort).ExpectError(true).Ensure()
// 3. restart frps, expect request success
_, _, err = f.RunFrps("-c", serverConfigPath)
framework.ExpectNoError(err)
time.Sleep(2 * time.Second)
framework.NewRequestExpect(f).Port(remotePort).Ensure()
// 4. stop frpc, expect request failed
2022-08-29 01:02:53 +08:00
_ = pc.Stop()
2021-06-18 16:48:36 +08:00
time.Sleep(200 * time.Millisecond)
framework.NewRequestExpect(f).Port(remotePort).ExpectError(true).Ensure()
// 5. restart frpc, expect request success
_, _, err = f.RunFrpc("-c", clientConfigPath)
framework.ExpectNoError(err)
time.Sleep(time.Second)
framework.NewRequestExpect(f).Port(remotePort).Ensure()
})
})