github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/rpc/rpc_test.go (about) 1 package rpc 2 3 import ( 4 "net" 5 "net/rpc" 6 "testing" 7 ) 8 9 func testConn(t *testing.T) (net.Conn, net.Conn) { 10 l, err := net.Listen("tcp", "127.0.0.1:0") 11 if err != nil { 12 t.Fatalf("err: %s", err) 13 } 14 15 var serverConn net.Conn 16 doneCh := make(chan struct{}) 17 go func() { 18 defer close(doneCh) 19 defer l.Close() 20 var err error 21 serverConn, err = l.Accept() 22 if err != nil { 23 t.Fatalf("err: %s", err) 24 } 25 }() 26 27 clientConn, err := net.Dial("tcp", l.Addr().String()) 28 if err != nil { 29 t.Fatalf("err: %s", err) 30 } 31 <-doneCh 32 33 return clientConn, serverConn 34 } 35 36 func testClientServer(t *testing.T) (*rpc.Client, *rpc.Server) { 37 clientConn, serverConn := testConn(t) 38 39 server := rpc.NewServer() 40 go server.ServeConn(serverConn) 41 42 client := rpc.NewClient(clientConn) 43 44 return client, server 45 }