diff options
author | Russ Cox <rsc@golang.org> | 2017-02-17 15:27:12 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2017-02-24 20:46:37 +0000 |
commit | 8c24e52247365725c97b1ed5bea63a84642fd0f7 (patch) | |
tree | d58f37549cd3f1703f9de93c04af2ae300d4c48b /src/runtime/crash_cgo_test.go | |
parent | 0b8c983ece56b63c433a65fd3de6a411cb2aac87 (diff) | |
download | go-8c24e52247365725c97b1ed5bea63a84642fd0f7.tar.gz go-8c24e52247365725c97b1ed5bea63a84642fd0f7.zip |
runtime: check that pprof accepts but doesn't need executable
The profiles are self-contained now.
Check that they work by themselves in the tests that invoke pprof,
but also keep checking that the old command lines work.
Change-Id: I24c74b5456f0b50473883c3640625c6612f72309
Reviewed-on: https://go-review.googlesource.com/37166
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Diffstat (limited to 'src/runtime/crash_cgo_test.go')
-rw-r--r-- | src/runtime/crash_cgo_test.go | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/src/runtime/crash_cgo_test.go b/src/runtime/crash_cgo_test.go index 347b820eb5..2c3fe39f2c 100644 --- a/src/runtime/crash_cgo_test.go +++ b/src/runtime/crash_cgo_test.go @@ -287,28 +287,34 @@ func testCgoPprof(t *testing.T, buildArg, runArg string) { fn := strings.TrimSpace(string(got)) defer os.Remove(fn) - cmd := testEnv(exec.Command(testenv.GoToolPath(t), "tool", "pprof", "-top", "-nodecount=1", exe, fn)) - - found := false - for i, e := range cmd.Env { - if strings.HasPrefix(e, "PPROF_TMPDIR=") { - cmd.Env[i] = "PPROF_TMPDIR=" + os.TempDir() - found = true - break + for try := 0; try < 2; try++ { + cmd := testEnv(exec.Command(testenv.GoToolPath(t), "tool", "pprof", "-top", "-nodecount=1")) + // Check that pprof works both with and without explicit executable on command line. + if try == 0 { + cmd.Args = append(cmd.Args, exe, fn) + } else { + cmd.Args = append(cmd.Args, fn) } - } - if !found { - cmd.Env = append(cmd.Env, "PPROF_TMPDIR="+os.TempDir()) - } - top, err := cmd.CombinedOutput() - t.Logf("%s", top) - if err != nil { - t.Fatal(err) - } + found := false + for i, e := range cmd.Env { + if strings.HasPrefix(e, "PPROF_TMPDIR=") { + cmd.Env[i] = "PPROF_TMPDIR=" + os.TempDir() + found = true + break + } + } + if !found { + cmd.Env = append(cmd.Env, "PPROF_TMPDIR="+os.TempDir()) + } - if !bytes.Contains(top, []byte("cpuHog")) { - t.Error("missing cpuHog in pprof output") + top, err := cmd.CombinedOutput() + t.Logf("%s:\n%s", cmd.Args, top) + if err != nil { + t.Error(err) + } else if !bytes.Contains(top, []byte("cpuHog")) { + t.Error("missing cpuHog in pprof output") + } } } |