diff options
| author | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-17 14:35:54 +0900 |
|---|---|---|
| committer | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-18 03:38:50 +0000 |
| commit | 4540e162b1aefda8157372764ad3d290a414ef1d (patch) | |
| tree | 219593913b2b5d05d57b0119dd33a7102921971b /src/net/timeout_test.go | |
| parent | 310db63c5bc121e7bfccb494c01a6b91a257e7fc (diff) | |
| download | go-4540e162b1aefda8157372764ad3d290a414ef1d.tar.xz | |
net: fix inconsistent error values on Accept
This change fixes inconsistent error values on Accept{,TCP,Unix}.
Updates #4856.
Change-Id: Ie3bb534c19a724cacb3ea3f3656e46c810b2123f
Reviewed-on: https://go-review.googlesource.com/8996
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/net/timeout_test.go')
| -rw-r--r-- | src/net/timeout_test.go | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go index fd5658ae5f..3ef22fa76f 100644 --- a/src/net/timeout_test.go +++ b/src/net/timeout_test.go @@ -81,16 +81,28 @@ func TestAcceptTimeout(t *testing.T) { if _, err := ln.Accept(); !isTimeoutError(err) { t.Fatalf("Accept: expected err %v, got %v", errTimeout, err) } + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } if _, err := ln.Accept(); !isTimeoutError(err) { t.Fatalf("Accept: expected err %v, got %v", errTimeout, err) } + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } ln.(*TCPListener).SetDeadline(time.Now().Add(100 * time.Millisecond)) if _, err := ln.Accept(); !isTimeoutError(err) { t.Fatalf("Accept: expected err %v, got %v", errTimeout, err) } + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } if _, err := ln.Accept(); !isTimeoutError(err) { t.Fatalf("Accept: expected err %v, got %v", errTimeout, err) } + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } ln.(*TCPListener).SetDeadline(noDeadline) errc := make(chan error) go func() { @@ -104,15 +116,9 @@ func TestAcceptTimeout(t *testing.T) { default: } ln.Close() - switch nerr := <-errc; err := nerr.(type) { - case *OpError: - if err.Err != errClosing { - t.Fatalf("Accept: expected err %v, got %v", errClosing, err) - } - default: - if err != errClosing { - t.Fatalf("Accept: expected err %v, got %v", errClosing, err) - } + err = <-errc + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) } } @@ -356,18 +362,18 @@ func TestDeadlineReset(t *testing.T) { } } -func TestTimeoutAccept(t *testing.T) { +func TestConcurrentAcceptTimeout(t *testing.T) { switch runtime.GOOS { case "plan9": t.Skipf("skipping test on %q", runtime.GOOS) } - ln, err := Listen("tcp", "127.0.0.1:0") + + ln, err := newLocalListener("tcp") if err != nil { t.Fatal(err) } defer ln.Close() - tl := ln.(*TCPListener) - tl.SetDeadline(time.Now().Add(100 * time.Millisecond)) + ln.(*TCPListener).SetDeadline(time.Now().Add(100 * time.Millisecond)) errc := make(chan error, 1) go func() { _, err := ln.Accept() @@ -376,9 +382,11 @@ func TestTimeoutAccept(t *testing.T) { select { case <-time.After(1 * time.Second): // Accept shouldn't block indefinitely - t.Errorf("Accept didn't return in an expected time") - case <-errc: - // Pass. + t.Error("Accept didn't return in an expected time") + case err := <-errc: + if perr := parseAcceptError(err); perr != nil { + t.Error(perr) + } } } |
