From d3a41ad067e7752a835c71d9f91ddd7230cd648a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20B=C3=A9nier?= Date: Thu, 19 Jul 2018 19:33:43 +0200 Subject: [PATCH] functionnal test: separate tests into files MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit separate tests into files each file represent a entry in the XDS-SERVER API the created files are: - version - config - folders Change-Id: I32d24f5b277ab853f6c190a96433aca5b4fda1d5 Signed-off-by: Clément Bénier --- test/config_test.go | 52 ++++++++++++++ test/folders_test.go | 171 +++++++++++++++++++++++++++++++++++++++++++++ test/version_test.go | 36 ++++++++++ test/xdsserver_test.go | 186 ------------------------------------------------- 4 files changed, 259 insertions(+), 186 deletions(-) create mode 100644 test/config_test.go create mode 100644 test/folders_test.go create mode 100644 test/version_test.go diff --git a/test/config_test.go b/test/config_test.go new file mode 100644 index 0000000..ad6ea1b --- /dev/null +++ b/test/config_test.go @@ -0,0 +1,52 @@ +/* + * 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 ( + "net" + "regexp" + "strings" + "testing" + + "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1" + "github.com/stretchr/testify/assert" +) + +func CheckIP(ipconfig string) bool { + ifaces, _ := net.Interfaces() + for _, i := range ifaces { + addrs, _ := i.Addrs() + for _, addr := range addrs { + if strings.HasPrefix(addr.String(), ipconfig) { + return true + } + } + } + return false +} + +func TestConfig(t *testing.T) { + var cfg xsapiv1.APIConfig + assert.Nil(t, HTTPCli.Get("/config", &cfg)) + + re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$") + assert.True(t, re.MatchString(cfg.ServerUID)) //ID + pathMap, present := cfg.SupportedSharing["PathMap"] + assert.True(t, present) + assert.True(t, pathMap) + assert.True(t, CheckIP(cfg.Builder.IP)) +} diff --git a/test/folders_test.go b/test/folders_test.go new file mode 100644 index 0000000..42db7c2 --- /dev/null +++ b/test/folders_test.go @@ -0,0 +1,171 @@ +/* + * 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 ( + "io/ioutil" + "os" + "regexp" + "testing" + + "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1" + "github.com/stretchr/testify/assert" +) + +func TestFolders(t *testing.T) { + var cfgArray []xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) + assert.Equal(t, len(cfgArray), 0) + + fPrj := xsapiv1.FolderConfig{ + Label: "testproject", + ClientPath: logDir + "testproject", + Type: xsapiv1.TypePathMap, + ClientData: "clientdatatest", + DataPathMap: xsapiv1.PathMapConfig{ + ServerPath: logDir + "testserverpath", + }, + } + var cfg xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + assert.NotNil(t, cfg) + + isCfgPrjMatch := func(fPrj xsapiv1.FolderConfig, cfg xsapiv1.FolderConfig) { + re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$") + assert.True(t, re.MatchString(cfg.ID)) //ID + assert.Equal(t, cfg.Label, fPrj.Label) //Label + assert.Equal(t, cfg.ClientPath, fPrj.ClientPath) + assert.Equal(t, cfg.Type, fPrj.Type) + assert.Equal(t, cfg.Status, "Enable") + assert.Equal(t, cfg.IsInSync, true) + assert.Equal(t, len(cfg.DefaultSdk), 0) + assert.Equal(t, fPrj.ClientData, cfg.ClientData) + assert.Equal(t, fPrj.DataPathMap.ServerPath, cfg.DataPathMap.ServerPath) + } + isCfgPrjMatch(fPrj, cfg) + var cfg2 xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Get("/folders/"+cfg.ID, &cfg2)) + isCfgPrjMatch(fPrj, cfg2) + + assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) + assert.Equal(t, len(cfgArray), 1) + + //call with the same uid create error + assert.NotNil(t, HTTPCli.Post("/folders", cfg, &cfg)) + + /*create/delete folders*/ + var cfgArrayBis []xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) + assert.Equal(t, len(cfgArray), 3) + assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[1].ID, &cfg)) + assert.Equal(t, cfg, cfgArray[1]) + assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) + assert.Equal(t, len(cfgArrayBis), 2) + assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[0].ID, &cfg)) + assert.Equal(t, cfg, cfgArray[0]) + assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) + assert.Equal(t, len(cfgArrayBis), 1) + assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[2].ID, &cfg)) + assert.Equal(t, cfg, cfgArray[2]) + assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) + assert.Equal(t, len(cfgArrayBis), 0) +} + +func TestFoldersEmptyValues(t *testing.T) { + fPrj := xsapiv1.FolderConfig{ + Label: "testproject", + ClientPath: logDir + "testproject", + Type: xsapiv1.TypePathMap, + ClientData: "clientdatatest", + DataPathMap: xsapiv1.PathMapConfig{ + ServerPath: "", + }, + } + var cfg xsapiv1.FolderConfig + /*ServerPath is empty*/ + assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + fPrj.DataPathMap.ServerPath = logDir + "sameserverpath" + fPrj.ClientPath = "" + /*ClientPath is Empty*/ + assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + fPrj.ClientPath = "logDir" + fPrj.Type = "" + /*Type is empty*/ + assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + var cfgArray []xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) + assert.Equal(t, len(cfgArray), 0) +} + +func TestFoldersPathMapConfig(t *testing.T) { + fPrj := xsapiv1.FolderConfig{ + Label: "testproject", + ClientPath: logDir + "clientpathtest", + Type: xsapiv1.TypePathMap, + ClientData: "clientdatatest", + DataPathMap: xsapiv1.PathMapConfig{ + ServerPath: logDir + "serverpath", + CheckFile: "checkfile", + }, + } + var cfg xsapiv1.FolderConfig + /*file not present*/ + assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + var checkFileClient = fPrj.ClientPath + "/checkfile" + var checkFileServer = fPrj.DataPathMap.ServerPath + "/checkfile" + + /*create file*/ + os.MkdirAll(fPrj.ClientPath, 0755) + fPrj.DataPathMap.CheckFile = checkFileClient + fPrj.DataPathMap.CheckContent = "CheckContent From Client\n" + file, err := os.OpenFile(checkFileClient, os.O_CREATE|os.O_RDWR, 0644) + if err != nil { + t.Log(err) + } + if err := os.Symlink(checkFileClient, checkFileServer); err != nil { + t.Log(err) + } + /*file content differ*/ + assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + /*write same message*/ + if _, err := file.WriteString(fPrj.DataPathMap.CheckContent); err != nil { + t.Log(err) + } + assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) + + /*check server msg: ServerUID needed*/ + var APIcfg xsapiv1.APIConfig + assert.Nil(t, HTTPCli.Get("/config", &APIcfg)) + msg := "Pathmap checked message written by xds-server ID: " + APIcfg.ServerUID + "\n" + data, err := ioutil.ReadAll(file) + if err != nil { + t.Log(err) + } + assert.Equal(t, msg, string(data)) + + assert.Nil(t, HTTPCli.Delete("/folders/"+cfg.ID, &cfg)) + var cfgArray []xsapiv1.FolderConfig + assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) + assert.Equal(t, len(cfgArray), 0) +} diff --git a/test/version_test.go b/test/version_test.go new file mode 100644 index 0000000..275480b --- /dev/null +++ b/test/version_test.go @@ -0,0 +1,36 @@ +/* + * 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 ( + "regexp" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestVersion(t *testing.T) { + var datVersion map[string]interface{} + assert.Nil(t, HTTPCli.Get("/version", &datVersion)) + t.Log(datVersion) + + ver, present := datVersion["version"] + assert.True(t, present) + t.Logf("version is %s", ver.(string)) + re := regexp.MustCompile("^v*[0-9]+.[0-9]+.[0-9]+$") + assert.True(t, re.MatchString(ver.(string))) +} diff --git a/test/xdsserver_test.go b/test/xdsserver_test.go index 75f4f92..f2b4d9d 100644 --- a/test/xdsserver_test.go +++ b/test/xdsserver_test.go @@ -17,19 +17,13 @@ package xdsservertest import ( - "io/ioutil" "log" - "net" "os" "os/exec" - "regexp" - "strings" "testing" "time" common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib" - "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1" - "github.com/stretchr/testify/assert" ) //global client @@ -117,183 +111,3 @@ func TestMain(m *testing.M) { func init() { } - -func CheckIP(ipconfig string) bool { - ifaces, _ := net.Interfaces() - for _, i := range ifaces { - addrs, _ := i.Addrs() - for _, addr := range addrs { - if strings.HasPrefix(addr.String(), ipconfig) { - return true - } - } - } - return false -} - -func TestVersion(t *testing.T) { - var datVersion map[string]interface{} - assert.Nil(t, HTTPCli.Get("/version", &datVersion)) - t.Log(datVersion) - - ver, present := datVersion["version"] - assert.True(t, present) - t.Logf("version is %s", ver.(string)) - re := regexp.MustCompile("^v*[0-9]+.[0-9]+.[0-9]+$") - assert.True(t, re.MatchString(ver.(string))) -} - -func TestConfig(t *testing.T) { - var cfg xsapiv1.APIConfig - assert.Nil(t, HTTPCli.Get("/config", &cfg)) - - re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$") - assert.True(t, re.MatchString(cfg.ServerUID)) //ID - pathMap, present := cfg.SupportedSharing["PathMap"] - assert.True(t, present) - assert.True(t, pathMap) - assert.True(t, CheckIP(cfg.Builder.IP)) -} -func TestFolders(t *testing.T) { - var cfgArray []xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) - assert.Equal(t, len(cfgArray), 0) - - fPrj := xsapiv1.FolderConfig{ - Label: "testproject", - ClientPath: logDir + "testproject", - Type: xsapiv1.TypePathMap, - ClientData: "clientdatatest", - DataPathMap: xsapiv1.PathMapConfig{ - ServerPath: logDir + "testserverpath", - }, - } - var cfg xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - assert.NotNil(t, cfg) - - isCfgPrjMatch := func(fPrj xsapiv1.FolderConfig, cfg xsapiv1.FolderConfig) { - re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$") - assert.True(t, re.MatchString(cfg.ID)) //ID - assert.Equal(t, cfg.Label, fPrj.Label) //Label - assert.Equal(t, cfg.ClientPath, fPrj.ClientPath) - assert.Equal(t, cfg.Type, fPrj.Type) - assert.Equal(t, cfg.Status, "Enable") - assert.Equal(t, cfg.IsInSync, true) - assert.Equal(t, len(cfg.DefaultSdk), 0) - assert.Equal(t, fPrj.ClientData, cfg.ClientData) - assert.Equal(t, fPrj.DataPathMap.ServerPath, cfg.DataPathMap.ServerPath) - } - isCfgPrjMatch(fPrj, cfg) - var cfg2 xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Get("/folders/"+cfg.ID, &cfg2)) - isCfgPrjMatch(fPrj, cfg2) - - assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) - assert.Equal(t, len(cfgArray), 1) - - //call with the same uid create error - assert.NotNil(t, HTTPCli.Post("/folders", cfg, &cfg)) - - /*create/delete folders*/ - var cfgArrayBis []xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) - assert.Equal(t, len(cfgArray), 3) - assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[1].ID, &cfg)) - assert.Equal(t, cfg, cfgArray[1]) - assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) - assert.Equal(t, len(cfgArrayBis), 2) - assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[0].ID, &cfg)) - assert.Equal(t, cfg, cfgArray[0]) - assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) - assert.Equal(t, len(cfgArrayBis), 1) - assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[2].ID, &cfg)) - assert.Equal(t, cfg, cfgArray[2]) - assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis)) - assert.Equal(t, len(cfgArrayBis), 0) -} - -func TestFoldersEmptyValues(t *testing.T) { - fPrj := xsapiv1.FolderConfig{ - Label: "testproject", - ClientPath: logDir + "testproject", - Type: xsapiv1.TypePathMap, - ClientData: "clientdatatest", - DataPathMap: xsapiv1.PathMapConfig{ - ServerPath: "", - }, - } - var cfg xsapiv1.FolderConfig - /*ServerPath is empty*/ - assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - fPrj.DataPathMap.ServerPath = logDir + "sameserverpath" - fPrj.ClientPath = "" - /*ClientPath is Empty*/ - assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - fPrj.ClientPath = "logDir" - fPrj.Type = "" - /*Type is empty*/ - assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - var cfgArray []xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) - assert.Equal(t, len(cfgArray), 0) -} - -func TestFoldersPathMapConfig(t *testing.T) { - fPrj := xsapiv1.FolderConfig{ - Label: "testproject", - ClientPath: logDir + "clientpathtest", - Type: xsapiv1.TypePathMap, - ClientData: "clientdatatest", - DataPathMap: xsapiv1.PathMapConfig{ - ServerPath: logDir + "serverpath", - CheckFile: "checkfile", - }, - } - var cfg xsapiv1.FolderConfig - /*file not present*/ - assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - var checkFileClient = fPrj.ClientPath + "/checkfile" - var checkFileServer = fPrj.DataPathMap.ServerPath + "/checkfile" - - /*create file*/ - os.MkdirAll(fPrj.ClientPath, 0755) - fPrj.DataPathMap.CheckFile = checkFileClient - fPrj.DataPathMap.CheckContent = "CheckContent From Client\n" - file, err := os.OpenFile(checkFileClient, os.O_CREATE|os.O_RDWR, 0644) - if err != nil { - t.Log(err) - } - if err := os.Symlink(checkFileClient, checkFileServer); err != nil { - t.Log(err) - } - /*file content differ*/ - assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - /*write same message*/ - if _, err := file.WriteString(fPrj.DataPathMap.CheckContent); err != nil { - t.Log(err) - } - assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg)) - - /*check server msg: ServerUID needed*/ - var APIcfg xsapiv1.APIConfig - assert.Nil(t, HTTPCli.Get("/config", &APIcfg)) - msg := "Pathmap checked message written by xds-server ID: " + APIcfg.ServerUID + "\n" - data, err := ioutil.ReadAll(file) - if err != nil { - t.Log(err) - } - assert.Equal(t, msg, string(data)) - - assert.Nil(t, HTTPCli.Delete("/folders/"+cfg.ID, &cfg)) - var cfgArray []xsapiv1.FolderConfig - assert.Nil(t, HTTPCli.Get("/folders", &cfgArray)) - assert.Equal(t, len(cfgArray), 0) -} -- 2.16.6