Type object
File match *.hf.yaml
Schema URL https://catalog.lintel.tools/schemas/schemastore/hyperfoil-benchmark-configuration/latest.json
Source https://hyperfoil.io/schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Hyperfoil benchmark configuration

Properties

name string required

Name of the benchmark.

http http[] | http required
$schema string

This should point to either http://hyperfoil.io/schema.json or local file

agents object | object[]

Agent nodes that should drive the load.

threads integer
min=1
ergonomics object

Adjust scenario to implement common functionality out-of-the-box.

5 nested properties
repeatCookies boolean

Store cookies in session and resend them on future requests. Default is true.

userAgentFromSession boolean

Append session ID and client hostname as user agent

autoRangeCheck boolean

Inject status handler that marks the request as invalid on status 4xx or 5xx. Default is true.

stopOnInvalid boolean

Inject completion handler that will stop the session if the request has been marked as invalid. Default is true.

followRedirect enum

Automatically fire requests when the server responds with redirection. Default is NEVER.

Values: "NEVER" "LOCATION_ONLY" "HTML_ONLY" "ALWAYS"
phases object[]

Benchmark execution phases.

minItems=1
staircase object
7 nested properties
initialRampUpDuration integer | string
steadyStateDuration integer | string
rampUpDuration integer | string
initialUsersPerSec number
exclusiveMin=0
incrementUsersPerSec number
exclusiveMin=0
maxIterations integer
min=1
maxSessions integer
min=1
usersPerSec positiveNumber | object
maxSessions integer
min=1
duration integer | string
maxDuration integer | string
scenario object | sequence[]

Definitions

agent string | number | boolean | object
ergonomics object

Adjust scenario to implement common functionality out-of-the-box.

repeatCookies boolean

Store cookies in session and resend them on future requests. Default is true.

userAgentFromSession boolean

Append session ID and client hostname as user agent

autoRangeCheck boolean

Inject status handler that marks the request as invalid on status 4xx or 5xx. Default is true.

stopOnInvalid boolean

Inject completion handler that will stop the session if the request has been marked as invalid. Default is true.

followRedirect enum

Automatically fire requests when the server responds with redirection. Default is NEVER.

Values: "NEVER" "LOCATION_ONLY" "HTML_ONLY" "ALWAYS"
http object

HTTP connection pool configuration.

host string required

Target hostname. For simplicity this can include scheme and port, too.

protocol enum
Values: "http" "https"
port integer

Target TCP port

min=1max=65535
addresses string[]

List of IP addresses that should be used. The connections will be randomly created to addresses in this list, or using host if it's empty.

allowHttp1x boolean

Allow using HTTP 1.0 and HTTP 1.1 connections. Default is true.

allowHttp2 boolean

Allow using HTTP 2.0 connections. Default is true.

connectionStrategy enum

Connection pooling model. Default is SHARED_POOL.

Values: "SHARED_POOL" "SESSION_POOLS" "OPEN_ON_REQUEST" "ALWAYS_NEW"
directHttp2 boolean

Start HTTP 2.0 connections without HTTP 1.x -> 2.0 upgrade. Default is false.

keyManager object

TLS key manager for setting up client certificates.

6 nested properties
storeType string
storeFile string
password string
alias string
certFile string
keyFile string
maxHttp2Streams integer
min=1
sharedConnections positiveInteger | object

Maximum number of connections to the server, shared between all phases and sessions. Default is 1.

pipeliningLimit integer
min=1
requestTimeout integer | string
rawBytesHandlers boolean

Add handlers to support parsing raw HTTP responses. Default is true.

trustManager object

TLS trust manager for setting up server certificates.

4 nested properties
storeType string
storeFile string
password string
certFile string
useHttpCache boolean

Make use of HTTP cache on client-side. If multiple authorities are involved, disable the HTTP cache for all of them to achieve the desired outcomes. The default is true except for wrk/wrk2 wrappers where it is set to false.

incrementableInteger positiveInteger | object
incrementableNumber positiveNumber | object
positiveInteger integer
positiveNumber number
phase object
startTime integer | string
startAfterStrict phaseReference | phaseReference[]
duration integer | string
maxDuration integer | string
maxIterations integer
min=1
scenario object | sequence[]
forks object[] | object

