3.4 KiB
Stress Test client Specification
This document specifies the features a stress test client should implement in order to work with the stress testing framework. The stress test clients are executed against the existing interop test servers.
Requirements
1. A stress test client should be able to repeatedly execute one or more of the existing 'interop test cases'. It may just be a wrapper around the existing interop test client. The exact command line arguments the client should support are listed in Table 1 below.
2. The stress test client must implement a metrics server defined by metrics.proto and must expose qps as a long-valued Gauge. The client can track the overall qps in one Gauge or in multiple Gauges (for example: One per Channel or Stub).
The framework periodically queries the qps by calling the GetAllGauges()
method (the framework assumes that all the returned Gauges are qps Gauges) and uses this to determine if the stress test client is running or crashed or stalled.
Note: In this context, the term qps means interop test cases per second (not messages per second or rpc calls per second)
Table 1: Command line arguments that should be supported by the stress test client.
Note The current C++ stress client supports more flags than those listed here but those flags will soon be deprecated.
Parameter | Description |
---|---|
--server_addresses |
The stress client should accept a list of server addresses in the following format:<name_1>:<port_1>,<name_2>:<port_2>..<name_N>:<port_N> Note: <name> can be either server name or IP address.Type: string default: localhost:8080 Example: foo.foobar.com:8080,bar.foobar.com:8080 Currently, the stress test framework only passes one server address to the client. |
--test_cases |
List of test cases along with the relative weights in the following format:<testcase_1:w_1>,<testcase_2:w_2>...<testcase_n:w_n> . The test cases names are the same as those currently used by the interop clients Type: string Example: empty_unary:20,large_unary:10,empty_stream:70 (The stress client would then make empty_unary calls 20% of the time, large_unary calls 10% of the time and empty_stream calls 70% of the time.) Note: The weights need not add up to 100. |
--test_duration_secs |
The test duration in seconds. A value of -1 means that the test should run forever until forcefully terminated. Type: int default: -1 |
--num_channels_per_server |
Number of channels (i.e connections) to each server. Type: int default: 1 Note: Unfortunately, the term channel is used differently in grpc-java and C based grpc . In this context, this really means "number of connections to the server" |
--num_stubs_per_channel |
Number of client stubs per each connection to server. Type: int default: 1 |
--metrics_port |
The port at which the stress client exposes QPS metrics. Type: int default: 8081 |