From f4ff0e25054d1159396cc1d9252f1e94021ce46c Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 11 Dec 2023 16:14:24 -0500 Subject: [PATCH] net: remove an arbitrary timeout in TestAcceptTimeoutMustReturn This probably fixes the failure mode seen in https://build.golang.org/log/e73acfd930cbe82302505cac0041d9883e2360c5. If not, allowing the test to deadlock and dump goroutines should produce better debugging information than the existing "didn't return in an expected time" failure message. For #58901. Change-Id: Ie0bb1887a4329d2f6b0e7348a4820af71385494e Reviewed-on: https://go-review.googlesource.com/c/go/+/548881 Auto-Submit: Bryan Mills LUCI-TryBot-Result: Go LUCI Reviewed-by: Damien Neil --- src/net/timeout_test.go | 43 ++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go index 563a842cf9..ca86f31ef2 100644 --- a/src/net/timeout_test.go +++ b/src/net/timeout_test.go @@ -242,35 +242,22 @@ func TestAcceptTimeoutMustReturn(t *testing.T) { ln := newLocalListener(t, "tcp") defer ln.Close() - max := time.NewTimer(time.Second) - defer max.Stop() - ch := make(chan error) - go func() { - if err := ln.(*TCPListener).SetDeadline(noDeadline); err != nil { - t.Error(err) - } - if err := ln.(*TCPListener).SetDeadline(time.Now().Add(10 * time.Millisecond)); err != nil { - t.Error(err) - } - c, err := ln.Accept() - if err == nil { - c.Close() - } - ch <- err - }() + if err := ln.(*TCPListener).SetDeadline(noDeadline); err != nil { + t.Error(err) + } + if err := ln.(*TCPListener).SetDeadline(time.Now().Add(10 * time.Millisecond)); err != nil { + t.Error(err) + } + c, err := ln.Accept() + if err == nil { + c.Close() + } - select { - case <-max.C: - ln.Close() - <-ch // wait for tester goroutine to stop - t.Fatal("Accept didn't return in an expected time") - case err := <-ch: - if perr := parseAcceptError(err); perr != nil { - t.Error(perr) - } - if !isDeadlineExceeded(err) { - t.Fatal(err) - } + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } + if !isDeadlineExceeded(err) { + t.Fatal(err) } } -- 2.48.1