// TestGoRPCGoClient tests the go client using goRPC func TestGoRPCGoClient(t *testing.T) { service := services.CreateServices() // listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } defer listener.Close() // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() server.Register(bsonp3vtgateservice.New(service)) // create the HTTP server, serve the server from it handler := http.NewServeMux() bsonrpc.ServeCustomRPC(handler, server, false) httpServer := http.Server{ Handler: handler, } go httpServer.Serve(listener) // and run the test suite goclienttest.TestGoClient(t, "bsonp3", listener.Addr().String()) }
// TestBsonP3VTGateConn makes sure the BsonP3RPC service works func TestBsonP3VTGateConn(t *testing.T) { // fake service service := vtgateconntest.CreateFakeServer(t) // listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() server.Register(bsonp3vtgateservice.New(service)) // create the HTTP server, serve the server from it handler := http.NewServeMux() bsonrpc.ServeCustomRPC(handler, server) httpServer := http.Server{ Handler: handler, } go httpServer.Serve(listener) // Create a Go RPC client connecting to the server ctx := context.Background() client, err := dial(ctx, listener.Addr().String(), 30*time.Second) if err != nil { t.Fatalf("dial failed: %v", err) } vtgateconntest.RegisterTestDialProtocol(client) // run the test suite // vtgateconntest.TestSuite(t, client, service) vtgateconntest.TestErrorSuite(t, service) // and clean up client.Close() }