From 90f91928866a602df045b6c44f58a6f2f741bbf0 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 10 Sep 2013 14:43:21 -0400 Subject: [PATCH] cmd/go: run benchmarks in sequence Fixes #5662. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/13650043 --- src/cmd/go/test.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/cmd/go/test.go b/src/cmd/go/test.go index 2d5557e65e9..3b79e24285b 100644 --- a/src/cmd/go/test.go +++ b/src/cmd/go/test.go @@ -446,16 +446,15 @@ func runTest(cmd *Command, args []string) { } } - // If we are benchmarking, force everything to - // happen in serial. Could instead allow all the - // builds to run before any benchmarks start, - // but try this for now. + // Force benchmarks to run in serial. if testBench { - for i, a := range builds { - if i > 0 { - // Make build of test i depend on - // completing the run of test i-1. - a.deps = append(a.deps, runs[i-1]) + // The first run must wait for all builds. + // Later runs must wait for the previous run's print. + for i, run := range runs { + if i == 0 { + run.deps = append(run.deps, builds...) + } else { + run.deps = append(run.deps, prints[i-1]) } } } @@ -516,8 +515,8 @@ func contains(x []string, s string) bool { func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, err error) { if len(p.TestGoFiles)+len(p.XTestGoFiles) == 0 { build := &action{p: p} - run := &action{p: p} - print := &action{f: (*builder).notest, p: p, deps: []*action{build}} + run := &action{p: p, deps: []*action{build}} + print := &action{f: (*builder).notest, p: p, deps: []*action{run}} return build, run, print, nil }