1
0
mirror of https://github.com/golang/go synced 2024-11-23 13:50:06 -07:00

net: deflake TestAcceptTimeout

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>
This commit is contained in:
Mikio Hara 2016-11-16 16:34:02 +09:00 committed by Brad Fitzpatrick
parent d8b14c5243
commit e279280d0d

View 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) {