]> Cypherpunks repositories - gostls13.git/commitdiff
testing: add PAUSE, CONT output lines to explain Parallel execution
authorRuss Cox <rsc@golang.org>
Tue, 18 Jul 2017 01:06:05 +0000 (21:06 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 10 Oct 2017 17:44:22 +0000 (17:44 +0000)
This should make parallel execution a bit clearer.
With -p=1 it should make the execution completely unambiguous.

Fixes #19280.

Change-Id: Ib48cdfe96896d01b0d8f98ccb2fab614407a7d92
Reviewed-on: https://go-review.googlesource.com/49430
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/testing/testing.go

index a170cd0fd9a46e222f6288ca80e6eb8ae9120640..4beb9c6c1c878fd15401f93c4efd8d216e96fb85 100644 (file)
@@ -675,9 +675,30 @@ func (t *T) Parallel() {
        t.parent.sub = append(t.parent.sub, t)
        t.raceErrors += race.Errors()
 
+       if t.chatty {
+               // Print directly to root's io.Writer so there is no delay.
+               root := t.parent
+               for ; root.parent != nil; root = root.parent {
+               }
+               root.mu.Lock()
+               fmt.Fprintf(root.w, "=== PAUSE %s\n", t.name)
+               root.mu.Unlock()
+       }
+
        t.signal <- true   // Release calling test.
        <-t.parent.barrier // Wait for the parent test to complete.
        t.context.waitParallel()
+
+       if t.chatty {
+               // Print directly to root's io.Writer so there is no delay.
+               root := t.parent
+               for ; root.parent != nil; root = root.parent {
+               }
+               root.mu.Lock()
+               fmt.Fprintf(root.w, "=== CONT  %s\n", t.name)
+               root.mu.Unlock()
+       }
+
        t.start = time.Now()
        t.raceErrors += -race.Errors()
 }