mirror of
https://github.com/golang/go
synced 2024-11-23 16:30:06 -07:00
net/http: deflake TestClientTimeout
Should fix flakes like: https://build.golang.org/log/c8da331317064227f38d5ef57ed7dba563ba1b38 --- FAIL: TestClientTimeout_h1 (0.35s) client_test.go:1263: timeout after 200ms waiting for timeout of 100ms FAIL Change-Id: I0a4dba607524e8d7a00f498e27d9598acde5d222 Reviewed-on: https://go-review.googlesource.com/33420 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
01b4ddb377
commit
35231ec7c6
@ -1188,9 +1188,7 @@ func TestClientTimeout_h2(t *testing.T) { testClientTimeout(t, h2Mode) }
|
|||||||
func testClientTimeout(t *testing.T, h2 bool) {
|
func testClientTimeout(t *testing.T, h2 bool) {
|
||||||
setParallel(t)
|
setParallel(t)
|
||||||
defer afterTest(t)
|
defer afterTest(t)
|
||||||
testDone := make(chan struct{})
|
testDone := make(chan struct{}) // closed in defer below
|
||||||
|
|
||||||
const timeout = 100 * time.Millisecond
|
|
||||||
|
|
||||||
sawRoot := make(chan bool, 1)
|
sawRoot := make(chan bool, 1)
|
||||||
sawSlow := make(chan bool, 1)
|
sawSlow := make(chan bool, 1)
|
||||||
@ -1204,21 +1202,22 @@ func testClientTimeout(t *testing.T, h2 bool) {
|
|||||||
sawSlow <- true
|
sawSlow <- true
|
||||||
w.Write([]byte("Hello"))
|
w.Write([]byte("Hello"))
|
||||||
w.(Flusher).Flush()
|
w.(Flusher).Flush()
|
||||||
select {
|
<-testDone
|
||||||
case <-testDone:
|
|
||||||
case <-time.After(timeout * 10):
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
defer cst.close()
|
defer cst.close()
|
||||||
defer close(testDone)
|
defer close(testDone) // before cst.close, to unblock /slow handler
|
||||||
|
|
||||||
|
// 200ms should be long enough to get a normal request (the /
|
||||||
|
// handler), but not so long that it makes the test slow.
|
||||||
|
const timeout = 200 * time.Millisecond
|
||||||
cst.c.Timeout = timeout
|
cst.c.Timeout = timeout
|
||||||
|
|
||||||
res, err := cst.c.Get(cst.ts.URL)
|
res, err := cst.c.Get(cst.ts.URL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), "Client.Timeout") {
|
if strings.Contains(err.Error(), "Client.Timeout") {
|
||||||
t.Skip("host too slow to get fast resource in 100ms")
|
t.Skipf("host too slow to get fast resource in %v", timeout)
|
||||||
}
|
}
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -1244,7 +1243,7 @@ func testClientTimeout(t *testing.T, h2 bool) {
|
|||||||
res.Body.Close()
|
res.Body.Close()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
const failTime = timeout * 2
|
const failTime = 5 * time.Second
|
||||||
select {
|
select {
|
||||||
case err := <-errc:
|
case err := <-errc:
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user