Metrics-Any-Adapter-Prometheus

 view release on metacpan or  search on metacpan

t/01metrics.t  view on Meta::CPAN

   );

   $metrics->report_distribution( distribution => 10000 );

   like( $prom->render,
      qr/^the_distribution_bytes_count 1\nthe_distribution_bytes_sum 10000/m,
      'Net::Prometheus->render contains Histogram metric'
   );

   # Buckets
   my @buckets = grep { m/^the_distribution_bytes_bucket/ } split m/\n/, $prom->render;
   is( \@buckets,
      [
         'the_distribution_bytes_bucket{le="100"} 0',
         'the_distribution_bytes_bucket{le="1000"} 0',
         'the_distribution_bytes_bucket{le="10000"} 1',
         'the_distribution_bytes_bucket{le="100000"} 1',
         'the_distribution_bytes_bucket{le="1000000"} 1',
         'the_distribution_bytes_bucket{le="10000000"} 1',
         'the_distribution_bytes_bucket{le="100000000"} 1',
         'the_distribution_bytes_bucket{le="+Inf"} 1',

t/02distribution-buckets.t  view on Meta::CPAN

my $prom = Net::Prometheus->new;

# Decade buckets
{
   $metrics->make_distribution( default =>
      units => "",
      buckets_per_decade => [ 1 ],
   );
   $metrics->report_distribution( default => 0 );

   is( [ grep { m/^default_bucket/ } split m/\n/, $prom->render ],
      [ map { "default_bucket{le=\"$_\"} 1" } 1E-3, 1E-2, 1E-1, 1E0, 1E1, 1E2, 1E3, "+Inf" ],
      'Net::Prometheus->render contains default decade buckets'
   );

   # Large
   $metrics->make_distribution( large =>
      units => "",
      bucket_min => 1,
      bucket_max => 1E6,
   );
   $metrics->report_distribution( large => 0 );

   is( [ grep { m/^large_bucket/ } split m/\n/, $prom->render ],
      [ map { "large_bucket{le=\"$_\"} 1" } 1E0, 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, "+Inf" ],
      'Net::Prometheus->render contains large decade buckets'
   );

   # Small
   $metrics->make_distribution( small =>
      units => "",
      bucket_min => 1E-6,
      bucket_max => 1,
   );
   $metrics->report_distribution( small => 0 );

   is( [ grep { m/^small_bucket/ } split m/\n/, $prom->render ],
      [ map { "small_bucket{le=\"$_\"} 1" } 1E-6, 1E-5, 1E-4, 1E-3, 1E-2, 1E-1, 1E0, "+Inf" ],
      'Net::Prometheus->render contains small decade buckets'
   );
}

# Custom buckets
{
   # Generate E6 values
   $metrics->make_distribution( E6 =>
      units => "",
      bucket_min => 1,
      buckets_per_decade => [ 1, 1.5, 2.2, 3.3, 4.7, 6.8 ],
   );
   $metrics->report_distribution( E6 => 0 );

   is( [ grep { m/^E6_bucket/ } split m/\n/, $prom->render ],
      [ map { "E6_bucket{le=\"$_\"} 1" }
         1.0, 1.5, 2.2, 3.3, 4.7, 6.8,
          10,  15,  22,  33,  47,  68,
         100, 150, 220, 330, 470, 680,
        1000, "+Inf",
      ],
      'Net::Prometheus->render contains custom value buckets'
   );
}



( run in 0.510 second using v1.01-cache-2.11-cpan-71847e10f99 )