netutil: fix test to not t.Fatal from goroutine
Change-Id: I07941ecadf7d7268542d13b402436b6111772d02
GitHub-Last-Rev: aece213e5011c6f1d6bbb10f8923adf25fdea2a0
GitHub-Pull-Request: golang/net#57
Reviewed-on: https://go-review.googlesource.com/c/net/+/203877
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/netutil/listen_test.go b/netutil/listen_test.go
index e00433d..e77e6f4 100644
--- a/netutil/listen_test.go
+++ b/netutil/listen_test.go
@@ -18,6 +18,7 @@
)
const defaultMaxOpenFiles = 256
+const timeout = 5 * time.Second
func TestLimitListener(t *testing.T) {
const max = 5
@@ -95,7 +96,7 @@
}()
select {
case <-donec:
- case <-time.After(5 * time.Second):
+ case <-time.After(timeout):
t.Fatal("timeout. deadlock?")
}
}
@@ -108,15 +109,15 @@
defer ln.Close()
ln = LimitListener(ln, 1)
- doneCh := make(chan struct{})
- defer close(doneCh)
+ errCh := make(chan error)
go func() {
- c, err := net.Dial("tcp", ln.Addr().String())
+ defer close(errCh)
+ c, err := net.DialTimeout("tcp", ln.Addr().String(), timeout)
if err != nil {
- t.Fatal(err)
+ errCh <- err
+ return
}
- defer c.Close()
- <-doneCh
+ c.Close()
}()
c, err := ln.Accept()
@@ -125,6 +126,11 @@
}
defer c.Close()
+ err = <-errCh
+ if err != nil {
+ t.Fatalf("DialTimeout: %v", err)
+ }
+
acceptDone := make(chan struct{})
go func() {
c, err := ln.Accept()
@@ -141,7 +147,7 @@
select {
case <-acceptDone:
- case <-time.After(5 * time.Second):
+ case <-time.After(timeout):
t.Fatalf("Accept() still blocking")
}
}