aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-11-06 18:17:32 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2018-11-06 18:17:32 +0100
commitbe47274f79eb0843da4d805cfc417fbf7921379c (patch)
tree9511f7109b4418cd845c8a1991e6d6b3d49caa94
parent4b57ec13022e836bdd8cb7f02b3d77f1924d4c35 (diff)
Check dependency tools before running testsguppy_6.99.2guppy_6.99.1guppy/6.99.2guppy/6.99.16.99.26.99.1
Add a check of all dependency tools before running tests in order to report a clear error instead of a cryptic test failure. Change-Id: I7b642428fb4ada7eec2de0c4c45f612ae6888b33 Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
-rw-r--r--test/config.go10
-rw-r--r--test/main_test.go33
2 files changed, 43 insertions, 0 deletions
diff --git a/test/config.go b/test/config.go
index 0b3ce76..804b0b1 100644
--- a/test/config.go
+++ b/test/config.go
@@ -33,3 +33,13 @@ const (
helloworldFixturesDir = "fixtures/helloworld"
sshFixturesDir = "fixtures/ssh"
)
+
+var dependency_tools = [...]string{
+ "cmake",
+ "make",
+ "gcc",
+ "c++",
+ "python3",
+ "wget",
+ "jq",
+}
diff --git a/test/main_test.go b/test/main_test.go
index 273df09..bdea40c 100644
--- a/test/main_test.go
+++ b/test/main_test.go
@@ -82,6 +82,35 @@ func Copy(src, dst string) error {
return out.Close()
}
+// init function will run once before execution of test functions begins.
+func init() {
+ // Check dependency
+ err := checkTestDep()
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+// isCommandAvailable verify if a command/utility is available
+func isCommandAvailable(name string) bool {
+ cmd := exec.Command("/bin/sh", "-c", "command -v "+name)
+ if err := cmd.Run(); err != nil {
+ return false
+ }
+ return true
+}
+
+// checkTestDep checks if all dependency tools are available to be able to run tests
+func checkTestDep() error {
+ for _, cmd := range dependency_tools {
+ if !isCommandAvailable(cmd) {
+ return fmt.Errorf(cmd + " is not installed and is mandatory to run tests")
+ }
+ }
+ return nil
+}
+
+// initEnv
func initEnv(launchProcess bool) {
if launchProcess {
/*kill xds-server if needed*/
@@ -133,6 +162,7 @@ func launchXdsServer(proc **os.Process) *os.File {
return file
}
+// getHTTPClient
func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) {
logFile := logDir + logFileClient
file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY, 0644)
@@ -192,7 +222,10 @@ func NewIoSocketClient(url, clientID string) (*IOSockClient, error) {
log.Printf("Connect websocket with url=%v clientId=%v\n", prefixURL, HTTPCli.GetClientID())
return sCli, nil
}
+
+// TestMain is the main entry point of testsuite
func TestMain(m *testing.M) {
+
/* useful for debugging, preventing from launching xds-server
* it can be launch separately */
launchProcess := true