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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
#!/usr/bin/perl
use v5.14;
use warnings;
use Test2::V0;
use Net::Prometheus;
my $client = Net::Prometheus->new(
disable_process_collector => 1,
disable_perl_collector => 1,
);
ok( defined $client, 'defined $client' );
# initially empty
is( $client->render, "", '$client->render gives empty string' );
# with some metrics
{
$client->new_gauge(
name => "gauge",
help => "A gauge metric",
)->set( 123 );
$client->new_counter(
name => "counter",
help => "A counter metric",
)->inc();
is( $client->render, <<'EOF', '$client->render gives metric results' );
# HELP counter A counter metric
# TYPE counter counter
counter 1
# HELP gauge A gauge metric
# TYPE gauge gauge
gauge 123
EOF
}
# NaN rendering
{
my $client = Net::Prometheus->new(
disable_process_collector => 1,
disable_perl_collector => 1,
);
$client->new_gauge(
name => "gauge",
help => "undefined",
)->set( "nan" );
is( $client->render, <<'EOF', '$client->render renders NaN' );
# HELP gauge undefined
# TYPE gauge gauge
gauge NaN
EOF
}
# undef is absent
{
my $client = Net::Prometheus->new(
disable_process_collector => 1,
disable_perl_collector => 1,
);
$client->new_gauge(
name => "gauge",
help => "undefined",
)->set( undef );
is( $client->render, <<'EOF', '$client->render renders undef absent' );
# HELP gauge undefined
# TYPE gauge gauge
EOF
}
# HELP escaping
{
my $client = Net::Prometheus->new(
disable_process_collector => 1,
disable_perl_collector => 1,
);
$client->new_gauge(
name => "gauge",
help => "with\nlinefeed",
)->set( 0 );
is( $client->render, <<'EOF', '$client->render escapes HELP text' );
# HELP gauge with\nlinefeed
# TYPE gauge gauge
gauge 0
EOF
}
# metric groups
{
is(
$client->new_metricgroup(
namespace => "namespc"
)->new_gauge(
subsystem => "subsys",
name => "gauge",
help => ""
)->fullname,
"namespc_subsys_gauge",
'Metric Group can provide default namespace'
);
is(
$client->new_metricgroup(
subsystem => "subsys",
)->new_gauge(
name => "gauge",
help => ""
)->fullname,
"subsys_gauge",
'Metric Group can provide default subsystem'
);
}
done_testing;
|