Metrics::Any::Adapter::Test - a metrics reporting adapter for unit testing
Metrics::Any::Adapter::Test
use Test2::V0; use Metrics::Any::Adapter 'Test'; { Metrics::Any::Adapter::Test->clear; # perform some work in the code under test is( Metrics::Any::Adapter::Test->metrics, "an_expected_metric = 1\n", 'Metrics were reported while doing something' ); }
This Metrics::Any adapter type stores reported metrics locally, allowing access to them by the "metrics" method. This is useful to use in a unit test to check that the code under test reports the correct metrics.
This adapter supports timer metrics by storing as distributions. By default, distributions store only a summary, giving the count and total duration. If required, the full values can be stored by setting "use_full_distributions".
For predictable output of timer metrics in unit tests, a unit test may wish to use the "override_timer_duration" method.
This adapter type supports batch mode reporting. Callbacks are invoked at the beginning of the "metrics" method.
$result = Metrics::Any::Adapter::Test->metrics
This class method returns a string describing all of the stored metric values. Each is reported on a line formatted as
name = value
Each line, including the final one, is terminated by a linefeed. The metrics are sorted alphabetically. Any multi-part metric names will be joined with underscores (_).
_
Metrics that have additional labels are formatted with additional label names and label values in declared order after the name and before the = symbol:
=
name l1:v1 l2:v2 = value
Metrics::Any::Adapter::Test->use_full_distributions; # enables the option Metrics::Any::Adapter::Test->use_full_distributions( $enable );
Since version 0.08.
If enabled, this option stores the full value of every reported observation into distributions, rathr than just the count-and-total summary.
Full value distributions will be formatted as a sequence of lines containing the count of observations at that particular value, in square brackets, followed by the summary count.
name[v1] = c1 name[v2] = c2 ... name_count = c
In order not to be too sensitive to numerical rounding errors, values are stored to only 3 decimal places.
Metrics::Any::Adapter::Test->clear
This class method removes all of the stored values of reported metrics.
Metrics::Any::Adapter::Test->override_timer_duration( $duration )
This class method sets a duration value, that any subsequent call to inc_timer will use instead of the value the caller actually passed in. This will ensure reliably predictable output in unit tests.
inc_timer
Any value set here will be cleared by "clear".
Paul Evans <leonerd@leonerd.org.uk>
To install Metrics::Any, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Metrics::Any
CPAN shell
perl -MCPAN -e shell install Metrics::Any
For more information on module installation, please visit the detailed CPAN module installation guide.