chaperon v0.3.1 Chaperon View Source
Chaperon is a HTTP service load & performance testing tool.
Link to this section Summary
Functions
Connect the current node to a Chaperon cluster without taking on any work (not running any load test Session tasks).
Runs a given load_test module's scenarios concurrently, outputting metrics at the end.
Called when an application is started.
Link to this section Functions
Connect the current node to a Chaperon cluster without taking on any work (not running any load test Session tasks).
Useful if you want to connect to a running cluster for inspecting running load tests and kicking off new ones without performing any load testing work on the connecting node.
Runs a given load_test module's scenarios concurrently, outputting metrics at the end.
lt_mod
LoadTest module to be executedoptions
List of options to be used. Valid values are::print_results
If set totrue
, will print all action results.:export
Can be set to any module implementing theChaperon.Exporter
behaviour. Defaults toChaperon.Export.CSV
. When usingChaperon.Export.S3
it defaults to the CSV export format. You can use another export format by wrapping it in a tuple, like so:{Chaperon.Export.S3, Chaperon.Export.JSON}
:output
Can be set to a file path:tag
Can be set to be used when using the default export filename. Allows adding a custom 'tag' string as a prefix to the generated result output filename.:metrics
Filtering options for metrics Valid filters:- (metric) -> boolean - [metric_type]
Example
alias Chaperon.Export.JSON
# Prints results & outputs metrics in CSV (default) format at the end
Chaperon.run_load_test MyLoadTest, print_results: true
# Doesn't print results & outputs metrics in JSON format at the end
Chaperon.run_load_test MyLoadTest, export: JSON
# Outputs metrics in CSV format to metrics.csv file
Chaperon.run_load_test MyLoadTest, output: "metrics.csv"
# Outputs metrics in JSON format to metrics.json file
Chaperon.run_load_test MyLoadTest, export: JSON, output: "metrics.json"
# Outputs metrics in CCSV format to "results/<date>/MyLoadTest/master-<timestamp>.csv"
Chaperon.run_load_test MyLoadTest, tag: "master"
# Outputs metrics in JSON format to "results/<date>/MyLoadTest/master-<timestamp>.json"
Chaperon.run_load_test MyLoadTest, export: JSON, tag: "master"
# Tracks only calls in MyScenario (can take any function that returns `true` or `false`)
Chaperon.run_load_test MyLoadTest, tag: "master", metrics: fn
{:call, {MyScenario, _}} ->
true
_ ->
false
end
# You can also just pass a list of metric types/names:
Chaperon.run_load_test MyLoadTest metrics: [
:run_scenario,
:call,
:post,
:my_custom_metric
]
Called when an application is started.
This function is called when an application is started using
Application.start/2
(and functions on top of that, such as
Application.ensure_started/2
). This function should start the top-level
process of the application (which should be the top supervisor of the
application's supervision tree if the application follows the OTP design
principles around supervision).
start_type
defines how the application is started:
:normal
- used if the startup is a normal startup or if the application is distributed and is started on the current node because of a failover from another node and the application specification key:start_phases
is:undefined
.{:takeover, node}
- used if the application is distributed and is started on the current node because of a failover on the nodenode
.{:failover, node}
- used if the application is distributed and is started on the current node because of a failover on nodenode
, and the application specification key:start_phases
is not:undefined
.
start_args
are the arguments passed to the application in the :mod
specification key (e.g., mod: {MyApp, [:my_args]}
).
This function should either return {:ok, pid}
or {:ok, pid, state}
if
startup is successful. pid
should be the PID of the top supervisor. state
can be an arbitrary term, and if omitted will default to []
; if the
application is later stopped, state
is passed to the stop/1
callback (see
the documentation for the c:stop/1
callback for more information).
use Application
provides no default implementation for the start/2
callback.
Callback implementation for Application.start/2
.