summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/pprof/pprof_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/pprof/pprof_test.go')
-rw-r--r--src/pkg/runtime/pprof/pprof_test.go77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/pkg/runtime/pprof/pprof_test.go b/src/pkg/runtime/pprof/pprof_test.go
deleted file mode 100644
index 4486d5525..000000000
--- a/src/pkg/runtime/pprof/pprof_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package pprof_test
-
-import (
- "bytes"
- "hash/crc32"
- "runtime"
- . "runtime/pprof"
- "strings"
- "testing"
- "unsafe"
-)
-
-func TestCPUProfile(t *testing.T) {
- switch runtime.GOOS {
- case "darwin":
- // see Apple Bug Report #9177434 (copied into change description)
- return
- case "plan9":
- // unimplemented
- return
- case "windows":
- // unimplemented
- return
- }
-
- buf := make([]byte, 100000)
- var prof bytes.Buffer
- if err := StartCPUProfile(&prof); err != nil {
- t.Fatal(err)
- }
- // This loop takes about a quarter second on a 2 GHz laptop.
- // We only need to get one 100 Hz clock tick, so we've got
- // a 25x safety buffer.
- for i := 0; i < 1000; i++ {
- crc32.ChecksumIEEE(buf)
- }
- StopCPUProfile()
-
- // Convert []byte to []uintptr.
- bytes := prof.Bytes()
- val := *(*[]uintptr)(unsafe.Pointer(&bytes))
- val = val[:len(bytes)/int(unsafe.Sizeof(uintptr(0)))]
-
- if len(val) < 10 {
- t.Fatalf("profile too short: %#x", val)
- }
- if val[0] != 0 || val[1] != 3 || val[2] != 0 || val[3] != 1e6/100 || val[4] != 0 {
- t.Fatalf("unexpected header %#x", val[:5])
- }
-
- // Check that profile is well formed and contains ChecksumIEEE.
- found := false
- val = val[5:]
- for len(val) > 0 {
- if len(val) < 2 || val[0] < 1 || val[1] < 1 || uintptr(len(val)) < 2+val[1] {
- t.Fatalf("malformed profile. leftover: %#x", val)
- }
- for _, pc := range val[2 : 2+val[1]] {
- f := runtime.FuncForPC(pc)
- if f == nil {
- continue
- }
- if strings.Contains(f.Name(), "ChecksumIEEE") {
- found = true
- }
- }
- val = val[2+val[1]:]
- }
-
- if !found {
- t.Fatal("did not find ChecksumIEEE in the profile")
- }
-}