]> Cypherpunks repositories - gostls13.git/commitdiff
test: make goprint.go wait for goroutine termination
authorRichard Miller <miller.research@gmail.com>
Wed, 6 Apr 2016 17:42:14 +0000 (18:42 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 6 Apr 2016 18:45:00 +0000 (18:45 +0000)
Test goprint.go sometimes failed on a slow builder (plan9_arm)
because of timing dependency.  Instead of sleeping for a fixed
time to allow the child goroutine to finish, wait explicitly for
child termination by calling runtime.NumGoroutine until the
returned value is 1.

Fixes #15097

Change-Id: Ib3ef5ec3c8277083c774542f48bcd4ff2f79efde
Reviewed-on: https://go-review.googlesource.com/21603
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>

test/goprint.go

index cdaccf4f796144aa1099539042edc80301eb3eae..7cf6230fc6c43ecdd02cd6d24478c7ea37af8fae 100644 (file)
@@ -8,9 +8,14 @@
 
 package main
 
-import "time"
+import (
+       "runtime"
+       "time"
+)
 
 func main() {
        go println(42, true, false, true, 1.5, "world", (chan int)(nil), []int(nil), (map[string]int)(nil), (func())(nil), byte(255))
-       time.Sleep(100*time.Millisecond)
+       for runtime.NumGoroutine() > 1 {
+               time.Sleep(10*time.Millisecond)
+       }
 }