1
0
mirror of https://github.com/golang/go synced 2024-11-24 08:20:03 -07:00

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>
This commit is contained in:
Bryan C. Mills 2022-04-06 12:03:37 -04:00 committed by Bryan Mills
parent 5bb2628c6f
commit 81ae993e54

View File

@ -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()