#!/usr/bin/perl
my
$client
= Net::Prometheus->new(
disable_process_collector
=> 1,
disable_perl_collector
=> 1,
);
ok(
defined
$client
,
'defined $client'
);
is(
$client
->render,
""
,
'$client->render gives empty string'
);
{
$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
}
{
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
}
{
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
}
{
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
}
{
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;