From a9fc249f5f5c2485847c63fef226067002408ce4 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 15 Jun 2017 19:32:36 +0000 Subject: [PATCH] net/http: add a known goroutine, don't check goroutine leaks in benchmark mode Change-Id: I8aa070f8093e80ba19f0546d7447caf847a2b388 Reviewed-on: https://go-review.googlesource.com/45912 Reviewed-by: Ian Lance Taylor --- src/net/http/main_test.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/net/http/main_test.go b/src/net/http/main_test.go index fc0437e211..230ebaacfb 100644 --- a/src/net/http/main_test.go +++ b/src/net/http/main_test.go @@ -37,6 +37,7 @@ func interestingGoroutines() (gs []string) { } stack := strings.TrimSpace(sl[1]) if stack == "" || + strings.Contains(stack, "os/signal.signal_recv") || strings.Contains(stack, "created by net.startServer") || strings.Contains(stack, "created by testing.RunTests") || strings.Contains(stack, "closeWriteAndWait") || @@ -56,8 +57,9 @@ func interestingGoroutines() (gs []string) { // Verify the other tests didn't leave any goroutines running. func goroutineLeaked() bool { - if testing.Short() { - // not counting goroutines for leakage in -short mode + if testing.Short() || runningBenchmarks() { + // Don't worry about goroutine leaks in -short mode or in + // benchmark mode. Too distracting when there are false positives. return false } @@ -92,6 +94,18 @@ func setParallel(t *testing.T) { } } +func runningBenchmarks() bool { + for i, arg := range os.Args { + if strings.HasPrefix(arg, "-test.bench=") && !strings.HasSuffix(arg, "=") { + return true + } + if arg == "-test.bench" && i < len(os.Args)-1 && os.Args[i+1] != "" { + return true + } + } + return false +} + func afterTest(t testing.TB) { http.DefaultTransport.(*http.Transport).CloseIdleConnections() if testing.Short() {