X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=test%2Fsdks_test.go;h=3232fa4e230a99aed4e6e9d136beb233af928594;hb=ec12c77af9b30e7ae29c28863dccf7968ab35fb6;hp=5efd8fc46944e1801919357d992fa7bd0a9641c4;hpb=db0df685e9dc40fdd53113caaac976d12fd73435;p=src%2Fxds%2Fxds-server.git diff --git a/test/sdks_test.go b/test/sdks_test.go index 5efd8fc..3232fa4 100644 --- a/test/sdks_test.go +++ b/test/sdks_test.go @@ -17,92 +17,39 @@ package xdsservertest import ( - "fmt" - "log" + "os" + "path" "regexp" - "sync" "testing" "time" "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1" - socketio_client "github.com/sebd71/go-socket.io-client" "github.com/stretchr/testify/assert" ) -// Disconnection Channel used to notify XDS Server disconnection -//type Disconnection struct { -// error string -// code int -// svrConf ServerCfg -//} +func ConnectSDKStateChange(t *testing.T, sCli *IOSockClient, channel chan xsapiv1.SDK) { -// IOSockClient . -type IOSockClient struct { - URL string - Conn *socketio_client.Client - Options *socketio_client.Options - EmitMutex *sync.Mutex - Connected bool - //ServerDiscoChan chan Disconnection - EscapeKeys []byte -} - -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), - }, - //ServerDiscoChan: make(chan Disconnection, 1), - } - 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() { - log.Printf("BBBBBBBBBBBBBBBB:::WS connection event") - sCli.Connected = true - }) - - sCli.Conn.On("disconnection", func(err error) { - log.Printf("AAAAAAAAAAAA:::WS disconnection event with err: %v\n", err) - sCli.Connected = false + sCli.Conn.On(xsapiv1.EVTSDKStateChange, func(e xsapiv1.EventMsg) { + sdk, _ := e.DecodeSDKEvent() + channel <- sdk }) - sCli.Conn.On(xsapiv1.EVTSDKManagement, func(data interface{}) { - log.Printf("WS disconnection event with err: %v\n", data) - }) - - args := xsapiv1.EventRegisterArgs{Name: xsapiv1.EVTSDKManagement} - if err := HTTPCli.Post("/events/register", args, nil); err != nil { - return sCli, err - } - - return sCli, nil + args := xsapiv1.EventRegisterArgs{Name: xsapiv1.EVTSDKStateChange} + assert.Nil(t, HTTPCli.Post("/events/register", args, nil)) } func TestSdks(t *testing.T) { var sdkArray []xsapiv1.SDK assert.Nil(t, HTTPCli.Get("/sdks", &sdkArray)) - t.Log(sdkArray[0]) - + _, err := os.Stat(path.Join(sdkDir, "sdks_latest.json")) + assert.Nil(t, err) t.Logf("Connect websocket with url=%v clientId=%v\n", prefixURL, HTTPCli.GetClientID()) - IOSkClient, err := NewIoSocketClient(prefixURL, HTTPCli.GetClientID()) - if err != nil { - t.Fatal(err) - } - t.Log(IOSkClient) - //for i := 0; i < len(sdkArray); i++ { - for i := 0; i < 1; i++ { + chSdks := make(chan xsapiv1.SDK) + defer close(chSdks) + ConnectSDKStateChange(t, sCli, chSdks) + + for i := 0; i < len(sdkArray); i++ { re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$") assert.True(t, re.MatchString(sdkArray[i].ID)) assert.Equal(t, sdkArray[0].Status, "Not Installed") @@ -114,7 +61,55 @@ func TestSdks(t *testing.T) { var sdkRes xsapiv1.SDK assert.Nil(t, HTTPCli.Post("/sdks", sdk, &sdkRes)) assert.Equal(t, sdkRes.Status, "Installing") - //t.Log(sdkRes) - time.Sleep(1 * time.Second) + time.Sleep(1 * time.Millisecond) + assert.Nil(t, HTTPCli.Post("/sdks/abortinstall", sdk, &sdkRes)) + assert.Equal(t, sdkRes.Status, "Not Installed") + time.Sleep(1 * time.Millisecond) + sdkFromEvent := <-chSdks + assert.Equal(t, sdkRes.ID, sdkFromEvent.ID) + assert.Equal(t, sdkRes.Status, sdkFromEvent.Status) + } +} + +func installFakeSdk(t *testing.T, sdkInstall xsapiv1.SDKInstallArgs, chSdks chan xsapiv1.SDK) xsapiv1.SDK { + var sdkRes xsapiv1.SDK + assert.Nil(t, HTTPCli.Post("/sdks", sdkInstall, &sdkRes)) + assert.Equal(t, sdkRes.Status, "Installing") + /*waiting for SDKStateChange event from channel*/ + sdkFromEvent := <-chSdks + t.Log(sdkFromEvent) + assert.Equal(t, sdkRes.ID, sdkFromEvent.ID) + assert.Equal(t, "Installed", sdkFromEvent.Status) + return sdkFromEvent +} + +func TestInstallFakeSdk(t *testing.T) { + sdk := xsapiv1.SDKInstallArgs{ + ID: "", + Filename: sdkFileName, + Force: false, + } + + chSdks := make(chan xsapiv1.SDK) + defer close(chSdks) + ConnectSDKStateChange(t, sCli, chSdks) + installFakeSdk(t, sdk, chSdks) + var sdkRes xsapiv1.SDK + assert.NotNil(t, HTTPCli.Post("/sdks", sdk, &sdkRes)) + sdk.Force = true + //installFakeSdk(t, sdk, chSdks) +} + +func TestSdksError(t *testing.T) { + sdk := xsapiv1.SDKInstallArgs{ + ID: "", + Filename: "", + Force: false, } + var sdkRes xsapiv1.SDK + assert.NotNil(t, HTTPCli.Post("/sdks", sdk, &sdkRes)) + sdk.ID = "42885c24-374e-3ef0-9723-0ce8a05191aa" + assert.NotNil(t, HTTPCli.Post("/sdks", sdk, &sdkRes)) + sdk.Filename = "fake" + assert.NotNil(t, HTTPCli.Post("/sdks", sdk, &sdkRes)) }