mirror of
https://github.com/soheilhy/cmux.git
synced 2025-01-19 03:06:07 +08:00
let the kernel assign ports
This commit is contained in:
parent
4f1b8abafd
commit
ecc37f82cd
62
cmux_test.go
62
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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user