Load testing framework, inspired by Locust
Full Changelog: https://github.com/tag1consulting/goose/compare/0.17.1...0.17.2
scenario_index
, scenario_name
, transaction_index
and transaction_name
to the request logserde_cbor
dependency no longer required due to [#529]flume
, itertools
, strum
, strum_macros
, tokio-tungstenite
, and tungestenite
dependencies to latest versionsGaggle support has been temporarily removed in this release. Regression testing summary and details.
gaggle
feature) to allow upgrading Tokio and other dependencies.
nng
dependency and gaggle
feature--manager
, --expect-workers
, --no-hash-check
, --manager-bind-host
, --manager-bind-port
, --worker
, --manager-host
, --manager-port
and related configuration defaultsAttackMode::Manager
and AttackMode::Worker
TransactionError
to avoid over-allocating memory on the stack (see examples/session.rs
for an example of working with this)GooseRequest::builder()
Default
for GooseConfiguration
GooseDefault::Host
if set to an empty string--scenarios
(and GooseDefault::Scenarios
) so a subset of scenarios can be launched, and --scenarios-list
to display internal machine names for matching--iterations
(and GooseDefault::Iterations
) which configures each GooseUser to run a configurable number of iterations of the assigned Scenario then exit; introduces Scenario metrics which can be disabled with --no-scenario-metrics
(GooseDefault::NoScenarioMetrics
); introduces --scenario-log
and --scenario-format
(and GooseDefault::ScenarioLog
and GooseDefault::ScenarioFormat
)startuptime
(and startup_time
) TIME to controllers, setting how long the load test should spend starting configured number of usersusers
INT command on controllers during a running load testtest-plan PLAN
command allowing configuration of test plan with the controller during running and idle load testsThis release includes some significant changes. See https://github.com/tag1consulting/goose-eggs/pull/45 for an example of how to update from 0.15.2 to 0.16.0.
--no-granular-data
to --no-granular-report
--no-granular-data
to disable it and display graphs as they were until this changeutil::MovingAverage
structure and all related functions have been moved to a different namespace and made private
o GooseRequestMetricAggregate::requests_per_second
, GooseRequestMetricAggregate::errors_per_second
and GooseRequestMetricAggregate::average_response_time_per_second
have been removed
o GooseTaskMetricAggregate::tasks_per_second
has been removed
o GooseMetrics::users_per_second
has been removed
o formerly public methods report::task_metrics_template()
and report::errors_template()
have been made private
o report::graph_rps_template()
, report::graph_eps_template()
, report::graph_average_response_time_template()
, report::graph_users_per_second_template()
and report::graph_tasks_per_second_template()
have been removedINFO
level verbosity, introduce -q
to reduce Goose verbosity
o note: -v
now sets Goose to DEBUG
level verbosity which when enabled will negatively impact load test performance; set -q
to restore previous level of verbosity.print()
which is no longer required to display metrics after a load test, disable with --no-print-metrics
or GooseDefault::NoPrintMetrics
--test-plan
and GooseDefault::TestPlan
o internally represent all load tests as Vec<(usize, usize)>
l test plan
o use [FromStr] to auto convert --test-plan "{users},{timespan};{users},{timespan}", where {users} must be an integer, ie "100", and {timespan} can be integer seconds or "30s", "20m", "3h", "1h30m", etc, to internal Vec<(usize, usize)> representation
o don't allow --test-plan
together with --users
, --startup-time
, --hatch-rate
, --run-time
, --no-reset-metrics
, --manager
and --worker
o internal AttackPhase
s renamed: Starting
-> Increase
, Running
-> Maintain
, Stopping
-> Decrease
GooseTaskSet
-> Scenario
, GooseTask
-> Transaction
, GooseTaskResult
-> TransationResult
, GooseTaskEror
-> TransactionError
, WeightedGooseTasks
-> WeightedTransactions
, GooseTaskFunction
-> TransactionFunction
, test_start_task
-> test_start_transaction
, test_stop_task
-> test_stop_transaction
, register_task
-> register_transaction
, task!
-> transaction!
, --no-task-metrics
-> --no-transaction-metrics
, GooseTaskError
-> TransactionError
--status-codes
to --no-status-codes
and enable collecation and summary of status codes by defaultset_wait_time()
walking regularly to exit quickly if the load test endssimple-with-session.rs
to session.rs
and simple-closure.rs
to closure.rs
to avoid confusion with the simple.rs
example as they all do different things--running-metrics VALUE
when set manually--timeout VALUE
where VALUE is seconds as integer or a float; timeout can be configured programatically using GooseDefault::Timeout