From ecc37f82cd761e82b2c0154e8415669f7baed018 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Sat, 20 Feb 2016 15:43:18 -0500 Subject: [PATCH] let the kernel assign ports --- cmux_test.go | 62 +++++++++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/cmux_test.go b/cmux_test.go index 9432344..16b7324 100644 --- a/cmux_test.go +++ b/cmux_test.go @@ -14,20 +14,16 @@ const ( rpcVal = 1234 ) -var testPort = 5125 - -func testAddr() string { - testPort++ - return fmt.Sprintf("127.0.0.1:%d", testPort) -} - -func testListener(t *testing.T) (net.Listener, string) { - addr := testAddr() - l, err := net.Listen("tcp", addr) +func testListener(t *testing.T) (net.Listener, func()) { + l, err := net.Listen("tcp", ":0") if err != nil { t.Fatal(err) } - return l, addr + return l, func() { + if err := l.Close(); err != nil { + t.Error(err) + } + } } type testHTTP1Handler struct{} @@ -40,13 +36,13 @@ func runTestHTTPServer(t *testing.T, l net.Listener) { s := &http.Server{ Handler: &testHTTP1Handler{}, } - if err := s.Serve(l); err != nil { + if err := s.Serve(l); err != nil && err != ErrListenerClosed { t.Log(err) } } -func runTestHTTP1Client(t *testing.T, addr string) { - r, err := http.Get("http://" + addr) +func runTestHTTP1Client(t *testing.T, addr net.Addr) { + r, err := http.Get("http://" + addr.String()) if err != nil { t.Fatal(err) } @@ -88,8 +84,8 @@ func runTestRPCServer(t *testing.T, l net.Listener) { } } -func runTestRPCClient(t *testing.T, addr string) { - c, err := rpc.Dial("tcp", addr) +func runTestRPCClient(t *testing.T, addr net.Addr) { + c, err := rpc.Dial(addr.Network(), addr.String()) if err != nil { t.Error(err) return @@ -107,12 +103,8 @@ func runTestRPCClient(t *testing.T, addr string) { } func TestAny(t *testing.T) { - l, addr := testListener(t) - defer func() { - if err := l.Close(); err != nil { - t.Log(err) - } - }() + l, cleanup := testListener(t) + defer cleanup() muxl := New(l) httpl := muxl.Match(Any()) @@ -124,11 +116,10 @@ func TestAny(t *testing.T) { } }() - r, err := http.Get("http://" + addr) + r, err := http.Get("http://" + l.Addr().String()) if err != nil { t.Fatal(err) } - defer func() { if err := r.Body.Close(); err != nil { t.Log(err) @@ -144,12 +135,8 @@ func TestAny(t *testing.T) { } func TestHTTPGoRPC(t *testing.T) { - l, addr := testListener(t) - defer func() { - if err := l.Close(); err != nil { - t.Log(err) - } - }() + l, cleanup := testListener(t) + defer cleanup() muxl := New(l) httpl := muxl.Match(HTTP2(), HTTP1Fast()) @@ -163,17 +150,13 @@ func TestHTTPGoRPC(t *testing.T) { } }() - runTestHTTP1Client(t, addr) - runTestRPCClient(t, addr) + runTestHTTP1Client(t, l.Addr()) + runTestRPCClient(t, l.Addr()) } func TestErrorHandler(t *testing.T) { - l, addr := testListener(t) - defer func() { - if err := l.Close(); err != nil { - t.Log(err) - } - }() + l, cleanup := testListener(t) + defer cleanup() muxl := New(l) httpl := muxl.Match(HTTP2(), HTTP1Fast()) @@ -197,7 +180,8 @@ func TestErrorHandler(t *testing.T) { return true }) - c, err := rpc.Dial("tcp", addr) + addr := l.Addr() + c, err := rpc.Dial(addr.Network(), addr.String()) if err != nil { t.Fatal(err) }