summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClément Bénier <clement.benier@iot.bzh>2018-07-25 16:02:30 +0200
committerClément Bénier <clement.benier@iot.bzh>2018-08-21 11:08:36 +0200
commitdb0df685e9dc40fdd53113caaac976d12fd73435 (patch)
treeaa6afac29dc79b23e087535b32574983aead237d
parentd3a41ad067e7752a835c71d9f91ddd7230cd648a (diff)
sdk_test: draft in progress
add tests for testing sdk - draft Change-Id: I81f2f4ff75d6256fd092afd5213ea4f3370fcc68 Signed-off-by: Clément Bénier <clement.benier@iot.bzh>
-rw-r--r--.vscode/settings.json3
-rw-r--r--Makefile4
-rw-r--r--glide.yaml3
-rw-r--r--test/_test-config.json2
-rw-r--r--test/config.go (renamed from test/test_config.go)14
-rw-r--r--test/sdks_test.go120
-rw-r--r--test/xdsserver_test.go67
7 files changed, 188 insertions, 25 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c556d7f..45cbe81 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -21,7 +21,8 @@
"bin": true,
"tools": true,
"webapp/dist": true,
- "webapp/node_modules": true
+ "webapp/node_modules": true,
+ "**/*~": true
},
// Specify paths/files to ignore. (Supports Globs)
"cSpell.ignorePaths": [
diff --git a/Makefile b/Makefile
index 295650b..f7f7a9a 100644
--- a/Makefile
+++ b/Makefile
@@ -120,7 +120,11 @@ xds: scripts tools/syncthing/copytobin
@cd $(ROOT_SRCDIR); $(BUILD_ENV_FLAGS) go build $(VERBOSE_$(V)) -i -o $(LOCAL_BINDIR)/$(TARGET)$(EXT) -ldflags "$(GO_LDFLAGS) -X main.AppVersion=$(VERSION) -X main.AppSubVersion=$(SUB_VERSION)" -gcflags "$(GO_GCFLAGS)" .
test: tools/glide
+ifndef name
go test --race ./test -v
+else
+ go test --race ./test -v -run $(name)
+endif
vet: tools/glide
go vet $(shell $(LOCAL_TOOLSDIR)/glide novendor)
diff --git a/glide.yaml b/glide.yaml
index 193ad48..69ee318 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -37,4 +37,5 @@ import:
version: ^1.2.2
subpackages:
- assert
-
+- package: github.com/sebd71/go-socket.io-client
+ version: 46defcb47f
diff --git a/test/_test-config.json b/test/_test-config.json
index 835bc79..223b3eb 100644
--- a/test/_test-config.json
+++ b/test/_test-config.json
@@ -1,5 +1,5 @@
{
- "webAppDir": "${EXEPATH}/../webapp/dist",
+ "webAppDir": "${EXEPATH}/../webapp/src",
"httpPort": "8000",
"sdkScriptsDir": "${EXEPATH}/../sdks",
"shareRootDir": "${XDS_SERVER_ROOT_CFG_DIR}/xds-server/projects",
diff --git a/test/test_config.go b/test/config.go
index a182dd5..8fea851 100644
--- a/test/test_config.go
+++ b/test/config.go
@@ -14,11 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package xdsservertest
var argsProcess = []string{"../bin/xds-server", "-l", "debug", "-c", "_test-config.json"}
-const envRootCfgDir = "XDS_SERVER_ROOT_CFG_DIR"
-const prefixURL = "http://localhost:8000"
-const logFileXdsServer = "xdsserver-test.log"
-const logFileClient = "client-test.log"
+const (
+ envRootCfgDir = "XDS_SERVER_ROOT_CFG_DIR"
+ prefixURL = "http://localhost:8000"
+ logFileXdsServer = "xdsserver-test.log"
+ logFileClient = "client-test.log"
+ envXdtSdk = "XDT_SDK"
+ envXdsServerWorkspaceDir = "XDS_SERVER_WORKSPACE_DIR"
+ envXdsServerRootCfgDir = "XDS_SERVER_ROOT_CFG_DIR"
+)
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 <clement.benier@iot.bzh>
+ *
+ * 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)
+ }
+}
diff --git a/test/xdsserver_test.go b/test/xdsserver_test.go
index f2b4d9d..5722d31 100644
--- a/test/xdsserver_test.go
+++ b/test/xdsserver_test.go
@@ -24,26 +24,44 @@ import (
"time"
common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
)
//global client
var HTTPCli *common.HTTPClient
var logDir string
+var sdkDir string
-func initEnv() {
- cmd := exec.Command("killall", "-9", "xds-server")
- if err := cmd.Start(); err != nil {
- log.Fatal(err)
+func initEnv(launchProcess bool) {
+ if launchProcess {
+ cmd := exec.Command("killall", "-9", "xds-server")
+ if err := cmd.Start(); err != nil {
+ log.Fatal(err)
+ }
+ cmd.Wait()
}
- cmd.Wait()
rootTestLog := "/tmp/xds-server-test"
if err := os.Setenv(envRootCfgDir, rootTestLog); err != nil {
log.Fatal(err)
}
+ sdkDir = rootTestLog + "/sdks/"
+ if err := os.Setenv(envXdtSdk, sdkDir); err != nil {
+ log.Fatal(err)
+ }
+ if err := os.Setenv(envXdsServerWorkspaceDir, rootTestLog); err != nil {
+ log.Fatal(err)
+ }
+ if err := os.Setenv(envXdsServerRootCfgDir, rootTestLog); err != nil {
+ log.Fatal(err)
+ }
+ if err := os.Setenv("XDS_LOG_SILLY", "1"); err != nil {
+ log.Fatal(err)
+ }
os.RemoveAll(rootTestLog)
os.MkdirAll(rootTestLog, 0755)
logDir = rootTestLog + "/logs/"
os.MkdirAll(logDir, 0755)
+ os.MkdirAll(sdkDir, 0755)
}
func launchXdsServer(proc **os.Process) *os.File {
@@ -70,7 +88,7 @@ func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) {
}
conf := common.HTTPClientConfig{
URLPrefix: "/api/v1",
- HeaderClientKeyName: "Xds-Test-Sid",
+ HeaderClientKeyName: "Xds-Sid",
CsrfDisable: true,
LogOut: file,
LogPrefix: "XDSSERVERTEST: ",
@@ -78,35 +96,48 @@ func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) {
}
cli, err := common.HTTPNewClient(prefixURL, conf)
if err != nil {
- log.Print(err)
+ log.Fatal(err)
+ }
+ log.Printf("HTTP session ID : %v", cli.GetClientID())
+ var ver xsapiv1.Version
+ err = cli.Get("/version", &ver)
+ if err != nil {
+ log.Fatal(err)
}
return cli, file
}
func TestMain(m *testing.M) {
- initEnv()
+ launchProcess := true
+ log.Printf("TestMain: launchProcess is %v", launchProcess)
+ initEnv(launchProcess)
var proc *os.Process
- fileXdsServer := launchXdsServer(&proc)
- go func(p *os.Process) {
- if status, err := p.Wait(); err != nil {
- log.Fatalf("status=%v\n err=%v\n", status, err)
- }
- }(proc)
+ var fileXdsServer *os.File
+ if launchProcess {
+ fileXdsServer = launchXdsServer(&proc)
+ go func(p *os.Process) {
+ if status, err := p.Wait(); err != nil {
+ log.Fatalf("status=%v\n err=%v\n", status, err)
+ }
+ }(proc)
+ defer proc.Kill()
+ defer fileXdsServer.Close()
+ }
time.Sleep(1 * time.Second)
lvl := common.HTTPLogLevelDebug
var fileHTTPClient *os.File
HTTPCli, fileHTTPClient = getHTTPClient(lvl)
+ defer fileHTTPClient.Close()
+
+ log.Printf("HTTPCli id is %v", HTTPCli.GetClientID())
if HTTPCli == nil {
log.Fatal("HTTPCLi is nil")
}
res := m.Run()
- proc.Kill()
- fileXdsServer.Close()
- fileHTTPClient.Close()
- os.Exit(res)
+ defer os.Exit(res)
}
func init() {