|  | // Copyright 2023 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" | 
|  | "compress/gzip" | 
|  | "io" | 
|  | "log" | 
|  | "os" | 
|  | "testing" | 
|  | "time" | 
|  |  | 
|  | "golang.org/x/tools/internal/pprof" | 
|  | ) | 
|  |  | 
|  | func TestTotalTime(t *testing.T) { | 
|  | // $ go tool pprof testdata/sample.pprof <&- 2>&1 | grep Total | 
|  | // Duration: 11.10s, Total samples = 27.59s (248.65%) | 
|  | const ( | 
|  | filename = "testdata/sample.pprof" | 
|  | want     = time.Duration(27590003550) | 
|  | ) | 
|  |  | 
|  | profGz, err := os.ReadFile(filename) | 
|  | if err != nil { | 
|  | t.Fatal(err) | 
|  | } | 
|  | rd, err := gzip.NewReader(bytes.NewReader(profGz)) | 
|  | if err != nil { | 
|  | t.Fatal(err) | 
|  | } | 
|  | payload, err := io.ReadAll(rd) | 
|  | if err != nil { | 
|  | t.Fatal(err) | 
|  | } | 
|  | got, err := pprof.TotalTime(payload) | 
|  | if err != nil { | 
|  | log.Fatal(err) | 
|  | } | 
|  | if got != want { | 
|  | t.Fatalf("TotalTime(%q): got %v (%d), want %v (%d)", filename, got, got, want, want) | 
|  | } | 
|  | } |