+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
package arvadostest
import (
"bufio"
"bytes"
+ "fmt"
+ "io/ioutil"
"log"
"os"
"os/exec"
+ "path"
"strconv"
"strings"
)
var authSettings = make(map[string]string)
+// ResetEnv resets test env
func ResetEnv() {
for k, v := range authSettings {
os.Setenv(k, v)
}
}
+// APIHost returns the address:port of the current test server.
+func APIHost() string {
+ h := authSettings["ARVADOS_API_HOST"]
+ if h == "" {
+ log.Fatal("arvadostest.APIHost() was called but authSettings is not populated")
+ }
+ return h
+}
+
+// ParseAuthSettings parses auth settings from given input
func ParseAuthSettings(authScript []byte) {
scanner := bufio.NewScanner(bytes.NewReader(authScript))
for scanner.Scan() {
log.Printf("authSettings: %v", authSettings)
}
-var pythonTestDir string = ""
+var pythonTestDir string
func chdirToPythonTests() {
if pythonTestDir != "" {
for {
if err := os.Chdir("sdk/python/tests"); err == nil {
pythonTestDir, err = os.Getwd()
+ if err != nil {
+ log.Fatal(err)
+ }
return
}
if parent, err := os.Getwd(); err != nil || parent == "/" {
}
}
+// StartAPI starts test API server
func StartAPI() {
cwd, _ := os.Getwd()
defer os.Chdir(cwd)
ResetEnv()
}
+// StopAPI stops test API server
func StopAPI() {
cwd, _ := os.Getwd()
defer os.Chdir(cwd)
chdirToPythonTests()
- bgRun(exec.Command("python", "run_test_server.py", "stop"))
+ cmd := exec.Command("python", "run_test_server.py", "stop")
+ bgRun(cmd)
+ // Without Wait, "go test" in go1.10.1 tends to hang. https://github.com/golang/go/issues/24050
+ cmd.Wait()
}
// StartKeep starts the given number of keep servers,
chdirToPythonTests()
cmd := exec.Command("python", "run_test_server.py", "stop_keep", "--num-keep-servers", strconv.Itoa(numKeepServers))
- cmd.Stdin = nil
- cmd.Stderr = os.Stderr
- cmd.Stdout = os.Stderr
- if err := cmd.Run(); err != nil {
- log.Fatalf("%+v: %s", cmd.Args, err)
- }
+ bgRun(cmd)
+ // Without Wait, "go test" in go1.10.1 tends to hang. https://github.com/golang/go/issues/24050
+ cmd.Wait()
}
// Start cmd, with stderr and stdout redirected to our own
log.Fatalf("%+v: %s", cmd.Args, err)
}
}
+
+// CreateBadPath creates a tmp dir, appends given string and returns that path
+// This will guarantee that the path being returned does not exist
+func CreateBadPath() (badpath string, err error) {
+ tempdir, err := ioutil.TempDir("", "bad")
+ if err != nil {
+ return "", fmt.Errorf("Could not create temporary directory for bad path: %v", err)
+ }
+ badpath = path.Join(tempdir, "bad")
+ return badpath, nil
+}
+
+// DestroyBadPath deletes the tmp dir created by the previous CreateBadPath call
+func DestroyBadPath(badpath string) error {
+ tempdir := path.Join(badpath, "..")
+ err := os.Remove(tempdir)
+ if err != nil {
+ return fmt.Errorf("Could not remove bad path temporary directory %v: %v", tempdir, err)
+ }
+ return nil
+}