mirror of
https://github.com/golang/go
synced 2024-11-19 17:04:41 -07:00
testing: check that tests and benchmarks do not affect GOMAXPROCS
Plus fix spoiling of GOMAXPROCS in 2 existing rwmutex tests. Plus fix benchmark output to stdout (now it outputs to stderr like all other output). R=rsc CC=golang-dev https://golang.org/cl/4529111
This commit is contained in:
parent
9baaa6f742
commit
79b397b27e
@ -45,6 +45,7 @@ func doTestParallelReaders(numReaders, gomaxprocs int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestParallelReaders(t *testing.T) {
|
func TestParallelReaders(t *testing.T) {
|
||||||
|
defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(-1))
|
||||||
doTestParallelReaders(1, 4)
|
doTestParallelReaders(1, 4)
|
||||||
doTestParallelReaders(3, 4)
|
doTestParallelReaders(3, 4)
|
||||||
doTestParallelReaders(4, 2)
|
doTestParallelReaders(4, 2)
|
||||||
@ -102,6 +103,7 @@ func HammerRWMutex(gomaxprocs, numReaders, num_iterations int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRWMutex(t *testing.T) {
|
func TestRWMutex(t *testing.T) {
|
||||||
|
defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(-1))
|
||||||
n := 1000
|
n := 1000
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
n = 5
|
n = 5
|
||||||
|
@ -143,7 +143,6 @@ func (b *B) run() BenchmarkResult {
|
|||||||
b.runN(n)
|
b.runN(n)
|
||||||
}
|
}
|
||||||
return BenchmarkResult{b.N, b.ns, b.bytes}
|
return BenchmarkResult{b.N, b.ns, b.bytes}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The results of a benchmark run.
|
// The results of a benchmark run.
|
||||||
@ -183,6 +182,7 @@ func RunBenchmarks(matchString func(pat, str string) (bool, os.Error), benchmark
|
|||||||
if len(*matchBenchmarks) == 0 {
|
if len(*matchBenchmarks) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
procs := runtime.GOMAXPROCS(-1)
|
||||||
for _, Benchmark := range benchmarks {
|
for _, Benchmark := range benchmarks {
|
||||||
matched, err := matchString(*matchBenchmarks, Benchmark.Name)
|
matched, err := matchString(*matchBenchmarks, Benchmark.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -194,7 +194,12 @@ func RunBenchmarks(matchString func(pat, str string) (bool, os.Error), benchmark
|
|||||||
}
|
}
|
||||||
b := &B{benchmark: Benchmark}
|
b := &B{benchmark: Benchmark}
|
||||||
r := b.run()
|
r := b.run()
|
||||||
fmt.Printf("%s\t%v\n", Benchmark.Name, r)
|
print(fmt.Sprintf("%s\t%v\n", Benchmark.Name, r))
|
||||||
|
if p := runtime.GOMAXPROCS(-1); p != procs {
|
||||||
|
print(fmt.Sprintf("%s left GOMAXPROCS set to %d\n", Benchmark.Name, p))
|
||||||
|
procs = p
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,6 +171,7 @@ func RunTests(matchString func(pat, str string) (bool, os.Error), tests []Intern
|
|||||||
if len(tests) == 0 {
|
if len(tests) == 0 {
|
||||||
println("testing: warning: no tests to run")
|
println("testing: warning: no tests to run")
|
||||||
}
|
}
|
||||||
|
procs := runtime.GOMAXPROCS(-1)
|
||||||
for i := 0; i < len(tests); i++ {
|
for i := 0; i < len(tests); i++ {
|
||||||
matched, err := matchString(*match, tests[i].Name)
|
matched, err := matchString(*match, tests[i].Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -190,6 +191,11 @@ func RunTests(matchString func(pat, str string) (bool, os.Error), tests []Intern
|
|||||||
<-t.ch
|
<-t.ch
|
||||||
ns += time.Nanoseconds()
|
ns += time.Nanoseconds()
|
||||||
tstr := fmt.Sprintf("(%.2f seconds)", float64(ns)/1e9)
|
tstr := fmt.Sprintf("(%.2f seconds)", float64(ns)/1e9)
|
||||||
|
if p := runtime.GOMAXPROCS(-1); t.failed == false && p != procs {
|
||||||
|
t.failed = true
|
||||||
|
t.errors = fmt.Sprintf("%s left GOMAXPROCS set to %d\n", tests[i].Name, p)
|
||||||
|
procs = p
|
||||||
|
}
|
||||||
if t.failed {
|
if t.failed {
|
||||||
println("--- FAIL:", tests[i].Name, tstr)
|
println("--- FAIL:", tests[i].Name, tstr)
|
||||||
print(t.errors)
|
print(t.errors)
|
||||||
|
Loading…
Reference in New Issue
Block a user