Browse Source

Improvements to integration tests

Audrius Butkevicius 10 years ago
parent
commit
25c664b13a
4 changed files with 24 additions and 1 deletions
  1. 3 0
      build.sh
  2. 1 0
      test/logs/.gitignore
  3. 1 1
      test/syncthingprocess.go
  4. 19 0
      test/util.go

+ 3 - 0
build.sh

@@ -3,6 +3,7 @@ set -euo pipefail
 IFS=$'\n\t'
 
 DOCKERIMGV=1.4.1-1
+STTRACE=${STTRACE:-}
 
 case "${1:-default}" in
 	default)
@@ -110,6 +111,7 @@ case "${1:-default}" in
 		docker run --rm -h syncthing-builder -u $(id -u) -t \
 			-v $(pwd):/go/src/github.com/syncthing/syncthing \
 			-w /go/src/github.com/syncthing/syncthing \
+			-e "STTRACE=$STTRACE" \
 			syncthing/build:$DOCKERIMGV \
 			sh -c './build.sh clean \
 				&& go vet ./cmd/... ./internal/... \
@@ -122,6 +124,7 @@ case "${1:-default}" in
 		docker run --rm -h syncthing-builder -u $(id -u) -t \
 			-v $(pwd):/go/src/github.com/syncthing/syncthing \
 			-w /go/src/github.com/syncthing/syncthing \
+			-e "STTRACE=$STTRACE" \
 			syncthing/build:$DOCKERIMGV \
 			sh -euxc './build.sh clean \
 				&& go run build.go -race \

+ 1 - 0
test/logs/.gitignore

@@ -0,0 +1 @@
+*.out

+ 1 - 1
test/syncthingprocess.go

@@ -50,7 +50,7 @@ type syncthingProcess struct {
 
 func (p *syncthingProcess) start() error {
 	if p.logfd == nil {
-		logfd, err := os.Create(p.instance + ".out")
+		logfd, err := os.Create("logs/" + getTestName() + "-" + p.instance + ".out")
 		if err != nil {
 			return err
 		}

+ 19 - 0
test/util.go

@@ -27,6 +27,7 @@ import (
 	"math/rand"
 	"os"
 	"path/filepath"
+	"runtime"
 	"sort"
 	"strings"
 	"time"
@@ -441,3 +442,21 @@ func isTimeout(err error) bool {
 	return strings.Contains(err.Error(), "use of closed network connection") ||
 		strings.Contains(err.Error(), "request cancelled while waiting")
 }
+
+func getTestName() string {
+	callers := make([]uintptr, 100)
+	runtime.Callers(1, callers)
+	for i, caller := range callers {
+		f := runtime.FuncForPC(caller)
+		if f != nil {
+			if f.Name() == "testing.tRunner" {
+				testf := runtime.FuncForPC(callers[i-1])
+				if testf != nil {
+					path := strings.Split(testf.Name(), ".")
+					return path[len(path)-1]
+				}
+			}
+		}
+	}
+	return time.Now().String()
+}