Guava 20 introduced some overloading optimizations for Preconditions that require using Guava 20+ at runtime. Unfortunately, Guava 20 removes some things that is causing incompatibilities with other libraries, like Cassandra. While the incompatibility did trigger some of those libraries to improve compatibility for newer Guavas, we'd like to give the community more time to work through it. See #2688 At this commit, we appear to be compatible with Guava 18+. It's not clear if we want to actually "support" 18, but it did compile. Guava 17 doesn't have at least MoreObjects, directExecutor, and firstNotNull. Guava 21 compiles without warnings, so it should be compatible with Guava 22 when it is released. One test method will fail with the upcoming Guava 22, but this won't impact applications. I made MoreThrowables to avoid using any known-deprecated Guava methods in our JARs, to reduce pain for those stuck with old versions of gRPC in the future (July 2018). In the stand-alone Android apps I removed unnecessary explicit deps instead of syncing the version used. |
||
|---|---|---|
| .. | ||
| android | ||
| gradle/wrapper | ||
| src | ||
| thrift | ||
| README.md | ||
| build.gradle | ||
| gradlew | ||
| gradlew.bat | ||
| pom.xml | ||
| settings.gradle | ||
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.
To build the examples, run in this directory:
$ ./gradlew installDist
This creates the scripts hello-world-server, hello-world-client,
route-guide-server, and route-guide-client 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:
$ 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
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.