File: 12summary.t

package info (click to toggle)
libnet-prometheus-perl 0.14-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 304 kB
  • sloc: perl: 1,847; makefile: 8
file content (86 lines) | stat: -rw-r--r-- 2,071 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/perl

use v5.14;
use warnings;

use Test2::V0;

use Net::Prometheus::Summary;

sub HASHfromSample
{
   my ( $sample ) = @_;
   return { map { $_, $sample->$_ } qw( varname labels value ) };
}

{
   my $summary = Net::Prometheus::Summary->new(
      name => "test",
      help => "A testing summary",
   );

   ok( defined $summary, 'defined $summary' );

   is( [ map { HASHfromSample( $_ ) } $summary->samples ],
      [
         # Slightly fragile as we depend on 'count' coming before 'sum'
         { varname => "test_count", labels => [], value => 0 },
         { varname => "test_sum",   labels => [], value => 0 },
      ],
      '$summary->samples initially'
   );

   $summary->observe( 5 );

   is( [ map { HASHfromSample( $_ ) } $summary->samples ],
      [
         { varname => "test_count", labels => [], value => 1 },
         { varname => "test_sum",   labels => [], value => 5 },
      ],
      '$summary->samples after ->observe( 5 )'
   );
}

# Remove and clear
{
   my $summary = Net::Prometheus::Summary->new(
      name   => "removal_test",
      help   => "A summary for testing removal",
      labels => [qw( x )],
   );

   $summary->observe( { x => "one" }, 1 );
   $summary->observe( { x => "two" }, 2 );
   $summary->observe( { x => "three" }, 3 );

   is( [ map { $_->varname =~ m/_count/ ? $_->labels : () } $summary->samples ],
      # Grr sorting
      [ [ x => "one" ], [ x => "three" ], [ x => "two" ] ],
      'labels before ->remove' );

   $summary->remove( { x => "one" } );

   is( [ map { $_->varname =~ m/_count/ ? $_->labels : () } $summary->samples ],
      [ [ x => "three" ], [ x => "two" ] ],
      'labels after ->remove' );

   $summary->clear;

   is( [ map { $_->varname =~ m/_count/ ? $_->labels : () } $summary->samples ],
      [],
      'labels after ->clear' );
}

# exceptions
{
   ok( dies {
         Net::Prometheus::Summary->new(
            name => "test",
            labels => [ "quantile" ],
            help => "",
         );
      }, 'Summary with "quantile" label dies'
   );
}

done_testing;