### Dependency updates #### Update successfully to the latest - [x] `androidx.core:core 1.10.0 -> 1.10.1` - [x] `com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0` - [x] `com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5` - [x] `com.google.truth:truth 1.0.1 -> 1.1.5` - [x] `com.puppycrawl.tools:checkstyle 8.28 -> 10.12.1` - [x] `org.robolectric:robolectric 4.9.2 -> 4.10.3` - [x] Auto-value - [x] `com.google.auto.value:auto-value 1.10.1 -> 1.10.2` - [x] `com.google.auto.value:auto-value-annotations 1.10.1 -> 1.10.2` - [x] Protobuf - [x] `com.google.protobuf:protobuf-java 3.22.3 -> 3.23.4` - [x] `com.google.protobuf:protobuf-java-util 3.22.3 -> 3.23.4` - [x] `com.google.protobuf:protobuf-javalite 3.22.3 -> 3.23.4` - [x] `com.google.protobuf:protoc 3.22.3 -> 3.23.4` - [x] Errorprone - [x] `com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0` - [x] `com.google.errorprone:error_prone_core 2.18.0 -> 2.20.0` - ~`libs.checkstylejava8 = com.puppycrawl.tools:checkstyle 9.3 -> 10.12.1`~ -- pinned to last version supporting java8, update not needed #### Updated to non-latest - [x] `com.squareup.okio:okio 1.17.5 ->` ~`3.4.0`~ `2.10.0` -- updating to 3.x failed due to them [introducing gradle multiplatform artifacts](https://github.com/square/okio/blob/master/CHANGELOG.md#version-320). Error in [the comment below](https://github.com/grpc/grpc-java/pull/10359#issuecomment-1632853307.). - [x] `org.checkerframework:checker-qual 3.33.0 ->` ~`3.36.0`~ -- removed, no longer needed - [x] Mockito - updated to `4.11.0`. Versions 5.x break some tests. Errors in [the comment below](https://github.com/grpc/grpc-java/pull/10359#issuecomment-1632834435). - `org.mockito:mockito-android 3.12.4 ->` ~`5.4.0`~ `4.11.0` - `org.mockito:mockito-core 3.12.4 ->` ~`5.4.0`~ `4.11.0` #### Not updated - Cronet -- upgrade failed, created a blocker ticket https://github.com/grpc/grpc-java/issues/10396 - ~`org.chromium.net:cronet-api 108.5359.79 -> 113.5672.61`~ - ~`org.chromium.net:cronet-embedded 108.5359.79 -> 113.5672.61`~ - Google auth -- upgrade blocked by https://github.com/grpc/grpc-java/pull/9118 - ~`com.google.auth:google-auth-library-credentials 1.4.0 -> 1.19.0`~ - ~`com.google.auth:google-auth-library-oauth2-http 1.4.0 -> 1.19.0`~ - Guava -- not upgraded: 32.1.0 [broke gradle modules](https://github.com/google/guava/releases/tag/v32.1.0) - ~`libs.guava = com.google.guava:guava 32.0.1-android -> 32.1.1-jre`~ - ~`libs.guava.jre = com.google.guava:guava 32.0.1-jre -> 32.1.1-jre`~ - ~`libs.guava.testlib = com.google.guava:guava-testlib 32.0.1-android -> 32.1.1-jre`~ ### checkForUpdates results ``` > Task :checkForUpdates androidx.core:core 1.10.0 -> 1.10.1 com.google.auto.value:auto-value 1.10.1 -> 1.10.2 com.google.auto.value:auto-value-annotations 1.10.1 -> 1.10.2 org.checkerframework:checker-qual 3.33.0 -> 3.36.0 com.puppycrawl.tools:checkstyle 8.28 -> 10.12.1 org.chromium.net:cronet-api 108.5359.79 -> 113.5672.61 org.chromium.net:cronet-embedded 108.5359.79 -> 113.5672.61 com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0 com.google.errorprone:error_prone_core 2.18.0 -> 2.20.0 com.google.errorprone:error_prone_core 2.10.0 -> 2.20.0 com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0 com.google.auth:google-auth-library-credentials 1.4.0 -> 1.19.0 com.google.auth:google-auth-library-oauth2-http 1.4.0 -> 1.19.0 com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5 com.google.guava:guava 32.0.1-android -> 32.1.1-jre com.google.guava:guava 32.0.1-jre -> 32.1.1-jre com.google.guava:guava-testlib 32.0.1-android -> 32.1.1-jre org.mockito:mockito-android 3.12.4 -> 5.4.0 org.mockito:mockito-core 3.12.4 -> 5.4.0 com.squareup.okio:okio 1.17.5 -> 3.4.0 com.google.protobuf:protobuf-java 3.22.3 -> 3.23.4 com.google.protobuf:protobuf-java-util 3.22.3 -> 3.23.4 com.google.protobuf:protobuf-javalite 3.22.3 -> 3.23.4 com.google.protobuf:protoc 3.22.3 -> 3.23.4 org.robolectric:robolectric 4.9.2 -> 4.10.3 com.google.truth:truth 1.0.1 -> 1.1.5 ``` |
||
|---|---|---|
| .. | ||
| src/main | ||
| README.md | ||
| build.gradle | ||
| settings.gradle | ||
README.md
gRPC Reflection Example
The reflection example has a Hello World server with ProtoReflectionService registered.
Build the example
To build the example server, from the grpc-java/examples/examples-reflection
directory:
$ ../gradlew installDist
This creates the scripts build/install/example-reflection/bin/reflection-server.
Run the example
gRPC Server Reflection provides information about publicly-accessible gRPC services on a server, and assists clients at runtime to construct RPC requests and responses without precompiled service information. It is used by gRPCurl, which can be used to introspect server protos and send/receive test RPCs.
- To start the reflection example server on its default port of 50051, run:
$ ./build/install/example-reflection/bin/reflection-server
- After enabling Server Reflection in a server application, you can use gRPCurl to check its services. Instructions on how to install and use gRPCurl can be found at gRPCurl Installation
After installing gRPCurl, open a new terminal and run the commands from the new terminal.
List all the services exposed at a given port
$ grpcurl -plaintext localhost:50051 list
Output
grpc.reflection.v1alpha.ServerReflection
helloworld.Greeter
List all the methods of a service
$ grpcurl -plaintext localhost:50051 helloworld.Greeter
Output
helloworld.Greeter.SayHello
Describe services and methods
The describe command inspects a method given its full name(in the format of
<package>.<service>.<method>).
$ grpcurl -plaintext localhost:50051 describe helloworld.Greeter.SayHello
Output
helloworld.Greeter.SayHello is a method:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
Inspect message types
We can use the describe command to inspect request/response types given the full name of the type
(in the format of <package>.<type>).
Get information about the request type:
$ grpcurl -plaintext localhost:50051 describe helloworld.HelloRequest
Output
helloworld.HelloRequest is a message:
message HelloRequest {
string name = 1;
}
Call a remote method
We can send RPCs to a server and get responses using the full method name
(in the format of <package>.<service>.<method>). The -d <string> flag represents the request data
and the -format text flag indicates that the request data is in text format.
$ grpcurl -plaintext -format text -d 'name: "gRPCurl"' \
localhost:50051 helloworld.Greeter.SayHello
Output
message: "Hello gRPCurl"