mirror of
https://github.com/fatedier/frp.git
synced 2025-08-04 20:49:04 +00:00
more e2e test cases (#2450)
This commit is contained in:
@@ -30,6 +30,9 @@ type Framework struct {
|
||||
// ports used in this framework indexed by port name.
|
||||
usedPorts map[string]int
|
||||
|
||||
// record ports alloced by this framework and release them after each test
|
||||
allocedPorts []int
|
||||
|
||||
// portAllocator to alloc port for this test case.
|
||||
portAllocator *port.Allocator
|
||||
|
||||
@@ -50,7 +53,13 @@ type Framework struct {
|
||||
clientProcesses []*process.Process
|
||||
|
||||
// Manual registered mock servers.
|
||||
servers []*server.Server
|
||||
servers []server.Server
|
||||
|
||||
// used to generate unique config file name.
|
||||
configFileIndex int64
|
||||
|
||||
// envs used to start processes, the form is `key=value`.
|
||||
osEnvs []string
|
||||
}
|
||||
|
||||
func NewDefaultFramework() *Framework {
|
||||
@@ -80,7 +89,7 @@ func (f *Framework) BeforeEach() {
|
||||
|
||||
f.cleanupHandle = AddCleanupAction(f.AfterEach)
|
||||
|
||||
dir, err := ioutil.TempDir(os.TempDir(), "frpe2e-test-*")
|
||||
dir, err := ioutil.TempDir(os.TempDir(), "frp-e2e-test-*")
|
||||
ExpectNoError(err)
|
||||
f.TempDirectory = dir
|
||||
|
||||
@@ -88,6 +97,14 @@ func (f *Framework) BeforeEach() {
|
||||
if err := f.mockServers.Run(); err != nil {
|
||||
Failf("%v", err)
|
||||
}
|
||||
|
||||
params := f.mockServers.GetTemplateParams()
|
||||
for k, v := range params {
|
||||
switch t := v.(type) {
|
||||
case int:
|
||||
f.usedPorts[k] = int(t)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Framework) AfterEach() {
|
||||
@@ -126,14 +143,23 @@ func (f *Framework) AfterEach() {
|
||||
// clean directory
|
||||
os.RemoveAll(f.TempDirectory)
|
||||
f.TempDirectory = ""
|
||||
f.serverConfPaths = nil
|
||||
f.clientConfPaths = nil
|
||||
f.serverConfPaths = []string{}
|
||||
f.clientConfPaths = []string{}
|
||||
|
||||
// release used ports
|
||||
for _, port := range f.usedPorts {
|
||||
f.portAllocator.Release(port)
|
||||
}
|
||||
f.usedPorts = make(map[string]int)
|
||||
|
||||
// release alloced ports
|
||||
for _, port := range f.allocedPorts {
|
||||
f.portAllocator.Release(port)
|
||||
}
|
||||
f.allocedPorts = make([]int, 0)
|
||||
|
||||
// clear os envs
|
||||
f.osEnvs = make([]string, 0)
|
||||
}
|
||||
|
||||
var portRegex = regexp.MustCompile(`{{ \.Port.*? }}`)
|
||||
@@ -210,6 +236,7 @@ func (f *Framework) PortByName(name string) int {
|
||||
func (f *Framework) AllocPort() int {
|
||||
port := f.portAllocator.Get()
|
||||
ExpectTrue(port > 0, "alloc port failed")
|
||||
f.allocedPorts = append(f.allocedPorts, port)
|
||||
return port
|
||||
}
|
||||
|
||||
@@ -217,11 +244,15 @@ func (f *Framework) ReleasePort(port int) {
|
||||
f.portAllocator.Release(port)
|
||||
}
|
||||
|
||||
func (f *Framework) RunServer(portName string, s *server.Server) {
|
||||
func (f *Framework) RunServer(portName string, s server.Server) {
|
||||
f.servers = append(f.servers, s)
|
||||
if s.BindPort() > 0 {
|
||||
if s.BindPort() > 0 && portName != "" {
|
||||
f.usedPorts[portName] = s.BindPort()
|
||||
}
|
||||
err := s.Run()
|
||||
ExpectNoError(err, portName)
|
||||
ExpectNoError(err, "RunServer: with PortName %s", portName)
|
||||
}
|
||||
|
||||
func (f *Framework) SetEnvs(envs []string) {
|
||||
f.osEnvs = envs
|
||||
}
|
||||
|
Reference in New Issue
Block a user