---
name: "Metrics::Any::Adapter::Test"
section: "3pm"
platform: "linux"
package: "libmetrics-any-perl"
version: "0.10-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Metrics::Any::Adapter::Test"
---

# Metrics::Any::Adapter::Test(3pm)

a metrics reporting adapter for unit testing

## NAME

"Metrics::Any::Adapter::Test" - a metrics reporting adapter for unit testing

## SYNOPSIS

```
   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'
      );
   }
```

## DESCRIPTION

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.

## METHODS

### metrics

```
   $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
```

### use\_full\_distributions

```
   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.

### clear

```
   Metrics::Any::Adapter::Test->clear
```

This class method removes all of the stored values of reported metrics.

### override\_timer\_duration

```
   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.

Any value set here will be cleared by "clear".

## AUTHOR

Paul Evans \<leonerd@leonerd.org.uk\>
