X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=test%2Fsdks_test.go;fp=test%2Fsdks_test.go;h=5efd8fc46944e1801919357d992fa7bd0a9641c4;hb=4edc85706942a10085947ef457fca9e4f209a21a;hp=0000000000000000000000000000000000000000;hpb=b286ced30a859e2238d13450d61ea0110a53b8a9;p=src%2Fxds%2Fxds-server.git diff --git a/test/sdks_test.go b/test/sdks_test.go new file mode 100644 index 0000000..5efd8fc --- /dev/null +++ b/test/sdks_test.go @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Clément Bénier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package xdsservertest + +import ( + "fmt" + "log" + "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 +//} + +// 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.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 +} + +func TestSdks(t *testing.T) { + var sdkArray []xsapiv1.SDK + assert.Nil(t, HTTPCli.Get("/sdks", &sdkArray)) + t.Log(sdkArray[0]) + + 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++ { + 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") + + var sdk xsapiv1.SDK + assert.Nil(t, HTTPCli.Get("/sdks/"+sdkArray[i].ID, &sdk)) + assert.Equal(t, sdkArray[i], sdk) + + 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) + } +}