- Introduce new options --force-jaeger-sample to ensure yab requests are traced.
- Fix: output benchmark errors in JSON format.
- Fix gRPC server stream handling to be compatible with Java gRPC server.
- Fix parsing of protobuf responses/error-details containing Any type fields, by maintaining reflection server connection until end of the request.
- Add
stream-delay-close-send
option which delays client send stream closure. - New: gRPC details are now printed along with the error if there are any.
- Fix byte parsing to allow 8-bit signed integers to match the Thrift spec & other language implementations.
- Add support for gRPC streaming:
- Support of benchmark and curl-like fashion mode
- Multiple requests can be passed through the CLI option
--request
, optionally delimited by space or comma--request='{"request": "1"} {"request": "2"}'
or--request='{"request": "1"},{"request": "2"}'
- Requests can be interactively passed from STDIN by setting CLI option
--request='-'
. - Interval between each consecutive stream requests can be ensured by setting CLI option
--stream-interval='5s'
, this ensures there is at least an interval of 5 seconds between requests.
- Add option
grpc-max-response-size
to set the maximum response size of gRPC response. Default to 4mb.
- Add support for benchmark output in JSON format.
- Fix panic due to upcasting serializer to disable envelopes.
- Fix gRPC reflection requests not propogating routing key and routing delegate.
- When Thrift method is not found, list all available methdods in service::method to match the passed-in method format.
- Improved errors when Proto service is not found by including list of all available services.
- Fix bug that prevented nested JSON to be marshalled into Proto encoded requests.
- Fix bug that required users to explictly specify encoding using
-e
when making health requests. Now health requests default to Proto when using gRPC and Thrift when using TChannel.
- Add support for grpc/proto when using
--health
. - Fix bug that prevented yab templates to work with proto. Simple YAML yab templates now work with proto, though not all template substitutions are supported yet.
- Allow
null
in request templates to imply skipping the field. - Allow specifying HTTP method for HTTP requests using
--http-method
. - Add support for URLs in peer lists.
- Add support for per-peer stats from benchmarks using
--per-peer-stats
. - Fix bug where benchmark stats were missing procedure if
--health
was used.
- Fix bug where values specified in templates as
"y"
were being converted to true.
- Fix grpc reflection stream being closed abnormally causing the reflection server to see an unexpected client disconnect.
- Fix a bug for incorrectly dialing the reflection server when
peers contain the
grpc://
scheme instead of just host:port pairs.
- Support protobuf encoding using:
- Precompiled FileDescriptorSets with flags
--file-descriptor-set-bin
or-F
. - Using the grpc reflection API if no descriptor set is specified.
- Precompiled FileDescriptorSets with flags
- Encoding now defaults to
proto
if the method is of formpackage.Service/Method
.
- Add Jaeger throttling config.
- Add gRPC+Thrift support. Protobuf is not yet supported.
- Allow build-time plugins to register middleware for request modification.
- Allow build-time plugins to register custom CLI flags.
- Support using yab as a shebang for files ending with
.yab
.
- Fix timeouts specified in templates being ignored.
- Fix for HTTP not respecting context timeout.
- Support disabling Thrift envelopes from YAML templates.
- Add template argument support, which allows passing parameters to YAML templates.
- Support for custom peer providers to provide a list of peers such as over HTTP.
- Support more options in YAML templates such peers, baggage, and other transport headers.
- Rename method to procedure, and maintain aliases for
--method
. - Allow TChannel peers to be specified using a URI with a TChannel scheme,
e.g.,
tchannel://host:port
.
- Support for YAML request templates with CLI overrides.
- Add --no-jaeger to disable Jaeger.
- Upgrade to TChannel 1.2.0 and add Open Tracing support.
- Support set constants in Thrift files.
- Add support for headers with flags like -H key:value.
- Add support for baggage headers with flags like -B key:value when baggage propagation is enabled with --jaeger.
- Add support for routing key, routing delegate, and shard key, for both HTTP and TChannel, using --rk, --rd, and --sk flags.
- Add error rate to benchmarking output.
- Improve boolean parsing for Thrift input.
- Check the system XDG directory for a config file.
- Allow unlimited duration or requests when benchmarking. (#105)
- Improve default format detection:
- If
-t
is specified, assume Thrift - Otherwise, assume JSON
- If
- Improved support for quoted strings as JSON payloads.
- Add RPC-Encoding header for HTTP requests for compatibility with the latest version of YARPC.
- Any peers specified on the command-line should override all peer options set in the defaults.ini. (#104)
- Allow JSON to be used with non-map requests and responses.
- Expose HTTP response body on non-OK responses.
- Expose TChannel call status ("ok") and HTTP status code ("code" on successful responses.
- Fix ini parsing of option groups. (#82)
- Add support for TMultiplexedProtocol when using HTTP+Thrift using
--multiplexed-thrift
.
- Fix for benchmarking taking longer than duration at low RPS. (#73)
- Fix
--peer-list
not loading the peer list. Regression from 0.5.0. (#70)
- Support for reading default options using XDG base directories.
- Round robin peer-selection when creating connections for benchmarking.
- Allow disabling Thrift envelopes for HTTP using
--disable-thrift-envelope
.
- First beta release.