Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zalopay-oss/jmeter-grpc-request
JMeter gRPC Request load test plugin for gRPC
https://github.com/zalopay-oss/jmeter-grpc-request
benchmark grpc hacktoberfest jmeter jmeter-grpc-request jmeter-plugin load-testing
Last synced: 2 months ago
JSON representation
JMeter gRPC Request load test plugin for gRPC
- Host: GitHub
- URL: https://github.com/zalopay-oss/jmeter-grpc-request
- Owner: zalopay-oss
- License: apache-2.0
- Created: 2020-05-10T05:47:37.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-15T09:34:38.000Z (5 months ago)
- Last Synced: 2024-01-25T07:32:10.121Z (5 months ago)
- Topics: benchmark, grpc, hacktoberfest, jmeter, jmeter-grpc-request, jmeter-plugin, load-testing
- Language: Java
- Homepage:
- Size: 105 MB
- Stars: 168
- Watchers: 8
- Forks: 63
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Lists
- awesome-jmeter - JMeter gRPC Request - JMeter gRPC Request load test plugin. (Performance Testing / RPC Frameworks)
- awesome-stars - zalopay-oss/jmeter-grpc-request - JMeter gRPC Request load test plugin for gRPC (Java)
README
# JMeter gRPC Request
This sampler JMeter lets you send an gRPC request to a server. It's as simple as a HTTP Request.
[![Javadocs](https://www.javadoc.io/badge/org.apache.jmeter/ApacheJMeter_core.svg)](https://www.javadoc.io/doc/org.apache.jmeter/ApacheJMeter_core)
[![Stack Overflow](https://img.shields.io/:stack%20overflow-jmeter-brightgreen.svg)](https://stackoverflow.com/questions/tagged/jmeter)[简体中文](./README.zh-CN.md) | English
## What is it
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*
## Features
- 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:*
- [x] *Supports TLS connections.*
- [x] *Supports authentication via metadata.*
- [x] *Auto list full methods.*
- [x] *Count the failed request in the report.*
- [x] *Auto generate request data base on proto file.*
- [ ] *Supports grpc-web protocol (HTTP1.1).*## Usage
### Requirements
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](https://github.com/zalopay-oss/jmeter-grpc-request/releases).
### Making a gRPC request with JMeter
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 .jmx -l .csv -j .log -e -o `.### Configurations
| 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 | Disable SSL/TLS Cert Verification | Disable SSL/TLS certificate verification (enable this function when using self-signed certificates) |
| 5 | Proto Root Directory | Root directory contains proto files |
| 6 | Library Directory (Optional) | Using a different underlying library (googleapis) |
| 7 | Full Method | Full Method to test |
| 8 | 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. |
| 9 | Deadline | How long gRPC clients are willing to wait for an RPC to complete |
| 10 | Send JSON Format With the Request | Data request with JSON format |## Running the examples
Example invocations can be found in the [example](./dist/example) directory.
## Benchmark
Purpose verify that *jmeter-grpc-request* is really stable when performing load testing for the gRPC system. Read more [Benchmark: jmter-grpc-request](./dist/benchmark)
- CCU: 120 user
- Duration: 30 min
## Build instructions
### Build requirements
In order to build JMeter GRPC Request from source, you will need:
- [Java 8](https://www.oracle.com/downloads/index.html)
- [Apache Maven 3](https://maven.apache.org/)### Build from source
Build a (fat) jar output in target directory, run:
```
mvn clean install package
```## Inspiration...
- Thanks: [grpc-ecosystem/polyglot](https://github.com/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](https://github.com/zalopay-oss/jmeter-grpc-plugin)