aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/pprof
diff options
context:
space:
mode:
authorHyang-Ah Hana Kim <hyangah@gmail.com>2015-03-26 20:02:50 -0400
committerHyang-Ah Hana Kim <hyangah@gmail.com>2015-03-27 18:07:06 +0000
commit39bc78845bba57db02a88b52a47fcd8dba109c3d (patch)
tree9dfbccb1a7647d518987197d5f5bc821c0013b25 /src/runtime/pprof
parentdde5b56c91e9fc40a61f2f84684c2f7a8f3088c6 (diff)
downloadgo-39bc78845bba57db02a88b52a47fcd8dba109c3d.tar.xz
runtime/pprof: fix TestCPUProfileWithFork for GOOS=android.
1) Large allocation in this test caused crash. This was not detected by builder because builder runs tests with -test.short. 2) The command "go" for forking doesn't exist in some platforms including android. This change uses the test binary itself which is guaranteed to exist. This change also adds logging of the total samples collected in TestCPUProfileMultithreaded test that is flaky in android-arm builder. Change-Id: I225c6b7877d811edef8b25e7eb00559450640c42 Reviewed-on: https://go-review.googlesource.com/8131 Reviewed-by: David Crawshaw <crawshaw@golang.org> Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime/pprof')
-rw-r--r--src/runtime/pprof/pprof_test.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go
index eeb6d109dd..65d0a0aa8e 100644
--- a/src/runtime/pprof/pprof_test.go
+++ b/src/runtime/pprof/pprof_test.go
@@ -143,7 +143,9 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
// Check that profile is well formed and contains need.
have := make([]uintptr, len(need))
+ var samples uintptr
parseProfile(t, prof.Bytes(), func(count uintptr, stk []uintptr) {
+ samples += count
for _, pc := range stk {
f := runtime.FuncForPC(pc)
if f == nil {
@@ -156,6 +158,7 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
}
}
})
+ t.Logf("total %d CPU profile samples collected", samples)
if len(need) == 0 {
return
@@ -200,6 +203,8 @@ func testCPUProfile(t *testing.T, need []string, f func()) {
}
}
+// Fork can hang if preempted with signals frequently enough (see issue 5517).
+// Ensure that we do not do this.
func TestCPUProfileWithFork(t *testing.T) {
if runtime.GOOS == "darwin" {
if runtime.GOARCH == "arm" {
@@ -207,9 +212,11 @@ func TestCPUProfileWithFork(t *testing.T) {
}
}
- // Fork can hang if preempted with signals frequently enough (see issue 5517).
- // Ensure that we do not do this.
heap := 1 << 30
+ if runtime.GOOS == "android" {
+ // Use smaller size for Android to avoid crash.
+ heap = 100 << 20
+ }
if testing.Short() {
heap = 100 << 20
}
@@ -232,7 +239,7 @@ func TestCPUProfileWithFork(t *testing.T) {
defer StopCPUProfile()
for i := 0; i < 10; i++ {
- exec.Command("go").CombinedOutput()
+ exec.Command(os.Args[0], "-h").CombinedOutput()
}
}