diff options
Diffstat (limited to 'src/pkg/net/rpc/server_test.go')
-rw-r--r-- | src/pkg/net/rpc/server_test.go | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/src/pkg/net/rpc/server_test.go b/src/pkg/net/rpc/server_test.go index eb17210ab..3b9a88380 100644 --- a/src/pkg/net/rpc/server_test.go +++ b/src/pkg/net/rpc/server_test.go @@ -84,6 +84,7 @@ func listenTCP() (net.Listener, string) { func startServer() { Register(new(Arith)) + RegisterName("net.rpc.Arith", new(Arith)) var l net.Listener l, serverAddr = listenTCP() @@ -97,11 +98,13 @@ func startServer() { func startNewServer() { newServer = NewServer() newServer.Register(new(Arith)) + newServer.RegisterName("net.rpc.Arith", new(Arith)) + newServer.RegisterName("newServer.Arith", new(Arith)) var l net.Listener l, newServerAddr = listenTCP() log.Println("NewServer test RPC server listening on", newServerAddr) - go Accept(l) + go newServer.Accept(l) newServer.HandleHTTP(newHttpPath, "/bar") httpOnce.Do(startHttpServer) @@ -118,6 +121,7 @@ func TestRPC(t *testing.T) { testRPC(t, serverAddr) newOnce.Do(startNewServer) testRPC(t, newServerAddr) + testNewServerRPC(t, newServerAddr) } func testRPC(t *testing.T, addr string) { @@ -125,6 +129,7 @@ func testRPC(t *testing.T, addr string) { if err != nil { t.Fatal("dialing", err) } + defer client.Close() // Synchronous calls args := &Args{7, 8} @@ -233,6 +238,36 @@ func testRPC(t *testing.T, addr string) { if reply.C != args.A*args.B { t.Errorf("Mul: expected %d got %d", reply.C, args.A*args.B) } + + // ServiceName contain "." character + args = &Args{7, 8} + reply = new(Reply) + err = client.Call("net.rpc.Arith.Add", args, reply) + if err != nil { + t.Errorf("Add: expected no error but got string %q", err.Error()) + } + if reply.C != args.A+args.B { + t.Errorf("Add: expected %d got %d", reply.C, args.A+args.B) + } +} + +func testNewServerRPC(t *testing.T, addr string) { + client, err := Dial("tcp", addr) + if err != nil { + t.Fatal("dialing", err) + } + defer client.Close() + + // Synchronous calls + args := &Args{7, 8} + reply := new(Reply) + err = client.Call("newServer.Arith.Add", args, reply) + if err != nil { + t.Errorf("Add: expected no error but got string %q", err.Error()) + } + if reply.C != args.A+args.B { + t.Errorf("Add: expected %d got %d", reply.C, args.A+args.B) + } } func TestHTTP(t *testing.T) { @@ -253,6 +288,7 @@ func testHTTPRPC(t *testing.T, path string) { if err != nil { t.Fatal("dialing", err) } + defer client.Close() // Synchronous calls args := &Args{7, 8} @@ -329,6 +365,7 @@ func TestServeRequest(t *testing.T) { func testServeRequest(t *testing.T, server *Server) { client := CodecEmulator{server: server} + defer client.Close() args := &Args{7, 8} reply := new(Reply) @@ -411,6 +448,7 @@ func (WriteFailCodec) Close() error { func TestSendDeadlock(t *testing.T) { client := NewClientWithCodec(WriteFailCodec(0)) + defer client.Close() done := make(chan bool) go func() { @@ -449,6 +487,8 @@ func countMallocs(dial func() (*Client, error), t *testing.T) float64 { if err != nil { t.Fatal("error dialing", err) } + defer client.Close() + args := &Args{7, 8} reply := new(Reply) return testing.AllocsPerRun(100, func() { @@ -463,6 +503,9 @@ func countMallocs(dial func() (*Client, error), t *testing.T) float64 { } func TestCountMallocs(t *testing.T) { + if testing.Short() { + t.Skip("skipping malloc count in short mode") + } if runtime.GOMAXPROCS(0) > 1 { t.Skip("skipping; GOMAXPROCS>1") } @@ -470,6 +513,9 @@ func TestCountMallocs(t *testing.T) { } func TestCountMallocsOverHTTP(t *testing.T) { + if testing.Short() { + t.Skip("skipping malloc count in short mode") + } if runtime.GOMAXPROCS(0) > 1 { t.Skip("skipping; GOMAXPROCS>1") } @@ -496,6 +542,8 @@ func (writeCrasher) Write(p []byte) (int, error) { func TestClientWriteError(t *testing.T) { w := &writeCrasher{done: make(chan bool)} c := NewClient(w) + defer c.Close() + res := false err := c.Call("foo", 1, &res) if err == nil { @@ -552,6 +600,7 @@ func benchmarkEndToEnd(dial func() (*Client, error), b *testing.B) { if err != nil { b.Fatal("error dialing:", err) } + defer client.Close() // Synchronous calls args := &Args{7, 8} @@ -587,6 +636,7 @@ func benchmarkEndToEndAsync(dial func() (*Client, error), b *testing.B) { if err != nil { b.Fatal("error dialing:", err) } + defer client.Close() // Asynchronous calls args := &Args{7, 8} |