A utility for load testing gRPC services with flexible configuration for scenarios, concurrency, duration, and report formats.
Run one or multiple scenarios concurrently
- Test by number of requests or duration
- Control concurrency levels
- Support for limiting requests per second (RPS)
- Multiple report formats: print, json, html
All reports are saved to the ./reports directory
go run main.go [flags]
Examples:
- Simple run by number of requests:
go run main.go -addr=localhost:50051 -scenarios=users_auth_register -requests=100 -concurrency=10
- Run by duration (without RPS limitation):
go run main.go -addr=localhost:50051 -scenarios=users_auth_register -duration=10s -concurrency=20
- Run with fixed RPS:
go run main.go -addr=localhost:50051 -scenarios=users_auth_register -duration=10s -rpc=100 -concurrency=10
- Multiple scenarios in a single run:
go run main.go -addr=localhost:50051 -scenarios="users_auth_register,users_auth_login" -requests=500 -concurrency=20
- HTML report:
go run main.go -addr=localhost:50051 -scenarios=users_auth_register -requests=1000 -report=html
Flag Description
-addr
gRPC server address (default: localhost:50051)scenarios
Comma-separated list of scenario keys (registered in the code)concurrency
Number of concurrent workers per scenario (default: 10)requests
Total number of requests (if specified, duration is ignored)duration
Time duration to run the test (e.g., 10s)rpc
Requests per second (for duration mode)timeout
Timeout for each request (default: 3s)report
Report format: print, json, html (default: print)
All reports are saved in the ./reports directory:
- report_.json — structured result
- report_.html — a nicely formatted visual report (if -report=html is selected)
Scenarios are registered in the code and may contain:
- Name
- Main function (Call(ctx))
- An optional Init() function (for data setup)
- Dependency on another scenario (DependsOn)