server_env.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package scenarios
  2. import (
  3. "os"
  4. "os/exec"
  5. "path/filepath"
  6. "runtime"
  7. "time"
  8. "v2ray.com/core/common/log"
  9. _ "v2ray.com/core"
  10. )
  11. var (
  12. runningServers = make([]*exec.Cmd, 0, 10)
  13. )
  14. func GetTestBinaryPath() string {
  15. file := filepath.Join(os.Getenv("GOPATH"), "out", "v2ray", "v2ray.test")
  16. if runtime.GOOS == "windows" {
  17. file += ".exe"
  18. }
  19. return file
  20. }
  21. func GetSourcePath() string {
  22. return filepath.Join("v2ray.com", "core", "main")
  23. }
  24. func TestFile(filename string) string {
  25. return filepath.Join(os.Getenv("GOPATH"), "src", "v2ray.com", "core", "testing", "scenarios", "data", filename)
  26. }
  27. func InitializeServerSetOnce(testcase string) error {
  28. if err := InitializeServerServer(testcase); err != nil {
  29. return err
  30. }
  31. if err := InitializeServerClient(testcase); err != nil {
  32. return err
  33. }
  34. return nil
  35. }
  36. func InitializeServerServer(testcase string) error {
  37. return InitializeServer(TestFile(testcase + "_server.json"))
  38. }
  39. func InitializeServerClient(testcase string) error {
  40. return InitializeServer(TestFile(testcase + "_client.json"))
  41. }
  42. func InitializeServer(configFile string) error {
  43. err := BuildV2Ray()
  44. if err != nil {
  45. return err
  46. }
  47. proc := RunV2Ray(configFile)
  48. err = proc.Start()
  49. if err != nil {
  50. return err
  51. }
  52. time.Sleep(time.Second)
  53. runningServers = append(runningServers, proc)
  54. return nil
  55. }
  56. func CloseAllServers() {
  57. log.Info("Closing all servers.")
  58. for _, server := range runningServers {
  59. server.Process.Signal(os.Interrupt)
  60. server.Process.Wait()
  61. }
  62. runningServers = make([]*exec.Cmd, 0, 10)
  63. log.Info("All server closed.")
  64. }