remove internal-only functions and structures from documentation, exposing only what's useful to consumers of the Goose library (API change)
o goose::initialize_logger(), Socket reduced to pub(crate) scope
o goose::controller::GooseControllerProtocol, GooseControllerRequestMessage, GooseControllerResponseMessage, GooseControllerRequest, GooseControllerResponse, GooseControllerState, ::controller_main() reduced to pub(crate) scope
o goose::manager::manager_main() reduced to pub(crate) scope
o goose::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(), and prepare_status_codes() reduced to pub(crate) scope
o goose::metrics::GooseRequestMetricAggregate::new(), ::set_response_time(), and ::set_status_code() reduced to pub(crate) scope
o goose::metrics::GooseTaskMetric::new() and ::set_time() reduced to pub(crate) scope
o goose::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 to pub(crate) scope
o from goose::metrics::GooseMetrics reduced final_metrics, display_status_codes and display_metrics fields to pub(crate) scope
o goose::metrics::GooseErrorMetric::new() reduced to pub(crate) scope
o goose::logger::logger_main() reduced to pub(crate) scope
o goose::user::user_main() reduced to pub(crate) scope
o goose::worker::worker_main() reduced to pub(crate) scope
move all metrics-related stuctures and methods into metrics.rs, rename for consistency, and improve documentation (API change)
o goose::GooseRawRequest changed to goose::metrics::GooseRequestMetric
o goose::GooseRequest changed to goose::metrics::GooseRequestMetricAggregate
o goose::GooseRawTask changed to goose::metrics::GooseTaskMetric
o goose::GooseRawTask changed to goose::metrics::GooseTaskMetricAggregate
o goose::update_duration() changed to goose::metrics::update_duration() and reduced to pub(crate) scope
o goose::sync_metrics() changed to goose::metrics::sync_metrics() and reduced to pub(crate) scope
o goose::reset_metrics() changed to goose::metrics::reset_metrics() and reduced to pub(crate) scope
o goose::receive_metrics() changed to goose::metrics::receive_metrics() and reduced to pub(crate) scope
o goose::record_error() changed to goose::metrics::record_error() and reduced to pub(crate) scope
expose utility functions used by Goose for use by load tests
o goose::util::parse_timespan(), ::gcd(), ::median(), ::truncate_string(), ::timer_expired(), ::ms_timer_expired(), ::get_hatch_rate(), and ::is_valid_host() were elevated to pub scope
introduce (disabled by default) Coordinated Omission Mitigation, configured through --co-mitigation with the following options: "disabled" (default0), "average", "minimum", "maximum"; (or with GooseDefault::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 sending GooseDebug, GooseRequestMetric and GooseTaskMetric objects to the Logger thread for logging to file
introduce --tasks-file run-time option for logging GooseTaskMetrics to file
rename GooseTaskMetric to GooseTaskMetricAggregate, and introduce GooseTaskMetric which is a subset of GooseRequestMetric only used for logging
introduce --error-file run-time option for logging GooseErrorMetrics 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
0.12.0
goose::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)
scopemetrics.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)
scopegoose::util::parse_timespan()
,::gcd()
,::median()
,::truncate_string()
,::timer_expired()
,::ms_timer_expired()
,::get_hatch_rate()
, and::is_valid_host()
were elevated topub
scope--co-mitigation
with the following options: "disabled" (default0), "average", "minimum", "maximum"; (or withGooseDefault::CoordinatedOmissionMitigation
).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 HdrHistogramGooseLog
enum for sendingGooseDebug
,GooseRequestMetric
andGooseTaskMetric
objects to the Logger thread for logging to file--tasks-file
run-time option for loggingGooseTaskMetric
s to fileGooseTaskMetric
toGooseTaskMetricAggregate
, and introduceGooseTaskMetric
which is a subset ofGooseRequestMetric
only used for logging--error-file
run-time option for loggingGooseErrorMetric
s to fileGooseLogFormat
enum for formatting all logs; add--task-format
and--error-format
using new enum, update--requests-format
and--debug-format
.--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