Concurrent sub-phases sharing the limits and users arrivals.

fork object
weight number
scenario object | sequence[]
phaseReferenceList phaseReference | phaseReference[]
phaseReference string | object
rampRatePhase

Add new users to the system at varying rate.

scenario object | sequence[]
sequence object
step object | enum
timeMillis integer | string
timeNanos string
io.hyperfoil.api.config.ListBuilder object
io.hyperfoil.api.config.SLABuilder object
blockedRatio number
errorRatio number
invalidRatio number
meanResponseTime string
window string
io.hyperfoil.api.config.SLABuilder$LimitsBuilder object
io.hyperfoil.api.config.SLABuilder$ListBuilder object
io.hyperfoil.api.processor.Processor$Builder object
addItem object
3 nested properties
fromVar string
toVar string
value string
clearHttpCache object
closeConnection object
getIndex object
3 nested properties
getItem object
3 nested properties
gzipInflator object
2 nested properties
logInvalid object
markRequestInvalid object
queue object
6 nested properties
concurrency integer
format enum
Values: "BYTEBUF" "BYTES" "STRING"
maxSize integer
sequence string
var string
restartSequence object
setItem object
4 nested properties
io.hyperfoil.api.processor.RawBytesHandler$Builder object
transferSizeRecorder object
1 nested properties
key string
io.hyperfoil.api.processor.Transformer$Builder object
actions object
4 nested properties
format enum
Values: "BYTEBUF" "BYTES" "STRING"
pattern string
var string
io.hyperfoil.api.session.Action$Builder object
addItem object
3 nested properties
fromVar string
toVar string
value string
clearHttpCache object
getIndex object
3 nested properties
getItem object
3 nested properties
markRequestInvalid object
restartSequence object
setItem object
4 nested properties
io.hyperfoil.core.builders.AllConditions$Builder object
io.hyperfoil.core.builders.BoolCondition$Builder object
fromVar string
value boolean
io.hyperfoil.core.builders.IntSourceBuilder object
fromVar string
value integer
io.hyperfoil.core.builders.IntSourceBuilder$ListBuilder object
io.hyperfoil.core.builders.ObjectSourceBuilder object
fromVar string
value string
io.hyperfoil.core.builders.StringCondition$Builder object
caseSensitive boolean
endsWith string
equalTo string
fromVar string
isSet boolean
matchVar string
negate boolean
notEqualTo string
startsWith string
value string
io.hyperfoil.core.builders.StringConditionBuilder object
caseSensitive boolean
endsWith string
equalTo string
matchVar string
negate boolean
notEqualTo string
startsWith string
value string
io.hyperfoil.core.generators.ActionsTransformer$Builder object
format enum
Values: "BYTEBUF" "BYTES" "STRING"
pattern string
var string
io.hyperfoil.core.generators.IntValueProviderBuilder object
fromVar string
value integer
io.hyperfoil.core.generators.Pattern$TransformerBuilder object
pattern string
io.hyperfoil.core.generators.RandomCsvRowStep$Builder object
io.hyperfoil.core.generators.RandomCsvRowStep$Builder$ColumnsBuilder object
io.hyperfoil.core.generators.RandomFileStep$Builder object
filenameVar string
toVar string
io.hyperfoil.core.generators.RandomItemStep$Builder object
file string
fromVar string
toVar string
io.hyperfoil.core.generators.RandomUUIDStep$Builder object
toVar string
io.hyperfoil.core.generators.StringGeneratorImplBuilder object
fromVar string
pattern string
value string
io.hyperfoil.core.generators.TemplateStep$Builder object
pattern string
toVar string
io.hyperfoil.core.generators.WeightedGenerator$Builder object
io.hyperfoil.core.handlers.ArrayRecorder$Builder object
format enum
Values: "BYTEBUF" "BYTES" "STRING"
maxSize integer
silent boolean
toVar string
io.hyperfoil.core.handlers.CloseConnectionHandler$Builder object
io.hyperfoil.core.handlers.CollectionRecorder$Builder object
format enum
Values: "BYTEBUF" "BYTES" "STRING"
toVar string
io.hyperfoil.core.handlers.CountRecorder$Builder object
toVar string
io.hyperfoil.core.handlers.GzipInflatorProcessor$Builder object
io.hyperfoil.core.handlers.MarkRequestInvalidAction$Builder object
io.hyperfoil.core.handlers.NewSequenceAction$Builder object
concurrencyPolicy enum
Values: "FAIL" "WARN"
forceSameIndex boolean
sequence string
io.hyperfoil.core.handlers.QueueProcessor$Builder object
concurrency integer
format enum
Values: "BYTEBUF" "BYTES" "STRING"
maxSize integer
sequence string
var string
io.hyperfoil.core.handlers.StoreIntProcessor$Builder object
override boolean
toVar string
io.hyperfoil.core.handlers.StoreProcessor$Builder object
format enum
Values: "BYTEBUF" "BYTES" "STRING"
toVar string
io.hyperfoil.core.handlers.StoreProcessor$LegacyBuilder object
format enum
Values: "BYTEBUF" "BYTES" "STRING"
toVar string
io.hyperfoil.core.handlers.TransferSizeRecorder$Builder object
key string
io.hyperfoil.core.handlers.json.JsonHandler$Builder object
delete boolean
format enum
Values: "BYTEBUF" "BYTES" "STRING"
query string
toArray string
toVar string
unquote boolean
io.hyperfoil.core.steps.AddToIntAction$Builder object
orElseSetTo integer
value integer
var string
io.hyperfoil.core.steps.AwaitDelayStep$Builder object
key string
io.hyperfoil.core.steps.AwaitVarStep$Builder object
var string
io.hyperfoil.core.steps.BreakIfFinishedStep$Builder object
io.hyperfoil.core.steps.ForeachStep$Builder object
counterVar string
dependency string
fromVar string
sequence string
io.hyperfoil.core.steps.JsonStep$Builder object
delete boolean
format enum
Values: "BYTEBUF" "BYTES" "STRING"
fromVar string
query string
toArray string
toVar string
unquote boolean
io.hyperfoil.core.steps.LogAction$Builder object
message string
io.hyperfoil.core.steps.LoopStep$Builder object
counterVar string
repeats integer
steps step[]
io.hyperfoil.core.steps.NextSequenceStep$Builder object
name string
io.hyperfoil.core.steps.NoopStep$Builder object
io.hyperfoil.core.steps.RestartSequenceAction$Builder object
io.hyperfoil.core.steps.RestartSequenceStep$Builder object
io.hyperfoil.core.steps.ScheduleDelayStep$Builder object
duration string
fromLast null
fromNow null
key string
max string
min string
random enum
Values: "CONSTANT" "LINEAR" "NEGATIVE_EXPONENTIAL"
type enum
Values: "FROM_LAST" "FROM_NOW"
io.hyperfoil.core.steps.ScheduleDelayStep$ThinkTimeBuilder object
duration string
fromLast null
fromNow null
key string
max string
min string
random enum
Values: "CONSTANT" "LINEAR" "NEGATIVE_EXPONENTIAL"
type enum
Values: "FROM_LAST" "FROM_NOW"
io.hyperfoil.core.steps.SetAction$IntArrayBuilder object
fromVar string
size integer
io.hyperfoil.core.steps.SetAction$ObjectArrayBuilder object
fromVar string
size integer
io.hyperfoil.core.steps.StopStep$Builder object
io.hyperfoil.core.steps.StopwatchBeginStep$Builder object
io.hyperfoil.core.steps.StringToIntAction$Builder object
fromVar string
toVar string
io.hyperfoil.core.steps.TimestampStep$Builder object
localeCountry string
pattern string
toVar string
io.hyperfoil.core.steps.UnsetAction$Builder object
var string
io.hyperfoil.core.steps.collections.AddItemAction$Builder object
fromVar string
toVar string
value string
io.hyperfoil.core.steps.collections.BoolFilter$Builder object
value boolean
io.hyperfoil.core.steps.collections.GetIndexAction$Builder object
io.hyperfoil.core.steps.collections.GetItemAction$Builder object
io.hyperfoil.core.steps.collections.RemoveItemAction$Builder object
io.hyperfoil.core.steps.collections.SetItemAction$Builder object
io.hyperfoil.core.steps.collections.StringFilter$Builder object
caseSensitive boolean
endsWith string
equalTo string
matchVar string
negate boolean
notEqualTo string
startsWith string
value string
io.hyperfoil.core.steps.data.AddToSharedCounterAction$Builder object
fromVar string
key string
operator enum
Values: "ADD" "SUBTRACT"
value integer
io.hyperfoil.core.steps.data.GetSharedCounterAction$Builder object
key string
toVar string
io.hyperfoil.core.steps.data.PublishAgentDataAction$Builder object
fromVar string
name string
io.hyperfoil.core.steps.data.PublishGlobalCountersAction$Builder object
io.hyperfoil.core.steps.data.PublishGlobalCountersAction$Builder$VarsBuilder object
io.hyperfoil.core.steps.data.PullSharedMapStep$Builder object
io.hyperfoil.core.steps.data.PushSharedMapStep$Builder object
io.hyperfoil.core.steps.data.ReadAgentDataAction$Builder object
name string
toVar string
io.hyperfoil.core.steps.data.SetSharedCounterAction$Builder object
fromVar string
key string
value integer
io.hyperfoil.core.util.DoubleIncrementBuilder object
base number
increment number
io.hyperfoil.example.DivideStep$Builder object
divisor integer
fromVar string
toVar string
io.hyperfoil.http.api.StatusHandler$Builder object
action object
counter object
5 nested properties
add integer
expectStatus integer
init integer
set integer
var string
multiplex object
stats object
io.hyperfoil.http.handlers.ActionStatusHandler$Builder object
io.hyperfoil.http.handlers.CountHeadersHandler$Builder object
io.hyperfoil.http.handlers.LogInvalidHandler$BodyHandlerBuilder object
io.hyperfoil.http.handlers.LogInvalidHandler$HeaderHandlerBuilder object
io.hyperfoil.http.handlers.MultiplexStatusHandler$Builder object
io.hyperfoil.http.handlers.RangeStatusValidator$Builder object
max integer
min integer
io.hyperfoil.http.handlers.RecordHeaderTimeHandler$Builder object
header string
metric string
unit string
io.hyperfoil.http.handlers.StatusToCounterHandler$Builder object
add integer
expectStatus integer
init integer
set integer
var string
io.hyperfoil.http.handlers.StatusToStatsHandler$Builder object
io.hyperfoil.http.handlers.StoreStatusHandler$Builder object
toVar string
io.hyperfoil.http.html.FetchResourceHandler$Builder object
concurrency integer
maxResources integer
metric string[]
io.hyperfoil.http.html.TagAttributeHandlerBuilder object
attribute string
format enum
Values: "BYTEBUF" "BYTES" "STRING"
tag string
toArray string
toVar string
io.hyperfoil.http.steps.AwaitAllResponsesStep$Builder object
io.hyperfoil.http.steps.ClearHttpCacheAction$Builder object
io.hyperfoil.http.steps.FormGenerator$Builder object
io.hyperfoil.http.steps.FormGenerator$InputBuilder object
fromVar string
name string
pattern string
value string
io.hyperfoil.http.steps.HttpRequestStepBuilder object
method enum
Values: "GET" "HEAD" "POST" "PUT" "DELETE" "OPTIONS" "PATCH" "TRACE" "CONNECT"
metric string[] | string
sync boolean
timeout string
io.hyperfoil.http.steps.HttpRequestStepBuilder$CompensationBuilder object
io.hyperfoil.http.steps.HttpRequestStepBuilder$CompressionBuilder object
encoding string
type enum
Values: "CONTENT_ENCODING" "TRANSFER_ENCODING"
io.hyperfoil.http.steps.HttpRequestStepBuilder$HeadersBuilder object
io.hyperfoil.http.steps.HttpRequestStepBuilder$PartialHeadersBuilder object
fromVar string
pattern string