mockservers.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package framework
  2. import (
  3. "github.com/fatedier/frp/test/e2e/mock/echoserver"
  4. "github.com/fatedier/frp/test/e2e/pkg/port"
  5. )
  6. const (
  7. TCPEchoServerPort = "TCPEchoServerPort"
  8. UDPEchoServerPort = "UDPEchoServerPort"
  9. )
  10. type MockServers struct {
  11. tcpEchoServer *echoserver.Server
  12. udpEchoServer *echoserver.Server
  13. }
  14. func NewMockServers(portAllocator *port.Allocator) *MockServers {
  15. s := &MockServers{}
  16. tcpPort := portAllocator.Get()
  17. udpPort := portAllocator.Get()
  18. s.tcpEchoServer = echoserver.New(echoserver.Options{
  19. Type: echoserver.TCP,
  20. BindAddr: "127.0.0.1",
  21. BindPort: int32(tcpPort),
  22. RepeatNum: 1,
  23. })
  24. s.udpEchoServer = echoserver.New(echoserver.Options{
  25. Type: echoserver.UDP,
  26. BindAddr: "127.0.0.1",
  27. BindPort: int32(udpPort),
  28. RepeatNum: 1,
  29. })
  30. return s
  31. }
  32. func (m *MockServers) Run() error {
  33. if err := m.tcpEchoServer.Run(); err != nil {
  34. return err
  35. }
  36. if err := m.udpEchoServer.Run(); err != nil {
  37. return err
  38. }
  39. return nil
  40. }
  41. func (m *MockServers) GetTemplateParams() map[string]interface{} {
  42. ret := make(map[string]interface{})
  43. ret[TCPEchoServerPort] = m.tcpEchoServer.GetOptions().BindPort
  44. ret[UDPEchoServerPort] = m.udpEchoServer.GetOptions().BindPort
  45. return ret
  46. }
  47. func (m *MockServers) GetParam(key string) interface{} {
  48. params := m.GetTemplateParams()
  49. if v, ok := params[key]; ok {
  50. return v
  51. }
  52. return nil
  53. }