X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fxds%2Fxds-server.git;a=blobdiff_plain;f=test%2Fmain_test.go;h=bdea40c2347f972aa2e93f168758bb923b086eb5;hp=68206a923724d0af4275d3dbabb48dddb3f239fe;hb=be47274f79eb0843da4d805cfc417fbf7921379c;hpb=c095e1ea9a9e38f020ce4ae852d97c712be910b6 diff --git a/test/main_test.go b/test/main_test.go index 68206a9..bdea40c 100644 --- a/test/main_test.go +++ b/test/main_test.go @@ -47,18 +47,21 @@ var HTTPCli *common.HTTPClient var logDir string var sCli *IOSockClient +// Debug function used to print debug logs func Debug(t *testing.T, args ...interface{}) { if os.Getenv("VERBOSE") != "" { - t.Log(args) + t.Log(args...) } } +// Debugf function used to print debug logs func Debugf(t *testing.T, format string, args ...interface{}) { if os.Getenv("VERBOSE") != "" { - t.Logf(format, args) + t.Logf(format, args...) } } +// Copy copies from src to dst until either EOF func Copy(src, dst string) error { in, err := os.Open(src) if err != nil { @@ -79,10 +82,39 @@ 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*/ - cmd := exec.Command("killall", "-9", "xds-server") + cmd := exec.Command("pkill", "-9", "xds-server") if err := cmd.Start(); err != nil { log.Fatal(err) } @@ -130,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) @@ -144,17 +177,17 @@ func getHTTPClient(lvl int) (*common.HTTPClient, *os.File) { LogPrefix: "XDSSERVERTEST: ", LogLevel: lvl, } - cli, err := common.HTTPNewClient(prefixURL, conf) + HTTPcli, err := common.HTTPNewClient(prefixURL, conf) if err != nil { log.Fatal(err) } - log.Printf("HTTP session ID : %v", cli.GetClientID()) + log.Printf("HTTP session ID : %v", HTTPcli.GetClientID()) var ver xsapiv1.Version - err = cli.Get("/version", &ver) + err = HTTPcli.Get("/version", &ver) if err != nil { log.Fatal(err) } - return cli, file + return HTTPcli, file } func NewIoSocketClient(url, clientID string) (*IOSockClient, error) { @@ -180,16 +213,21 @@ func NewIoSocketClient(url, clientID string) (*IOSockClient, error) { }) sCli.Conn.On("disconnection", func(err error) { - log.Printf("WS disconnection event with err: %v\n", err) + if err != nil { + log.Printf("WS disconnection event with err: %v\n", err) + } sCli.Connected = false }) 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 separetly */ + * it can be launch separately */ launchProcess := true log.Printf("TestMain: launchProcess is %v, so launching xds-server", launchProcess) initEnv(launchProcess)