From 81ae993e54547415ba674082801b05961e3f2aa3 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 6 Apr 2022 12:03:37 -0400 Subject: [PATCH] net/http: ignore ECONNRESET errors in TestTransportConcurrency on netbsd The source of these errors is undiagnosed, but they have only been observed on netbsd builders (on a variety of architectures). Tested manually by injecting this code into the test's handler: if mrand.Intn(4) == 0 { if conn, _, err := w.(Hijacker).Hijack(); err == nil { conn.(*net.TCPConn).SetLinger(0) conn.Close() return } } and temporarily disabling the 'runtime.GOOS' part of the condition. For #52168. Change-Id: I10965803e5a0d493ac4a000575de8b5f0266989c Reviewed-on: https://go-review.googlesource.com/c/go/+/398635 Trust: Bryan Mills Run-TryBot: Bryan Mills TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor --- src/net/http/transport_test.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 440d6b969b..84065c7085 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -2099,17 +2099,21 @@ func TestTransportConcurrency(t *testing.T) { for req := range reqs { res, err := c.Get(ts.URL + "/?echo=" + req) if err != nil { - t.Errorf("error on req %s: %v", req, err) + if runtime.GOOS == "netbsd" && strings.HasSuffix(err.Error(), ": connection reset by peer") { + // https://go.dev/issue/52168: this test was observed to fail with + // ECONNRESET errors in Dial on various netbsd builders. + t.Logf("error on req %s: %v", req, err) + t.Logf("(see https://go.dev/issue/52168)") + } else { + t.Errorf("error on req %s: %v", req, err) + } wg.Done() continue } all, err := io.ReadAll(res.Body) if err != nil { t.Errorf("read error on req %s: %v", req, err) - wg.Done() - continue - } - if string(all) != req { + } else if string(all) != req { t.Errorf("body of req %s = %q; want %q", req, all, req) } res.Body.Close() -- 2.50.0