Releases: tag1consulting/goose
Releases · tag1consulting/goose
v0.15.1
0.15.1 November 19, 2021
- #374 renamed
simple-with-session.rs
tosession.rs
andsimple-closure.rs
toclosure.rs
to avoid confusion with thesimple.rs
example as they all do different things - #385 properly configure
--running-metrics VALUE
when set manually - #382 set client timeout to 60 seconds by default, used for all requests made; introduce
--timeout VALUE
where VALUE is seconds as integer or a float; timeout can be configured programatically usingGooseDefault::Timeout
- #381 display requests per second graph on the HTML report
v0.15.0
0.15.0 November 2, 2021
- #372 de-deduplicate documentation, favoring The Goose Book
- #373 API change: introduce
GooseRequest
andGooseRequestBuilder
for more flexibility when making requests
o removeGooseUser::post_named
,GooseUser::head_named
,GooseUser::delete_named
,GooseUser::goose_get
,GooseUser::goose_put
,GooseUser::goose_head
,GooseUser::goose_put
,GooseUser::goose_patch
,GooseUser::goose_delete
, andGooseUser::goose_send
o adds or modifies helpersGooseUser::get
,GooseUser::get_named
,GooseUser::post
,GooseUser::post_form
,GooseUser::post_json
,GooseUser::head
, andGooseUser::delete
o replacesGooseUser::goose_send
withGooseUser::request
which accepts aGooseRequest
object
o fixes [#370] (seeGooseRequestBuilder::expect_status_code
)
v0.14.1
0.14.1 October 13, 2021
- #364 add link from the Developer Documentation to The Git Book
- #368 fix performance regression: optimize fastpath if no delay between tasks
v0.14.0
0.14.0 September 15, 2021
- #361 convert
README.md
(and enhance) intoThe Goose Book
- #356 API change: make
GooseAttack.execute
async,main()
function signature changed to:#[tokio::main] fn main() -> Result<(), GooseError> {
- #355 API change: add the possibility to attach custom session data
GooseUserData
to eachGooseUser
- #355 API change: change
GooseTask
signature to take a mutable reference ofGooseUser
:async fn example_task_function(user: &mut GooseUser) -> GooseTaskResult {
- #358 API change: update
GooseTaskSet::set_wait_time()
to acceptstd::time::Duration
instead ofusize
allowing more granularity - #355 remove
Clone
trait fromGooseUser
andGooseAttack
- #359 use request name when displaying errors to avoid having a large volume of distinct error for the same endpoint when using path parameters
- #360 updated
tungstenite
dependency to0.15
v0.13.3
0.13.3 August 25, 2021
- document GooseConfiguration fields that were only documented as gumpdrop parameters (in order to generate new lines in the help output) so now they're also documented in the code
- fix panic when
--no-task-metrics
is enabled and metrics are printed; add tests to prevent further regressions
v0.13.2
0.13.2 August 19, 2021
- fix broken links within the documentation; general documentation cleanups
- introduce
--startup-time
which can be set together with--users
instead of using--hatch-rate
to configure how quickly to start users - fix
--run-time
to always start counting after all users are fully started - include starting and stopping time in addition to running time in text metrics and html report
v0.13.1
0.13.1 August 13, 2021
- add test to confirm a
base_url
can include a path and be joined with a relative path - fix documentation typo
- introduce
pretty
log format for--error-format
,--debug-format
,--request-format
, and--task-format
- clippy cleanups: don't borrow references that are immediately dereferenced by the compiler: https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
- consistently report users simulated, target host(s), start and end times, and total duration of test both in text metrics and html report
- updated httpmock dev dependency to
0.6
v0.13.0
0.13.0 July 19, 2021
- enable
gzip
support and set Accept-Encoding header by default in the client; disable with--no-gzip
orGooseDefault::NoGzip
- document how to add custom cookies (https://docs.rs/goose/*/goose/goose/struct.GooseUser.html#custom-cookies)
- update
rustc_version
dependency to0.4
- include client request headers in
GooseRequestMetric
so they show up in the request log and the debug log - introduce
GooseRawMetric
which contains themethod
,url
,headers
andbody
of the client request made, and is now contained inraw
field of theGooseRequestMetric
(API change) - introduce
--request-body
(andGooseDefault::RequestBody
) which when enabled shows up in thebody
field of theGooseRawMetric
- add
GooseRawMetric
to the request log, debug log and error log
v0.12.1
0.12.1 July 15, 2021
- rename
rustls
feature torustls-tls
sotests/controller.rs
can build with therustls
library; updatetungstenite
to0.14
andtokio-tungstenite
=0.15
to allow building withrustls
- documentation cleanup; properly rename
GooseDefault::RequestFormat
and fix links - always configure
GooseConfiguration.manager
andGooseConfiguration.worker
; confirm Manager is enabled when setting--expect-workers
- moved
GooseConfiguration
,GooseDefault
, andGooseDefaultType
into newsrc/config.rs
file; standardized configuration precedence through internalGooseConfigure
trait definingget_value()
for all supported types; general improvements to configuration documentation
v0.12.0
0.12.0 July 8, 2021
- remove internal-only functions and structures from documentation, exposing only what's useful to consumers of the Goose library (API change)
ogoose::initialize_logger()
,Socket
reduced topub(crate)
scope
ogoose::controller::GooseControllerProtocol
,GooseControllerRequestMessage
,GooseControllerResponseMessage
,GooseControllerRequest
,GooseControllerResponse
,GooseControllerState
,::controller_main()
reduced topub(crate)
scope
ogoose::manager::manager_main()
reduced topub(crate)
scope
ogoose::metrics::GooseRequestMetric::new()
,::set_final_url()
,::set_response_time()
, and::set_status_code()
,::per_second_calculations()
,format_number()
,merge_times()
,update_min_time()
,update_max_time()
,calculate_response_time_percentile()
, andprepare_status_codes()
reduced topub(crate)
scope
ogoose::metrics::GooseRequestMetricAggregate::new()
,::set_response_time()
, and::set_status_code()
reduced topub(crate)
scope
ogoose::metrics::GooseTaskMetric::new()
and::set_time()
reduced topub(crate)
scope
ogoose::metrics::GooseMetrics::initialize_task_metrics()
and::print_running()
,::fmt_requests()
,::fmt_tasks()
,::fmt_task_times()
,::fmt_response_times()
,::fmt_percentiles()
,::fmt_status_codes()
and::fmt_errors()
reduced topub(crate)
scope
o fromgoose::metrics::GooseMetrics
reducedfinal_metrics
,display_status_codes
anddisplay_metrics
fields topub(crate)
scope
ogoose::metrics::GooseErrorMetric::new()
reduced topub(crate)
scope
ogoose::logger::logger_main()
reduced topub(crate)
scope
ogoose::user::user_main()
reduced topub(crate)
scope
ogoose::worker::worker_main()
reduced topub(crate)
scope - move all metrics-related stuctures and methods into
metrics.rs
, rename for consistency, and improve documentation (API change)
ogoose::GooseRawRequest
changed togoose::metrics::GooseRequestMetric
ogoose::GooseRequest
changed togoose::metrics::GooseRequestMetricAggregate
ogoose::GooseRawTask
changed togoose::metrics::GooseTaskMetric
ogoose::GooseRawTask
changed togoose::metrics::GooseTaskMetricAggregate
ogoose::update_duration()
changed togoose::metrics::update_duration()
and reduced topub(crate)
scope
ogoose::sync_metrics()
changed togoose::metrics::sync_metrics()
and reduced topub(crate)
scope
ogoose::reset_metrics()
changed togoose::metrics::reset_metrics()
and reduced topub(crate)
scope
ogoose::receive_metrics()
changed togoose::metrics::receive_metrics()
and reduced topub(crate)
scope
ogoose::record_error()
changed togoose::metrics::record_error()
and reduced topub(crate)
scope - expose utility functions used by Goose for use by load tests
ogoose::util::parse_timespan()
,::gcd()
,::median()
,::truncate_string()
,::timer_expired()
,::ms_timer_expired()
,::get_hatch_rate()
, and::is_valid_host()
were elevated topub
scope - introduce (disabled by default) Coordinated Omission Mitigation, configured through
--co-mitigation
with the following options: "disabled" (default0), "average", "minimum", "maximum"; (or withGooseDefault::CoordinatedOmissionMitigation
) - (EXPERIMENTAL) Coordinated Omission Mitigation tracks the cadence that a GooseUser loops through all GooseTasks, (also accounting for time spent sleeping due to
.set_wait_time()
); it detects stalls (network or upstream server) that block and prevent other requests from running, and backfills the metrics to mitigate this loss of data (based on the general implementation found in HdrHistogram - When displaying metrics (via the cli and the html report) show both "raw" (actual) metrics and "coordinated omission mitigation" (back-filled with statistically generated) metrics, and the standard deviation between the average times for each
- introduce
GooseLog
enum for sendingGooseDebug
,GooseRequestMetric
andGooseTaskMetric
objects to the Logger thread for logging to file - introduce
--tasks-file
run-time option for loggingGooseTaskMetric
s to file - rename
GooseTaskMetric
toGooseTaskMetricAggregate
, and introduceGooseTaskMetric
which is a subset ofGooseRequestMetric
only used for logging - introduce
--error-file
run-time option for loggingGooseErrorMetric
s to file - introduce
GooseLogFormat
enum for formatting all logs; add--task-format
and--error-format
using new enum, update--requests-format
and--debug-format
. - renamed
--log-file
to--goose-log
,--requests-file
to--request-log
,--requests-format
to--request-format
,--tasks-file
to--task-log
,--tasks-format
to--task-format
,--error-file
to--error-log
, and--debug-file
to--debug-log