|  | @@ -1,102 +0,0 @@
 | 
	
		
			
				|  |  | -package scenarios
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import (
 | 
	
		
			
				|  |  | -	"os"
 | 
	
		
			
				|  |  | -	"os/exec"
 | 
	
		
			
				|  |  | -	"path/filepath"
 | 
	
		
			
				|  |  | -	"runtime"
 | 
	
		
			
				|  |  | -	"time"
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	"v2ray.com/core/app/log"
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	"fmt"
 | 
	
		
			
				|  |  | -	"io/ioutil"
 | 
	
		
			
				|  |  | -	"sync"
 | 
	
		
			
				|  |  | -	_ "v2ray.com/core"
 | 
	
		
			
				|  |  | -	"v2ray.com/core/common/retry"
 | 
	
		
			
				|  |  | -)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -var (
 | 
	
		
			
				|  |  | -	runningServers    = make([]*exec.Cmd, 0, 10)
 | 
	
		
			
				|  |  | -	testBinaryPath    string
 | 
	
		
			
				|  |  | -	testBinaryPathGen sync.Once
 | 
	
		
			
				|  |  | -)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func GenTestBinaryPath() {
 | 
	
		
			
				|  |  | -	testBinaryPathGen.Do(func() {
 | 
	
		
			
				|  |  | -		var tempDir string
 | 
	
		
			
				|  |  | -		err := retry.Timed(5, 100).On(func() error {
 | 
	
		
			
				|  |  | -			dir, err := ioutil.TempDir("", "v2ray")
 | 
	
		
			
				|  |  | -			if err != nil {
 | 
	
		
			
				|  |  | -				return err
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			tempDir = dir
 | 
	
		
			
				|  |  | -			return nil
 | 
	
		
			
				|  |  | -		})
 | 
	
		
			
				|  |  | -		if err != nil {
 | 
	
		
			
				|  |  | -			panic(err)
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		file := filepath.Join(tempDir, "v2ray.test")
 | 
	
		
			
				|  |  | -		if runtime.GOOS == "windows" {
 | 
	
		
			
				|  |  | -			file += ".exe"
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		testBinaryPath = file
 | 
	
		
			
				|  |  | -		fmt.Printf("Generated binary path: %s\n", file)
 | 
	
		
			
				|  |  | -	})
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func GetSourcePath() string {
 | 
	
		
			
				|  |  | -	return filepath.Join("v2ray.com", "core", "main")
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func TestFile(filename string) string {
 | 
	
		
			
				|  |  | -	return filepath.Join(os.Getenv("GOPATH"), "src", "v2ray.com", "core", "testing", "scenarios", "data", filename)
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func InitializeServerSetOnce(testcase string) error {
 | 
	
		
			
				|  |  | -	if err := InitializeServerServer(testcase); err != nil {
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	if err := InitializeServerClient(testcase); err != nil {
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	return nil
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func InitializeServerServer(testcase string) error {
 | 
	
		
			
				|  |  | -	return InitializeServer(TestFile(testcase + "_server.json"))
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func InitializeServerClient(testcase string) error {
 | 
	
		
			
				|  |  | -	return InitializeServer(TestFile(testcase + "_client.json"))
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func InitializeServer(configFile string) error {
 | 
	
		
			
				|  |  | -	err := BuildV2Ray()
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	proc := RunV2Ray(configFile)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	err = proc.Start()
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		return err
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	time.Sleep(time.Second)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	runningServers = append(runningServers, proc)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	return nil
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -func CloseAllServers() {
 | 
	
		
			
				|  |  | -	log.Info("Closing all servers.")
 | 
	
		
			
				|  |  | -	for _, server := range runningServers {
 | 
	
		
			
				|  |  | -		server.Process.Signal(os.Interrupt)
 | 
	
		
			
				|  |  | -		server.Process.Wait()
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	runningServers = make([]*exec.Cmd, 0, 10)
 | 
	
		
			
				|  |  | -	log.Info("All server closed.")
 | 
	
		
			
				|  |  | -}
 |