ソースを参照

tstest/integration: set race flag when cross compiling, conditionally fail on race

Misc cleanups and things noticed while working on #7894 and pulled out
of a separate change. Submitting them on their own to not distract
from later changes.

Updates #7894

Change-Id: Ie9abc8b88f121c559aeeb7e74db2aa532eb84d3d
Co-authored-by: Maisem Ali <[email protected]>
Signed-off-by: Brad Fitzpatrick <[email protected]>
Brad Fitzpatrick 2 年 前
コミット
5c555cdcbb

+ 5 - 1
tstest/integration/integration.go

@@ -117,7 +117,11 @@ func build(outDir string, targets ...string) error {
 		// Fallback slow path for cross-compiled binaries.
 		// Fallback slow path for cross-compiled binaries.
 		for _, target := range targets {
 		for _, target := range targets {
 			outFile := filepath.Join(outDir, path.Base(target)+exe())
 			outFile := filepath.Join(outDir, path.Base(target)+exe())
-			cmd := exec.Command(goBin, "build", "-o", outFile, target)
+			cmd := exec.Command(goBin, "build", "-o", outFile)
+			if version.IsRace() {
+				cmd.Args = append(cmd.Args, "-race")
+			}
+			cmd.Args = append(cmd.Args, target)
 			cmd.Env = append(os.Environ(), "GOARCH="+runtime.GOARCH)
 			cmd.Env = append(os.Environ(), "GOARCH="+runtime.GOARCH)
 			if errOut, err := cmd.CombinedOutput(); err != nil {
 			if errOut, err := cmd.CombinedOutput(); err != nil {
 				return fmt.Errorf("failed to build %v with %v: %v, %s", target, goBin, err, errOut)
 				return fmt.Errorf("failed to build %v with %v: %v, %s", target, goBin, err, errOut)

+ 7 - 0
tstest/integration/integration_test.go

@@ -42,6 +42,7 @@ import (
 	"tailscale.com/types/key"
 	"tailscale.com/types/key"
 	"tailscale.com/types/logger"
 	"tailscale.com/types/logger"
 	"tailscale.com/util/rands"
 	"tailscale.com/util/rands"
+	"tailscale.com/version"
 )
 )
 
 
 var (
 var (
@@ -1065,6 +1066,12 @@ func (n *testNode) StartDaemonAsIPNGOOS(ipnGOOS string) *Daemon {
 		"TS_LOGS_DIR="+t.TempDir(),
 		"TS_LOGS_DIR="+t.TempDir(),
 		"TS_NETCHECK_GENERATE_204_URL="+n.env.ControlServer.URL+"/generate_204",
 		"TS_NETCHECK_GENERATE_204_URL="+n.env.ControlServer.URL+"/generate_204",
 	)
 	)
+	if version.IsRace() {
+		const knownBroken = true // TODO(bradfitz,maisem): enable this once we fix all the races :(
+		if !knownBroken {
+			cmd.Env = append(cmd.Env, "GORACE=halt_on_error=1")
+		}
+	}
 	cmd.Stderr = &nodeOutputParser{n: n}
 	cmd.Stderr = &nodeOutputParser{n: n}
 	if *verboseTailscaled {
 	if *verboseTailscaled {
 		cmd.Stdout = os.Stdout
 		cmd.Stdout = os.Stdout