]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/pprof: adjust test
authorRuss Cox <rsc@golang.org>
Tue, 6 Aug 2013 18:49:55 +0000 (14:49 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 6 Aug 2013 18:49:55 +0000 (14:49 -0400)
NetBSD and OpenBSD are broken like OS X is. Good to know.

Drop required count from avg/2 to avg/3, because the
Plan 9 builder just barely missed avg/2 in one of its runs.

R=golang-dev, dvyukov
CC=golang-dev
https://golang.org/cl/12548043

src/pkg/runtime/pprof/pprof.go
src/pkg/runtime/pprof/pprof_test.go

index 5c1f3d460dbb8a0e90211dba58e028b91f8c9ccd..e7eb66a5576d73cc73fdd86fcc69b52caf97feb1 100644 (file)
@@ -20,7 +20,8 @@ import (
        "text/tabwriter"
 )
 
-// BUG(rsc): Profiles are incomplete and inaccuate on OS X. See http://golang.org/issue/6047 for details.
+// BUG(rsc): Profiles are incomplete and inaccuate on NetBSD, OpenBSD, and OS X.
+// See http://golang.org/issue/6047 for details.
 
 // A Profile is a collection of stack traces showing the call sequences
 // that led to instances of a particular event, such as allocation.
index 995c2fe68d016b11390626bf6204cb393e580691..040d77a4346c8d803dbfae073100ed43a2117b00 100644 (file)
@@ -78,11 +78,12 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
        val = val[:l]
 
        if l < 13 {
-               if runtime.GOOS == "darwin" {
-                       t.Logf("ignoring failure on OS X; see golang.org/issue/6047")
+               t.Logf("profile too short: %#x", val)
+               if badOS[runtime.GOOS] {
+                       t.Skipf("ignoring failure on %s; see golang.org/issue/6047", runtime.GOOS)
                        return
                }
-               t.Fatalf("profile too short: %#x", val)
+               t.FailNow()
        }
 
        hd, val, tl := val[:5], val[5:l-3], val[l-3:]
@@ -124,7 +125,7 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
                t.Logf("no CPU profile samples collected")
                ok = false
        }
-       min := total / uintptr(len(have)) / 2
+       min := total / uintptr(len(have)) / 3
        for i, name := range need {
                if have[i] < min {
                        t.Logf("%s has %d samples out of %d, want at least %d, ideally %d", name, have[i], total, min, total/uintptr(len(have)))
@@ -133,10 +134,17 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
        }
 
        if !ok {
-               if runtime.GOOS == "darwin" {
-                       t.Logf("ignoring failure on OS X; see golang.org/issue/6047")
+               if badOS[runtime.GOOS] {
+                       t.Skipf("ignoring failure on %s; see golang.org/issue/6047", runtime.GOOS)
                        return
                }
                t.FailNow()
        }
 }
+
+// Operating systems that are expected to fail the tests. See issue 6047.
+var badOS = map[string]bool{
+       "darwin":  true,
+       "netbsd":  true,
+       "openbsd": true,
+}