aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2019-11-15 17:08:23 -0800
committerDmitri Shuralyov <dmitshur@golang.org>2020-06-12 18:58:35 +0000
commit7e87a63ed651af850c859fb9f5b2002e223508da (patch)
tree24adca300489663922fe6e0d45787888ea83db93
parent034ed8089d057349032fb56a3c827ab51789c712 (diff)
downloadgo-7e87a63ed651af850c859fb9f5b2002e223508da.tar.gz
go-7e87a63ed651af850c859fb9f5b2002e223508da.zip
[release-branch.go1.13] net: add more timing slop for TestDialParallel on Windows
For #35616. Fixes #39538. For #29252. Change-Id: I51b2490100cfe0e902da09eee8d027e0ec86ed53 Reviewed-on: https://go-review.googlesource.com/c/go/+/207466 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit c20b71eb37889e7257453be152a994319c76d451) Reviewed-on: https://go-review.googlesource.com/c/go/+/237602 Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Alexander Rakoczy <alex@golang.org>
-rw-r--r--src/net/dial_test.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/net/dial_test.go b/src/net/dial_test.go
index 1bf96fd3ce..42e5d68ded 100644
--- a/src/net/dial_test.go
+++ b/src/net/dial_test.go
@@ -154,7 +154,7 @@ func slowDialTCP(ctx context.Context, network string, laddr, raddr *TCPAddr) (*T
return c, err
}
-func dialClosedPort() (actual, expected time.Duration) {
+func dialClosedPort(t *testing.T) (actual, expected time.Duration) {
// Estimate the expected time for this platform.
// On Windows, dialing a closed port takes roughly 1 second,
// but other platforms should be instantaneous.
@@ -168,6 +168,7 @@ func dialClosedPort() (actual, expected time.Duration) {
l, err := Listen("tcp", "127.0.0.1:0")
if err != nil {
+ t.Logf("dialClosedPort: Listen failed: %v", err)
return 999 * time.Hour, expected
}
addr := l.Addr().String()
@@ -183,6 +184,7 @@ func dialClosedPort() (actual, expected time.Duration) {
}
elapsed := time.Now().Sub(startTime)
if i == 2 {
+ t.Logf("dialClosedPort: measured delay %v", elapsed)
return elapsed, expected
}
}
@@ -195,7 +197,7 @@ func TestDialParallel(t *testing.T) {
t.Skip("both IPv4 and IPv6 are required")
}
- closedPortDelay, expectClosedPortDelay := dialClosedPort()
+ closedPortDelay, expectClosedPortDelay := dialClosedPort(t)
if closedPortDelay > expectClosedPortDelay {
t.Errorf("got %v; want <= %v", closedPortDelay, expectClosedPortDelay)
}
@@ -316,8 +318,14 @@ func TestDialParallel(t *testing.T) {
t.Errorf("#%d: got nil; want non-nil", i)
}
- expectElapsedMin := tt.expectElapsed - 95*time.Millisecond
- expectElapsedMax := tt.expectElapsed + 95*time.Millisecond
+ // We used to always use 95 milliseconds as the slop,
+ // but that was flaky on Windows. See issue 35616.
+ slop := 95 * time.Millisecond
+ if fifth := tt.expectElapsed / 5; fifth > slop {
+ slop = fifth
+ }
+ expectElapsedMin := tt.expectElapsed - slop
+ expectElapsedMax := tt.expectElapsed + slop
if elapsed < expectElapsedMin {
t.Errorf("#%d: got %v; want >= %v", i, elapsed, expectElapsedMin)
} else if elapsed > expectElapsedMax {
@@ -664,7 +672,7 @@ func TestDialerDualStack(t *testing.T) {
t.Skip("both IPv4 and IPv6 are required")
}
- closedPortDelay, expectClosedPortDelay := dialClosedPort()
+ closedPortDelay, expectClosedPortDelay := dialClosedPort(t)
if closedPortDelay > expectClosedPortDelay {
t.Errorf("got %v; want <= %v", closedPortDelay, expectClosedPortDelay)
}