Hyperfoil

HTTP

All servers that Hyperfoil should contact must be declared in this section. Before the benchmark starts Hyperfoil agents will open connections to the target servers; if this connection fails the benchmark is terminated immediatelly.

You can either declare single target server (the default one) within this section or more of them:

http:
  host: http://example.com
  ...
http:
- host: http://example.com
  sharedConnections: 100
- host: http://example.com:8080
  sharedConnections: 50

HTTP configuration has these properties:

Property Default Description
protocol   Either http or https
host   Hostname of the server. For convenience you can use the http[s]://host[:port] inline syntax as shown above
port 80 or 443 Default is based on the protocol
sharedConnections 1 Number of connections to open. This number is split between all agents and executor threads evenly; if there are too many agents/executors each will get at least 1 connection. It is recommended to redefine this parameter.
addresses   Supply list of IPs or IP:port targets that will be used for the connections instead of resolving the host in DNS and using port as set - host and port will be used only for Host headers and SNI. If this list contains more addresses the connections will be split evenly.
requestTimeout 30 seconds Default request timeout, this can be overridden in each httpRequest.
allowHttp1x true Allow HTTP 1.1 for connections (e.g. during ALPN).
allowHttp2x true Allow HTTP 2.0 for connections (e.g. during ALPN). If both 1.1 and 2.0 are allowed and https is not used (which would trigger ALPN) Hyperfoil will use HTTP 1.1. If only 2.0 is allowed Hyperfoil will start with HTTP 1.1 and perform protocol upgrade to 2.0.
directHttp2 false Start with H2C HTTP 2.0 without protocol upgrade. Makes sense only for plain text (http) connections. Currently not implemented.
maxHttp2Streams 100 Maximum number of requests concurrently enqueued on single HTTP 2.0 connection.
pipeliningLimit 1 Maximum number of requests pipelined on single HTTP 1.1 connection.
rawBytesHandlers true Enable or disable using handlers that process HTTP response raw bytes.
keyManager   TLS key manager for setting up client certificates.
trustManager   TLS trust manager for setting up server certificates.

KeyManager configuration

All files are loaded when the benchmark is constructed, e.g. on the machine running CLI. You don’t need to upload any files to controller or agent machines.

Property Default Description
storeType JKS Implementation of the store.
storeFile   Path to a file with the store.
password   Password for accessing the store file.
alias   Keystore alias.
certFile   Path to a file with the client certificate.
keyFile   Path to a file with client’s private key.

TrustManager configuration

All files are loaded when the benchmark is constructed, e.g. on the machine running CLI. You don’t need to upload any files to controller or agent machines.

Property Default Description
storeType JKS Implementation of the store.
storeFile   Path to a file with the store.
password   Password for accessing the store file.
certFile   Path to a file with the server certificate.