diff --git a/build.go b/build.go index 1450519c5..ace772256 100644 --- a/build.go +++ b/build.go @@ -46,6 +46,8 @@ var ( installSuffix string pkgdir string cc string + run string + benchRun string debugBinary bool coverage bool timeout = "120s" @@ -301,6 +303,12 @@ func runCommand(cmd string, target target) { case "bench": bench("github.com/syncthing/syncthing/lib/...", "github.com/syncthing/syncthing/cmd/...") + case "integration": + integration(false) + + case "integrationbench": + integration(true) + case "assets": rebuildAssets() @@ -367,6 +375,8 @@ func parseFlags() { flag.BoolVar(&debugBinary, "debug-binary", debugBinary, "Create unoptimized binary to use with delve, set -gcflags='-N -l' and omit -ldflags") flag.BoolVar(&coverage, "coverage", coverage, "Write coverage profile of tests to coverage.txt") flag.IntVar(&numVersions, "num-versions", numVersions, "Number of versions for changelog command") + flag.StringVar(&run, "run", "", "Specify which tests to run") + flag.StringVar(&benchRun, "bench", "", "Specify which benchmarks to run") flag.Parse() } @@ -386,12 +396,49 @@ func test(pkgs ...string) { args = append(args, "-covermode", "atomic", "-coverprofile", "coverage.txt", "-coverpkg", strings.Join(pkgs, ",")) } + args = append(args, runArgs()...) + runPrint(goCmd, append(args, pkgs...)...) } func bench(pkgs ...string) { lazyRebuildAssets() - runPrint(goCmd, append([]string{"test", "-run", "NONE", "-bench", "."}, pkgs...)...) + args := append([]string{"test", "-run", "NONE"}, benchArgs()...) + runPrint(goCmd, append(args, pkgs...)...) +} + +func integration(bench bool) { + lazyRebuildAssets() + args := []string{"test", "-v", "-timeout", "60m", "-tags"} + tags := "purego,integration" + if bench { + tags += ",benchmark" + } + args = append(args, tags) + args = append(args, runArgs()...) + if bench { + if run == "" { + args = append(args, "-run", "Benchmark") + } + args = append(args, benchArgs()...) + } + args = append(args, "./test") + fmt.Println(args) + runPrint(goCmd, args...) +} + +func runArgs() []string { + if run == "" { + return nil + } + return []string{"-run", run} +} + +func benchArgs() []string { + if benchRun == "" { + return []string{"-bench", "."} + } + return []string{"-bench", benchRun} } func install(target target, tags []string) { diff --git a/test/h1/config.xml b/test/h1/config.xml index 3875c1697..94ec05b6e 100644 --- a/test/h1/config.xml +++ b/test/h1/config.xml @@ -1,4 +1,4 @@ - + basic @@ -22,6 +22,9 @@ .stfolder false 0 + 0 + false + standard basic @@ -44,6 +47,9 @@ .stfolder false 0 + 0 + false + standard
tcp://127.0.0.1:22004
@@ -130,11 +136,13 @@ 0 ~ true - 0 + 0 https://crash.syncthing.net/newcrash true 180 20 default + auto + 0
diff --git a/test/h2/config.xml b/test/h2/config.xml index afa1821bb..cefafaea9 100644 --- a/test/h2/config.xml +++ b/test/h2/config.xml @@ -21,6 +21,9 @@ .stfolder false 0 + 0 + false + standard basic @@ -43,6 +46,9 @@ .stfolder false 0 + 0 + false + standard basic @@ -65,6 +71,9 @@ .stfolder false 0 + 0 + false + standard
tcp://127.0.0.1:22001
@@ -134,11 +143,13 @@ 0 ~ true - 0 + 0 https://crash.syncthing.net/newcrash true 180 20 default + auto + 0
diff --git a/test/h3/config.xml b/test/h3/config.xml index 7d2acfe46..8c711d94e 100644 --- a/test/h3/config.xml +++ b/test/h3/config.xml @@ -1,4 +1,4 @@ - + basic @@ -23,6 +23,9 @@ .stfolder false 0 + 0 + false + standard basic @@ -45,6 +48,9 @@ .stfolder false 0 + 0 + false + standard
tcp://127.0.0.1:22001
@@ -114,11 +120,13 @@ 0 ~ true - 0 + 0 https://crash.syncthing.net/newcrash true 180 20 default + auto + 0
diff --git a/test/usage_windows.go b/test/usage_windows.go index 728a387f9..52e24baac 100644 --- a/test/usage_windows.go +++ b/test/usage_windows.go @@ -23,7 +23,7 @@ func ftToDuration(ft *syscall.Filetime) time.Duration { func printUsage(name string, proc *os.ProcessState, total int64) { if rusage, ok := proc.SysUsage().(*syscall.Rusage); ok { mib := total / 1024 / 1024 - log.Printf("%s: Utime: %s / MiB", name, time.Duration(&rusage.UserTime/mib)) - log.Printf("%s: Stime: %s / MiB", name, time.Duration(&rusage.KernelTime/mib)) + log.Printf("%s: Utime: %s / MiB", name, time.Duration(rusage.UserTime.Nanoseconds()/mib)) + log.Printf("%s: Stime: %s / MiB", name, time.Duration(rusage.KernelTime.Nanoseconds()/mib)) } }