grpc-java/examples
Eric Anderson eaca73473c
Upgrade to protobuf 3.6.1
For Bazel, we upgrade to protobuf 3.6.1.2 and javalite HEAD to fix
incompatibilities in newer Bazel releases.

compiler/Dockerfile is unused, so it was removed instead of being updated.

protoc no longer includes codegen for nano, so we remain on the older protoc
any time nano is used.

Protobuf now requires C++11 when compiling, so windows was swapped to
VC 14.
2019-02-07 13:40:53 -08:00
..
android Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
example-alts Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
example-gauth Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
example-kotlin Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
example-tls Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
gradle/wrapper Upgrade Gradle to 4.9 2018-07-26 13:43:50 -07:00
src all: remove java6 type args 2019-02-04 10:03:50 -08:00
AUTHENTICATION_EXAMPLE.md examples: Not to promise a supported Bazel version 2019-01-11 08:56:08 -08:00
BUILD.bazel Examples: Add a JWT authentication example (#5154) 2018-12-13 12:26:39 -08:00
README.md examples: Not to promise a supported Bazel version 2019-01-11 08:56:08 -08:00
WORKSPACE Example: Google Auth example with PubSub API ListTopics for a project ID (#5162) 2018-12-18 16:47:42 -08:00
build.gradle Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
gradlew all: update to gradle 4.0.1 2017-07-12 10:07:14 -07:00
gradlew.bat all: update to gradle 3.2 2016-11-23 14:43:18 -08:00
pom.xml Upgrade to protobuf 3.6.1 2019-02-07 13:40:53 -08:00
settings.gradle examples: prefer implementation to compile in build.gradle 2018-12-03 10:01:19 -08:00

README.md

grpc Examples

The examples require grpc-java to already be built. You are strongly encouraged to check out a git release tag, since there will already be a build of grpc available. Otherwise you must follow COMPILING.

You may want to read through the Quick Start Guide before trying out the examples.

Basic examples

To build the examples

  1. Install gRPC Java library SNAPSHOT locally, including code generation plugin (Only need this step for non-released versions, e.g. master HEAD).

  2. Run in this directory:

$ ./gradlew installDist

This creates the scripts hello-world-server, hello-world-client, route-guide-server, route-guide-client, etc. in the build/install/examples/bin/ directory that run the examples. Each example requires the server to be running before starting the client.

For example, to try the hello world example first run:

$ ./build/install/examples/bin/hello-world-server

And in a different terminal window run:

$ ./build/install/examples/bin/hello-world-client

That's it!

Please refer to gRPC Java's README and tutorial for more information.

Maven

If you prefer to use Maven:

  1. Install gRPC Java library SNAPSHOT locally, including code generation plugin (Only need this step for non-released versions, e.g. master HEAD).

  2. Run in this directory:

$ mvn verify
$ # Run the server
$ mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworld.HelloWorldServer
$ # In another terminal run the client
$ mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworld.HelloWorldClient

Bazel

If you prefer to use Bazel:

$ bazel build :hello-world-server :hello-world-client
$ # Run the server
$ bazel-bin/hello-world-server
$ # In another terminal run the client
$ bazel-bin/hello-world-client

Other examples

Unit test examples

Examples for unit testing gRPC clients and servers are located in examples/src/test.

In general, we DO NOT allow overriding the client stub. We encourage users to leverage InProcessTransport as demonstrated in the examples to write unit tests. InProcessTransport is light-weight and runs the server and client in the same process without any socket/TCP connection.

For testing a gRPC client, create the client with a real stub using an InProcessChannel, and test it against an InProcessServer with a mock/fake service implementation.

For testing a gRPC server, create the server as an InProcessServer, and test it against a real client stub with an InProcessChannel.

The gRPC-java library also provides a JUnit rule, GrpcCleanupRule, to do the graceful shutdown boilerplate for you.

Even more examples

A wide variety of third-party examples can be found here.