From 7e87a63ed651af850c859fb9f5b2002e223508da Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 15 Nov 2019 17:08:23 -0800 Subject: [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 TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills Reviewed-by: Brad Fitzpatrick (cherry picked from commit c20b71eb37889e7257453be152a994319c76d451) Reviewed-on: https://go-review.googlesource.com/c/go/+/237602 Run-TryBot: Dmitri Shuralyov Reviewed-by: Alexander Rakoczy --- src/net/dial_test.go | 18 +++++++++++++----- 1 file 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) } -- cgit v1.2.3-54-g00ecf