]> Cypherpunks repositories - gostls13.git/commitdiff
net: deflake TestAcceptTimeout
authorMikio Hara <mikioh.mikioh@gmail.com>
Wed, 16 Nov 2016 07:34:02 +0000 (16:34 +0900)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 16 Nov 2016 19:51:55 +0000 (19:51 +0000)
This change makes use of synchronization primitive instead of
context-based canceling not to depend on defer execution scheduling.

Fixes #17927.

Change-Id: I5ca9287a48bb5cdda6845a7f12757f95175c5db8
Reviewed-on: https://go-review.googlesource.com/33257
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/timeout_test.go

index 56baa98fce9755c93e4438efd454a339ecf1b5e9..f46b30a0908eaf4fbac302d9b471054675365347 100644 (file)
@@ -5,7 +5,6 @@
 package net
 
 import (
-       "context"
        "fmt"
        "internal/testenv"
        "io"
@@ -165,13 +164,14 @@ func TestAcceptTimeout(t *testing.T) {
        }
        defer ln.Close()
 
-       ctx, cancel := context.WithCancel(context.Background())
-       defer cancel()
+       var wg sync.WaitGroup
        for i, tt := range acceptTimeoutTests {
                if tt.timeout < 0 {
+                       wg.Add(1)
                        go func() {
-                               var d Dialer
-                               c, err := d.DialContext(ctx, ln.Addr().Network(), ln.Addr().String())
+                               defer wg.Done()
+                               d := Dialer{Timeout: 100 * time.Millisecond}
+                               c, err := d.Dial(ln.Addr().Network(), ln.Addr().String())
                                if err != nil {
                                        t.Error(err)
                                        return
@@ -198,13 +198,14 @@ func TestAcceptTimeout(t *testing.T) {
                                }
                                if err == nil {
                                        c.Close()
-                                       time.Sleep(tt.timeout / 3)
+                                       time.Sleep(10 * time.Millisecond)
                                        continue
                                }
                                break
                        }
                }
        }
+       wg.Wait()
 }
 
 func TestAcceptTimeoutMustReturn(t *testing.T) {