Skip to content

Commit c20b71e

Browse files
net: add more timing slop for TestDialParallel on Windows
Fixes #35616 Change-Id: I51b2490100cfe0e902da09eee8d027e0ec86ed53 Reviewed-on: https://go-review.googlesource.com/c/go/+/207466 Run-TryBot: Ian Lance Taylor <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 5042317 commit c20b71e

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/net/dial_test.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func slowDialTCP(ctx context.Context, network string, laddr, raddr *TCPAddr) (*T
155155
return c, err
156156
}
157157

158-
func dialClosedPort() (actual, expected time.Duration) {
158+
func dialClosedPort(t *testing.T) (actual, expected time.Duration) {
159159
// Estimate the expected time for this platform.
160160
// On Windows, dialing a closed port takes roughly 1 second,
161161
// but other platforms should be instantaneous.
@@ -169,6 +169,7 @@ func dialClosedPort() (actual, expected time.Duration) {
169169

170170
l, err := Listen("tcp", "127.0.0.1:0")
171171
if err != nil {
172+
t.Logf("dialClosedPort: Listen failed: %v", err)
172173
return 999 * time.Hour, expected
173174
}
174175
addr := l.Addr().String()
@@ -184,6 +185,7 @@ func dialClosedPort() (actual, expected time.Duration) {
184185
}
185186
elapsed := time.Now().Sub(startTime)
186187
if i == 2 {
188+
t.Logf("dialClosedPort: measured delay %v", elapsed)
187189
return elapsed, expected
188190
}
189191
}
@@ -196,7 +198,7 @@ func TestDialParallel(t *testing.T) {
196198
t.Skip("both IPv4 and IPv6 are required")
197199
}
198200

199-
closedPortDelay, expectClosedPortDelay := dialClosedPort()
201+
closedPortDelay, expectClosedPortDelay := dialClosedPort(t)
200202
if closedPortDelay > expectClosedPortDelay {
201203
t.Errorf("got %v; want <= %v", closedPortDelay, expectClosedPortDelay)
202204
}
@@ -317,8 +319,14 @@ func TestDialParallel(t *testing.T) {
317319
t.Errorf("#%d: got nil; want non-nil", i)
318320
}
319321

320-
expectElapsedMin := tt.expectElapsed - 95*time.Millisecond
321-
expectElapsedMax := tt.expectElapsed + 95*time.Millisecond
322+
// We used to always use 95 milliseconds as the slop,
323+
// but that was flaky on Windows. See issue 35616.
324+
slop := 95 * time.Millisecond
325+
if fifth := tt.expectElapsed / 5; fifth > slop {
326+
slop = fifth
327+
}
328+
expectElapsedMin := tt.expectElapsed - slop
329+
expectElapsedMax := tt.expectElapsed + slop
322330
if elapsed < expectElapsedMin {
323331
t.Errorf("#%d: got %v; want >= %v", i, elapsed, expectElapsedMin)
324332
} else if elapsed > expectElapsedMax {
@@ -667,7 +675,7 @@ func TestDialerDualStack(t *testing.T) {
667675
t.Skip("both IPv4 and IPv6 are required")
668676
}
669677

670-
closedPortDelay, expectClosedPortDelay := dialClosedPort()
678+
closedPortDelay, expectClosedPortDelay := dialClosedPort(t)
671679
if closedPortDelay > expectClosedPortDelay {
672680
t.Errorf("got %v; want <= %v", closedPortDelay, expectClosedPortDelay)
673681
}

0 commit comments

Comments
 (0)