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  }