mirror of
https://github.com/golang/go
synced 2024-09-24 15:30:13 -06:00
net: eliminate arbitrary timeout in TestVariousDeadlines
When we set a timeout, we don't actually have a guarantee one how long the OS will take to notice it. Moreover, if the test deadlocks completely (for example, due to a deadline never taking effect), it would be more useful to get a full goroutine dump instead of the current "client stuck in Dial+Copy" failure message. For #37883 For #41863 Change-Id: I9f712ef1c620f97a5ab69baac45deb71134b99bc Reviewed-on: https://go-review.googlesource.com/c/go/+/371994 Trust: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
9d0ca262bb
commit
b5c0dbaafc
@ -947,16 +947,11 @@ func testVariousDeadlines(t *testing.T) {
|
||||
name := fmt.Sprintf("%v %d/%d", timeout, run, numRuns)
|
||||
t.Log(name)
|
||||
|
||||
tooSlow := time.NewTimer(5 * time.Second)
|
||||
defer tooSlow.Stop()
|
||||
|
||||
c, err := Dial(ls.Listener.Addr().Network(), ls.Listener.Addr().String())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
ch := make(chan result, 1)
|
||||
go func() {
|
||||
t0 := time.Now()
|
||||
if err := c.SetDeadline(t0.Add(timeout)); err != nil {
|
||||
t.Error(err)
|
||||
@ -964,18 +959,11 @@ func testVariousDeadlines(t *testing.T) {
|
||||
n, err := io.Copy(io.Discard, c)
|
||||
dt := time.Since(t0)
|
||||
c.Close()
|
||||
ch <- result{n, err, dt}
|
||||
}()
|
||||
|
||||
select {
|
||||
case res := <-ch:
|
||||
if nerr, ok := res.err.(Error); ok && nerr.Timeout() {
|
||||
t.Logf("%v: good timeout after %v; %d bytes", name, res.d, res.n)
|
||||
if nerr, ok := err.(Error); ok && nerr.Timeout() {
|
||||
t.Logf("%v: good timeout after %v; %d bytes", name, dt, n)
|
||||
} else {
|
||||
t.Fatalf("%v: Copy = %d, %v; want timeout", name, res.n, res.err)
|
||||
}
|
||||
case <-tooSlow.C:
|
||||
t.Fatalf("%v: client stuck in Dial+Copy", name)
|
||||
t.Fatalf("%v: Copy = %d, %v; want timeout", name, n, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user