mirror of
https://github.com/golang/go
synced 2024-11-11 21:20:21 -07:00
testing: add tracing support
testing part of tracing functionality: https://docs.google.com/document/u/1/d/1FP5apqzBgr7ahCCgFO-yoVhk4YZrNIDNf9RybngBc14/pub Full change: https://codereview.appspot.com/146920043 Change-Id: Ia3c2c4417106937d5775b0e7064db92c1fc36679 Reviewed-on: https://go-review.googlesource.com/1461 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
986a1d2d1c
commit
20004ba889
@ -175,6 +175,7 @@ var (
|
|||||||
cpuProfile = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution")
|
cpuProfile = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution")
|
||||||
blockProfile = flag.String("test.blockprofile", "", "write a goroutine blocking profile to the named file after execution")
|
blockProfile = flag.String("test.blockprofile", "", "write a goroutine blocking profile to the named file after execution")
|
||||||
blockProfileRate = flag.Int("test.blockprofilerate", 1, "if >= 0, calls runtime.SetBlockProfileRate()")
|
blockProfileRate = flag.Int("test.blockprofilerate", 1, "if >= 0, calls runtime.SetBlockProfileRate()")
|
||||||
|
trace = flag.String("test.trace", "", "write an execution trace to the named file after execution")
|
||||||
timeout = flag.Duration("test.timeout", 0, "if positive, sets an aggregate time limit for all tests")
|
timeout = flag.Duration("test.timeout", 0, "if positive, sets an aggregate time limit for all tests")
|
||||||
cpuListStr = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test")
|
cpuListStr = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test")
|
||||||
parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism")
|
parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism")
|
||||||
@ -600,6 +601,19 @@ func before() {
|
|||||||
}
|
}
|
||||||
// Could save f so after can call f.Close; not worth the effort.
|
// Could save f so after can call f.Close; not worth the effort.
|
||||||
}
|
}
|
||||||
|
if *trace != "" {
|
||||||
|
f, err := os.Create(toOutputDir(*trace))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "testing: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := pprof.StartTrace(f); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "testing: can't start tracing: %s", err)
|
||||||
|
f.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Could save f so after can call f.Close; not worth the effort.
|
||||||
|
}
|
||||||
if *blockProfile != "" && *blockProfileRate >= 0 {
|
if *blockProfile != "" && *blockProfileRate >= 0 {
|
||||||
runtime.SetBlockProfileRate(*blockProfileRate)
|
runtime.SetBlockProfileRate(*blockProfileRate)
|
||||||
}
|
}
|
||||||
@ -614,6 +628,9 @@ func after() {
|
|||||||
if *cpuProfile != "" {
|
if *cpuProfile != "" {
|
||||||
pprof.StopCPUProfile() // flushes profile to disk
|
pprof.StopCPUProfile() // flushes profile to disk
|
||||||
}
|
}
|
||||||
|
if *trace != "" {
|
||||||
|
pprof.StopTrace() // flushes trace to disk
|
||||||
|
}
|
||||||
if *memProfile != "" {
|
if *memProfile != "" {
|
||||||
f, err := os.Create(toOutputDir(*memProfile))
|
f, err := os.Create(toOutputDir(*memProfile))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user