X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=test%2Fxdsserver_test.go;h=b8e98b5fe5920e1de5b35baeb9a4c8dab7b132d9;hb=72bb1c521aff5bb166db287ef426b243166d8927;hp=5722d31025ac6d8f07a2bcff799f68827b3a5c4a;hpb=db0df685e9dc40fdd53113caaac976d12fd73435;p=src%2Fxds%2Fxds-server.git diff --git a/test/xdsserver_test.go b/test/xdsserver_test.go index 5722d31..b8e98b5 100644 --- a/test/xdsserver_test.go +++ b/test/xdsserver_test.go @@ -17,34 +17,71 @@ package xdsservertest import ( + "fmt" + "io" "log" "os" "os/exec" + "sync" "testing" "time" common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib" "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1" + socketio_client "github.com/sebd71/go-socket.io-client" ) +// IOSockClient +type IOSockClient struct { + URL string + Conn *socketio_client.Client + Options *socketio_client.Options + EmitMutex *sync.Mutex + Connected bool + //ServerDiscoChan chan Disconnection + EscapeKeys []byte +} + //global client var HTTPCli *common.HTTPClient var logDir string -var sdkDir string +var sCli *IOSockClient + +func Copy(src, dst string) error { + in, err := os.Open(src) + if err != nil { + return err + } + defer in.Close() + + out, err := os.Create(dst) + if err != nil { + return err + } + defer out.Close() + + _, err = io.Copy(out, in) + if err != nil { + return err + } + return out.Close() +} func initEnv(launchProcess bool) { if launchProcess { + /*kill xds-server if needed*/ cmd := exec.Command("killall", "-9", "xds-server") if err := cmd.Start(); err != nil { log.Fatal(err) } cmd.Wait() } + /*set environment variable*/ rootTestLog := "/tmp/xds-server-test" if err := os.Setenv(envRootCfgDir, rootTestLog); err != nil { log.Fatal(err) } - sdkDir = rootTestLog + "/sdks/" + sdkDir := rootTestLog + "/sdks/" if err := os.Setenv(envXdtSdk, sdkDir); err != nil { log.Fatal(err) } @@ -57,13 +94,14 @@ func initEnv(launchProcess bool) { if err := os.Setenv("XDS_LOG_SILLY", "1"); err != nil { log.Fatal(err) } + /*remove and recreate working directories*/ os.RemoveAll(rootTestLog) os.MkdirAll(rootTestLog, 0755) logDir = rootTestLog + "/logs/" os.MkdirAll(logDir, 0755) - os.MkdirAll(sdkDir, 0755) } +/*prepare xds-server process*/ func launchXdsServer(proc **os.Process) *os.File { logFile := logDir + logFileXdsServer file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY, 0644) @@ -107,9 +145,41 @@ func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) { return cli, file } +func NewIoSocketClient(url, clientID string) (*IOSockClient, error) { + var err error + + sCli := &IOSockClient{ + URL: url, + EmitMutex: &sync.Mutex{}, + Options: &socketio_client.Options{ + Transport: "websocket", + Header: make(map[string][]string), + }, + } + sCli.Options.Header["XDS-SID"] = []string{clientID} + + sCli.Conn, err = socketio_client.NewClient(url, sCli.Options) + if err != nil { + return nil, fmt.Errorf("IO.socket connection error: " + err.Error()) + } + + sCli.Conn.On("connection", func() { + sCli.Connected = true + }) + + sCli.Conn.On("disconnection", func(err error) { + log.Printf("WS disconnection event with err: %v\n", err) + sCli.Connected = false + }) + + log.Printf("Connect websocket with url=%v clientId=%v\n", prefixURL, HTTPCli.GetClientID()) + return sCli, nil +} func TestMain(m *testing.M) { + /* useful for debugging, preventing from launching xds-server + * it can be launch separetly */ launchProcess := true - log.Printf("TestMain: launchProcess is %v", launchProcess) + log.Printf("TestMain: launchProcess is %v, so launching xds-server", launchProcess) initEnv(launchProcess) var proc *os.Process @@ -117,6 +187,7 @@ func TestMain(m *testing.M) { if launchProcess { fileXdsServer = launchXdsServer(&proc) go func(p *os.Process) { + log.Print("xds-server is launching") if status, err := p.Wait(); err != nil { log.Fatalf("status=%v\n err=%v\n", status, err) } @@ -130,8 +201,11 @@ func TestMain(m *testing.M) { var fileHTTPClient *os.File HTTPCli, fileHTTPClient = getHTTPClient(lvl) defer fileHTTPClient.Close() - - log.Printf("HTTPCli id is %v", HTTPCli.GetClientID()) + var err error + sCli, err = NewIoSocketClient(prefixURL, HTTPCli.GetClientID()) + if err != nil { + log.Fatal(err) + } if HTTPCli == nil { log.Fatal("HTTPCLi is nil") @@ -139,6 +213,3 @@ func TestMain(m *testing.M) { res := m.Run() defer os.Exit(res) } - -func init() { -}