Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Metrics-Any for 
openSUSE:Factory checked in at 2022-12-14 14:11:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Metrics-Any (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Metrics-Any.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Metrics-Any"

Wed Dec 14 14:11:08 2022 rev:4 rq:1042832 version:0.09

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Metrics-Any/perl-Metrics-Any.changes        
2022-10-15 16:40:41.150618902 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-Metrics-Any.new.1835/perl-Metrics-Any.changes  
    2022-12-14 14:11:22.663610356 +0100
@@ -1,0 +2,11 @@
+Tue Nov 29 03:07:37 UTC 2022 - Tina Müller <timueller+p...@suse.de>
+
+- updated to 0.09
+   see /usr/share/doc/packages/perl-Metrics-Any/Changes
+
+  0.09    2022-11-28
+          [CHANGES]
+           * Define a new API for optional high-performance batch mode
+             collection of counter and gauge metrics
+
+-------------------------------------------------------------------

Old:
----
  Metrics-Any-0.08.tar.gz

New:
----
  Metrics-Any-0.09.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Metrics-Any.spec ++++++
--- /var/tmp/diff_new_pack.S0pdHB/_old  2022-12-14 14:11:23.187613051 +0100
+++ /var/tmp/diff_new_pack.S0pdHB/_new  2022-12-14 14:11:23.191613072 +0100
@@ -18,7 +18,7 @@
 
 %define cpan_name Metrics-Any
 Name:           perl-Metrics-Any
-Version:        0.08
+Version:        0.09
 Release:        0
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Abstract collection of monitoring metrics

++++++ Metrics-Any-0.08.tar.gz -> Metrics-Any-0.09.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/Changes new/Metrics-Any-0.09/Changes
--- old/Metrics-Any-0.08/Changes        2022-10-11 16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/Changes        2022-11-28 18:54:45.000000000 +0100
@@ -1,5 +1,10 @@
 Revision history for Metrics-Any
 
+0.09    2022-11-28
+        [CHANGES]
+         * Define a new API for optional high-performance batch mode
+           collection of counter and gauge metrics
+
 0.08    2022-10-11
         [CHANGES]
          * Optionally allow the test adapter to store full values for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/MANIFEST 
new/Metrics-Any-0.09/MANIFEST
--- old/Metrics-Any-0.08/MANIFEST       2022-10-11 16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/MANIFEST       2022-11-28 18:54:45.000000000 +0100
@@ -9,7 +9,11 @@
 lib/Metrics/Any/Adapter/Test.pm
 lib/Metrics/Any/AdapterBase/Stored.pm
 lib/Metrics/Any/Collector.pm
+LICENSE
 MANIFEST                       This list of files
+META.json
+META.yml
+README
 t/00use.t
 t/01collector.t
 t/02adapter-early.t
@@ -24,7 +28,3 @@
 t/21nonstrict.t
 t/22disable-package.t
 t/99pod.t
-README
-LICENSE
-META.yml
-META.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/META.json 
new/Metrics-Any-0.09/META.json
--- old/Metrics-Any-0.08/META.json      2022-10-11 16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/META.json      2022-11-28 18:54:45.000000000 +0100
@@ -35,39 +35,39 @@
    "provides" : {
       "Metrics::Any" : {
          "file" : "lib/Metrics/Any.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter" : {
          "file" : "lib/Metrics/Any/Adapter.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter::File" : {
          "file" : "lib/Metrics/Any/Adapter/File.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter::Null" : {
          "file" : "lib/Metrics/Any/Adapter/Null.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter::Stderr" : {
          "file" : "lib/Metrics/Any/Adapter/Stderr.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter::Tee" : {
          "file" : "lib/Metrics/Any/Adapter/Tee.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Adapter::Test" : {
          "file" : "lib/Metrics/Any/Adapter/Test.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::AdapterBase::Stored" : {
          "file" : "lib/Metrics/Any/AdapterBase/Stored.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       },
       "Metrics::Any::Collector" : {
          "file" : "lib/Metrics/Any/Collector.pm",
-         "version" : "0.08"
+         "version" : "0.09"
       }
    },
    "release_status" : "stable",
@@ -76,6 +76,6 @@
          "http://dev.perl.org/licenses/";
       ]
    },
-   "version" : "0.08",
-   "x_serialization_backend" : "JSON::PP version 4.06"
+   "version" : "0.09",
+   "x_serialization_backend" : "JSON::PP version 4.07"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/META.yml 
new/Metrics-Any-0.09/META.yml
--- old/Metrics-Any-0.08/META.yml       2022-10-11 16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/META.yml       2022-11-28 18:54:45.000000000 +0100
@@ -17,35 +17,35 @@
 provides:
   Metrics::Any:
     file: lib/Metrics/Any.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter:
     file: lib/Metrics/Any/Adapter.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter::File:
     file: lib/Metrics/Any/Adapter/File.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter::Null:
     file: lib/Metrics/Any/Adapter/Null.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter::Stderr:
     file: lib/Metrics/Any/Adapter/Stderr.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter::Tee:
     file: lib/Metrics/Any/Adapter/Tee.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Adapter::Test:
     file: lib/Metrics/Any/Adapter/Test.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::AdapterBase::Stored:
     file: lib/Metrics/Any/AdapterBase/Stored.pm
-    version: '0.08'
+    version: '0.09'
   Metrics::Any::Collector:
     file: lib/Metrics/Any/Collector.pm
-    version: '0.08'
+    version: '0.09'
 requires:
   List::Util: '1.29'
   perl: '5.014'
 resources:
   license: http://dev.perl.org/licenses/
-version: '0.08'
+version: '0.09'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/File.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/File.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/File.pm        2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/File.pm        2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter::File 0.08;
+package Metrics::Any::Adapter::File 0.09;
 
 use v5.14;
 use warnings;
@@ -42,6 +42,8 @@
 Distribution and timing metrics are tracked with a running total and count of
 observations.
 
+This adapter type does not support batch mode reporting.
+
 =head1 ARGUMENTS
 
 The following additional arguments are recognised
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Null.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Null.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Null.pm        2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Null.pm        2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter::Null 0.08;
+package Metrics::Any::Adapter::Null 0.09;
 
 use v5.14;
 use warnings;
@@ -21,6 +21,9 @@
 A program would run with this adapter by default unless it has requested a
 different one, via the C<use Metrics::Any::Adapter> statement.
 
+This adapter type claims to support batch mode, though the reporting callback
+will never be invoked.
+
 =cut
 
 sub new
@@ -40,6 +43,10 @@
    *$method = sub {};
 }
 
+# Batch mode is supported but does nothing
+use constant HAVE_BATCH_MODE => 1;
+sub add_batch_mode_callback {}
+
 =head1 AUTHOR
 
 Paul Evans <leon...@leonerd.org.uk>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Stderr.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Stderr.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Stderr.pm      2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Stderr.pm      2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter::Stderr 0.08;
+package Metrics::Any::Adapter::Stderr 0.09;
 
 use v5.14;
 use warnings;
@@ -27,6 +27,8 @@
 
    $ METRICS_ANY_ADAPTER=Stderr perl -Mblib t/01test.t
 
+This adapter type does not support batch mode reporting.
+
 =cut
 
 sub new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Tee.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Tee.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Tee.pm 2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Tee.pm 2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter::Tee 0.08;
+package Metrics::Any::Adapter::Tee 0.09;
 
 use v5.14;
 use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Test.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Test.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter/Test.pm        2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter/Test.pm        2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020-2022 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter::Test 0.08;
+package Metrics::Any::Adapter::Test 0.09;
 
 use v5.14;
 use warnings;
@@ -47,6 +47,9 @@
 For predictable output of timer metrics in unit tests, a unit test may wish to
 use the L</override_timer_duration> method.
 
+This adapter type supports batch mode reporting. Callbacks are invoked at the
+beginning of the L</metrics> method.
+
 =cut
 
 my $singleton;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Adapter.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Adapter.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Adapter.pm     2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Adapter.pm     2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Adapter 0.08;
+package Metrics::Any::Adapter 0.09;
 
 use v5.14;
 use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Metrics-Any-0.08/lib/Metrics/Any/AdapterBase/Stored.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/AdapterBase/Stored.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/AdapterBase/Stored.pm  2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/AdapterBase/Stored.pm  2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::AdapterBase::Stored 0.08;
+package Metrics::Any::AdapterBase::Stored 0.09;
 
 use v5.14;
 use warnings;
@@ -39,6 +39,7 @@
    my $class = shift;
 
    # Metrics are keys of $self, named by handle
+   # Special non-metrics values can be stored by prefixing the name with "\x00"
    return bless {}, $class;
 }
 
@@ -46,6 +47,16 @@
 
 =cut
 
+use constant HAVE_BATCH_MODE => 1;
+
+sub add_batch_mode_callback
+{
+   my $self = shift;
+   my ( $cb ) = @_;
+
+   push @{ $self->{"\0batch_callbacks"} }, $cb;
+}
+
 sub _make
 {
    my $self = shift;
@@ -112,7 +123,13 @@
    my $self = shift;
    my ( $code ) = @_;
 
+   if( my $cbs = $self->{"\0batch_callbacks"} ) {
+      foreach my $cb ( @$cbs ) { $cb->() }
+   }
+
    foreach my $handle ( sort keys %$self ) {
+      next if $handle =~ m/^\0/;
+
       my $metric = $self->{$handle};
       my $values = $metric->{values};
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any/Collector.pm 
new/Metrics-Any-0.09/lib/Metrics/Any/Collector.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any/Collector.pm   2022-10-11 
16:43:36.000000000 +0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any/Collector.pm   2022-11-28 
18:54:45.000000000 +0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020 -- leon...@leonerd.org.uk
 
-package Metrics::Any::Collector 0.08;
+package Metrics::Any::Collector 0.09;
 
 use v5.14;
 use warnings;
@@ -45,6 +45,54 @@
 to allow programs to configure the metric reporting in a flexible manner
 during program startup.
 
+=head2 Batch-Mode Reporting
+
+Some adapters may support an optional API for implementing metrics in a more
+high-performance manner, suitable for use in low-level (perhaps even XS) code
+that might be invoked at high speed or many times over.
+
+Such code often needs to keep simple counters of particular events that happen
+a lot. Rather than incurring the cost of a full stack of method calls into the
+collector and adapter implementation on every event, the instrumented code can
+register a callback function that the adapter will call on some schedule, that
+will report the actual metrics. In the meantime, the instrumented code can
+maintain its own counters of events, using plain Perl scalars (or native
+integers in XS code), to be reported in bulk when required. This reduces the
+overall CPU cost involved in collecting metrics.
+
+This is most effective with pull-based adapters such as Test or Prometheus,
+where the callback might only need to be invoked at the end of a test run, or
+when the prometheus server polls the C</metrics> HTTP endpoint.
+
+   my $evcounter = 0;
+
+   $metrics->add_batch_mode_callback( sub {
+      $metrics->inc_counter_by( events => $evcounter );
+      $evcounter = 0;
+   } );
+
+   sub do_thing {
+      $evcounter++;
+      ...
+   }
+
+Because not every adapter may implement this mode, instrumented code should be
+prepared to fall back on the regular API to report its counters.
+
+   my $evcounter = 0;
+
+   my $use_batch = $metrics->add_batch_mode_callback( sub {
+      $metrics->inc_counter_by( events => $evcounter );
+      $evcounter = 0;
+   } );
+
+   sub do_thing {
+      $use_batch ? $evcounter++ : $metrics->inc_counter( events => );
+      ...
+   }
+
+Each adapter implementation should document if and how it handles batch mode.
+
 =head1 ENVIRONMENT
 
 =head2 METRICS_ANY_DISABLE
@@ -293,6 +341,10 @@
 
 =head1 METHODS
 
+=cut
+
+=head2 package
+
    $package = $metrics->package
 
 Returns the package name that created the collector; the package in which the
@@ -309,6 +361,33 @@
    return $self->{package};
 }
 
+=head2 add_batch_mode_callback
+
+   $ok = $metrics->add_batch_mode_callback( sub { ... } )
+
+I<Since version 0.09.>
+
+If batch mode is supported on the underlying adapter, adds another callback to
+its list of callbacks, to be invoked when it wishes to collect more metrics;
+if this is supported then the method returns a true value.
+
+If batch mode is not supported, returns false.
+
+=cut
+
+sub add_batch_mode_callback
+{
+   my $self = shift;
+   my ( $cb ) = @_;
+
+   unless( $self->adapter->can( "HAVE_BATCH_MODE" ) and 
$self->adapter->HAVE_BATCH_MODE ) {
+      return 0;
+   }
+
+   $self->adapter->add_batch_mode_callback( $cb );
+   return 1;
+}
+
 =head1 METRIC TYPES
 
 Each type of metric is created by one of the C<make_*> methods. They all take
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/lib/Metrics/Any.pm 
new/Metrics-Any-0.09/lib/Metrics/Any.pm
--- old/Metrics-Any-0.08/lib/Metrics/Any.pm     2022-10-11 16:43:36.000000000 
+0200
+++ new/Metrics-Any-0.09/lib/Metrics/Any.pm     2022-11-28 18:54:45.000000000 
+0100
@@ -3,7 +3,7 @@
 #
 #  (C) Paul Evans, 2020-2021 -- leon...@leonerd.org.uk
 
-package Metrics::Any 0.08;
+package Metrics::Any 0.09;
 
 use v5.14;
 use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/t/10adapter-null.t 
new/Metrics-Any-0.09/t/10adapter-null.t
--- old/Metrics-Any-0.08/t/10adapter-null.t     2022-10-11 16:43:36.000000000 
+0200
+++ new/Metrics-Any-0.09/t/10adapter-null.t     2022-11-28 18:54:45.000000000 
+0100
@@ -43,6 +43,9 @@
 ok( defined eval { $metrics->report_timer( "duration", 20 ); 1 },
    '$metrics->report_timer' ) or diag( $@ );
 
+# batch mode is supported (though does nothing)
+ok( $metrics->add_batch_mode_callback( sub {} ), 'Null adapter supports batch 
mode' );
+
 ok( !$metrics, '$metrics is still false at EOF' );
 
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/t/13adapter-stored.t 
new/Metrics-Any-0.09/t/13adapter-stored.t
--- old/Metrics-Any-0.08/t/13adapter-stored.t   2022-10-11 16:43:36.000000000 
+0200
+++ new/Metrics-Any-0.09/t/13adapter-stored.t   2022-11-28 18:54:45.000000000 
+0100
@@ -73,4 +73,34 @@
    ], 'metrics to ->walk' );
 }
 
+# batch mode is supported
+{
+   Metrics::Any::Adapter->adapter->clear_values;
+
+   my $called;
+
+   my $batch_ok = $metrics->add_batch_mode_callback( sub {
+      $called++;
+      $metrics->inc_counter_by( counter => 100 );
+      $metrics->set_gauge_to( gauge => 25 );
+   } );
+   ok( $batch_ok, 'Stored adapter supports batch mode' );
+
+   ok( !$called, 'Batch mode callback not yet invoked' );
+
+   my @walkdata;
+   Metrics::Any::Adapter->adapter->walk( sub {
+      my ( $type, $name, $labels, $value ) = @_;
+      push @walkdata, [ $type, $name, $labels, $value ];
+   } );
+
+   is_deeply( \@walkdata, [
+      [ counter => counter => [], 100 ],
+
+      [ gauge => gauge => [], 25 ],
+   ], 'metrics to ->walk contained batch-reported values' );
+
+   ok( $called, 'Batch mode callback invoked by ->walk' );
+}
+
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Metrics-Any-0.08/t/14adapter-test.t 
new/Metrics-Any-0.09/t/14adapter-test.t
--- old/Metrics-Any-0.08/t/14adapter-test.t     2022-10-11 16:43:36.000000000 
+0200
+++ new/Metrics-Any-0.09/t/14adapter-test.t     2022-11-28 18:54:45.000000000 
+0100
@@ -147,6 +147,28 @@
    );
 }
 
+# batch mode is supported
+{
+   Metrics::Any::Adapter::Test->clear;
+
+   my $called;
+
+   my $batch_ok = $metrics->add_batch_mode_callback( sub {
+      $called++;
+      $metrics->inc_counter_by( abc => 100 );
+      $metrics->set_gauge_to( gauge => 25 );
+   } );
+   ok( $batch_ok, 'Test adapter supports batch mode' );
+
+   ok( !$called, 'Batch mode callback not yet invoked' );
+
+   is( Metrics::Any::Adapter::Test->metrics,
+      "the_ABC_counter = 100\n" .
+      "the_ABC_gauge = 25\n",
+      'Metrics::Any::Adapter::Test->metrics contains batch-reported values' );
+   ok( $called, 'Batch mode callback invoked by ->metrics' );
+}
+
 ok( $metrics, '$metrics is still true at EOF' );
 
 done_testing;

Reply via email to