diff options
Diffstat (limited to 'src/pkg/rpc/server_test.go')
| -rw-r--r-- | src/pkg/rpc/server_test.go | 103 | 
1 files changed, 37 insertions, 66 deletions
| diff --git a/src/pkg/rpc/server_test.go b/src/pkg/rpc/server_test.go index 1f080faa5..05aaebceb 100644 --- a/src/pkg/rpc/server_test.go +++ b/src/pkg/rpc/server_test.go @@ -134,14 +134,25 @@ func testRPC(t *testing.T, addr string) {  		t.Errorf("Add: expected %d got %d", reply.C, args.A+args.B)  	} -	args = &Args{7, 8} +	// Nonexistent method +	args = &Args{7, 0}  	reply = new(Reply) -	err = client.Call("Arith.Mul", args, reply) -	if err != nil { -		t.Errorf("Mul: expected no error but got string %q", err.String()) +	err = client.Call("Arith.BadOperation", args, reply) +	// expect an error +	if err == nil { +		t.Error("BadOperation: expected error") +	} else if !strings.HasPrefix(err.String(), "rpc: can't find method ") { +		t.Errorf("BadOperation: expected can't find method error; got %q", err)  	} -	if reply.C != args.A*args.B { -		t.Errorf("Mul: expected %d got %d", reply.C, args.A*args.B) + +	// Unknown service +	args = &Args{7, 8} +	reply = new(Reply) +	err = client.Call("Arith.Unknown", args, reply) +	if err == nil { +		t.Error("expected error calling unknown service") +	} else if strings.Index(err.String(), "method") < 0 { +		t.Error("expected error about method; got", err)  	}  	// Out of order. @@ -178,6 +189,15 @@ func testRPC(t *testing.T, addr string) {  		t.Error("Div: expected divide by zero error; got", err)  	} +	// Bad type. +	reply = new(Reply) +	err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use +	if err == nil { +		t.Error("expected error calling Arith.Add with wrong arg type") +	} else if strings.Index(err.String(), "type") < 0 { +		t.Error("expected error about type; got", err) +	} +  	// Non-struct argument  	const Val = 12345  	str := fmt.Sprint(Val) @@ -200,9 +220,19 @@ func testRPC(t *testing.T, addr string) {  	if str != expect {  		t.Errorf("String: expected %s got %s", expect, str)  	} + +	args = &Args{7, 8} +	reply = new(Reply) +	err = client.Call("Arith.Mul", args, reply) +	if err != nil { +		t.Errorf("Mul: expected no error but got string %q", err.String()) +	} +	if reply.C != args.A*args.B { +		t.Errorf("Mul: expected %d got %d", reply.C, args.A*args.B) +	}  } -func TestHTTPRPC(t *testing.T) { +func TestHTTP(t *testing.T) {  	once.Do(startServer)  	testHTTPRPC(t, "")  	newOnce.Do(startNewServer) @@ -233,65 +263,6 @@ func testHTTPRPC(t *testing.T, path string) {  	}  } -func TestCheckUnknownService(t *testing.T) { -	once.Do(startServer) - -	conn, err := net.Dial("tcp", "", serverAddr) -	if err != nil { -		t.Fatal("dialing:", err) -	} - -	client := NewClient(conn) - -	args := &Args{7, 8} -	reply := new(Reply) -	err = client.Call("Unknown.Add", args, reply) -	if err == nil { -		t.Error("expected error calling unknown service") -	} else if strings.Index(err.String(), "service") < 0 { -		t.Error("expected error about service; got", err) -	} -} - -func TestCheckUnknownMethod(t *testing.T) { -	once.Do(startServer) - -	conn, err := net.Dial("tcp", "", serverAddr) -	if err != nil { -		t.Fatal("dialing:", err) -	} - -	client := NewClient(conn) - -	args := &Args{7, 8} -	reply := new(Reply) -	err = client.Call("Arith.Unknown", args, reply) -	if err == nil { -		t.Error("expected error calling unknown service") -	} else if strings.Index(err.String(), "method") < 0 { -		t.Error("expected error about method; got", err) -	} -} - -func TestCheckBadType(t *testing.T) { -	once.Do(startServer) - -	conn, err := net.Dial("tcp", "", serverAddr) -	if err != nil { -		t.Fatal("dialing:", err) -	} - -	client := NewClient(conn) - -	reply := new(Reply) -	err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use -	if err == nil { -		t.Error("expected error calling Arith.Add with wrong arg type") -	} else if strings.Index(err.String(), "type") < 0 { -		t.Error("expected error about type; got", err) -	} -} -  type ArgNotPointer int  type ReplyNotPointer int  type ArgNotPublic int | 
