This is a simpler of JMeter used to test for any gRPC server, it is not necessary to generate gRPC classes or to compile the protos binary for the service. Just a very simple for input:
- Host and port of gRPC service.
- Method of service needs testing.
- Folder path of proto files.
- Data request in JSON format.
Same as JMeter HTTP Request but for gRPC. Copy only once file jar to lib/ext of JMeter, select your protobuf folder and start making requests! No extra steps.
The JMeter gRPC Request is available at JMeter Plugins Manager, we can find here https://jmeter-plugins.org/?search=jmeter-grpc-request
- Supports Blocking Unary Calls.
- Parses proto files at runtime.
- Supports plain text and TLS connections.
- Supports authentication via metadata (JWT/Token).
- Request data with JSON format.
- Runs on Mac, Linux and build project by Maven.
Todo:
- Supports TLS connections.
- Supports authentication via metadata.
- Auto list full methods.
- Count the failed request in the report.
- Auto generate request data base on proto file.
- Supports grpc-web protocol (HTTP1.1).
All you need copy jmeter-grpc-request file jar to directory lib/ext
of JMeter and restart JMeter GUI (copy once, use forever). Binary are available from the Releases Page.
Create test script:
- Add Thread Group: right-click on the Sample Test (our Test Plan) → Add → Threads (Users) → Thread Group.
- Add GRPC Request: right-click on the newly created Thread Group → Add → Sampler → GRPC Request.
- Fill info request: host, port, method, data request, proto folder.
- Save test script.
Run test:
- Via JMeter GUI: in top bar click Run → Start.
- Via command line:
bin/jmeter -n -t <test JMX file>.jmx -l <test JMX result>.csv -j <test log file>.log -e -o <Path to output folder>
.
No. | Fields | Description |
---|---|---|
1 | Server Name or IP | Domain/IP for gRPC server |
2 | Port Number | Port for gRPC server (80/ 443) |
3 | SSL/TLS | SSL/TLS to authenticate the server |
4 | Proto Root Directory | Root directory contains proto files |
5 | Library Directory (Optional) | Using a different underlying library (googleapis) |
6 | Full Method | Full Method to test |
7 | Metadata | Metadata can be use for Store token, authentication method, etc. Two Ways to use metadata, 1. Comma separated Key:Value : - key1:value1,key2:value2 - Value should url encode with utf-8 2. Json String : - {"key1":"Value1", "key2":"value2"} Note: In gRPC Metadata value is (Key, value) both in format of (String, String), in case of nested Json Objects values, will go to request as a JsonString. |
8 | Deadline | How long gRPC clients are willing to wait for an RPC to complete |
9 | Send JSON Format With the Request | Data request with JSON format |
Example invocations can be found in the example directory.
Purpose verify that jmeter-grpc-request is really stable when performing load testing for the gRPC system. Read more Benchmark: jmter-grpc-request
- CCU: 120 user
- Duration: 30 min
In order to build JMeter GRPC Request from source, you will need:
Build a (fat) jar output in target directory, run:
mvn clean install package
- Thanks: grpc-ecosystem/polyglot
- More: https://stackoverflow.com/q/61133529/9488752
- If you like working with the request message builder at here zalopay-oss/jmeter-grpc-plugin