Arbitrary gRPC message sender - grpcat
is netcat
for gRPC.
Given a protobuf definition, hello.proto
, compile it to python:
$ python3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. hello.proto
Given a service called Hello
listening on localhost
port 4444
, call the GetHello
RPC with a GetHelloRequest
message parsed from text:
$ cat get_hello_request.txt | grpcat.py localhost 4444 /hello.Hello/GetHello GetHelloRequest
The response from that request will be printed to stdout
.
grpcat
assume Python 3. Additionally, at version 0.1
grpcat
assumes that the compiled protobuf files are in the current working directory.
The test program unit_tests.py
tests grpcat.py
for the following functionality: valid command parsing from program arguments and a successful RPC server connection.
Specifically whether the program
- reads in the command line arguments as excpected
- produces the appropriate error messages on too few or too many commands
- produces the appropriate error on an invalid target service format
- fails to make a connection to the RPC server
- succeeds in connecting to the RPC server
Assumptions
- compiled modules from hello.proto
- a get_hello_request.txt with a valid message, with the appropriate field specified in the
hello.proto
, for examplename:"Joe"
.
Usage
Run unit the unit tests the following way:
$ python3 unit_tests.py
The program will output the results of the unit tests.
grpcat
is distributed under the MIT License and is copyright 2017 Gyroscope Software.
grpcat includes contributions by Daniel Osváth Londoño.