diff options
| author | Bryan C. Mills <bcmills@google.com> | 2022-04-06 12:03:37 -0400 |
|---|---|---|
| committer | Bryan Mills <bcmills@google.com> | 2022-04-06 20:46:47 +0000 |
| commit | 81ae993e54547415ba674082801b05961e3f2aa3 (patch) | |
| tree | 7ecc1687f1f694568f7a86761a0693edcc03c3f8 /src/net/http | |
| parent | 5bb2628c6f143be065776727cef03276c0e516f7 (diff) | |
| download | go-81ae993e54547415ba674082801b05961e3f2aa3.tar.xz | |
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 <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/net/http')
| -rw-r--r-- | src/net/http/transport_test.go | 14 |
1 files 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() |
