chaperon v0.2.3 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

Link to this function connect_to_master(node_name) View Source
connect_to_master(atom()) :: :ok | {:error, any()}
Link to this function connect_to_master_without_work(node_name) View Source
connect_to_master_without_work(atom()) :: :ok | {:error, any()}

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.

Link to this function run_load_test(lt_mod, options \\ []) View Source

Runs a given load_test module’s scenarios concurrently, outputting metrics at the end.

  • lt_mod LoadTest module to be executed
  • options List of options to be used. Valid values are:

    • :print_results If set to true, will print all action results.
    • :encode Can be set to :json, defaults to :csv
    • :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 node node.
  • {:failover, node} - used if the application is distributed and is started on the current node because of a failover on node node, 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.

Link to this function write_output_to_file(lt_mod, output, path) View Source
Link to this function write_output_to_stdio(lt_mod, output) View Source