File Coverage

blib/lib/Riemann/Client.pm
Criterion Covered Total %
statement 12 26 46.1
branch 0 8 0.0
condition n/a
subroutine 4 7 57.1
pod 2 2 100.0
total 18 43 41.8


line stmt bran cond sub pod time code
1             package Riemann::Client;
2             {
3             $Riemann::Client::VERSION = '0.03';
4             }
5              
6 2     2   245390 use Moo;
  2         36588  
  2         13  
7 2     2   5926 use Net::Domain qw/hostfqdn/;
  2         6121  
  2         137  
8              
9 2     2   1152 use Riemann::Client::Transport::TCP;
  2         8  
  2         67  
10 2     2   1384 use Riemann::Client::Transport::UDP;
  2         6  
  2         849  
11              
12             has host => (is => 'ro', default => sub { 'localhost' });
13             has port => (is => 'ro', default => sub { 5555 } );
14             has proto => (is => 'rwp', default => sub { 'tcp' } );
15              
16             has transport => (is => 'rwp', lazy => 1, builder => 1);
17              
18             sub send {
19 0     0 1   my ($self, @opts) = @_;
20              
21             # Set default stuff
22 0 0         map {
23 0           $_->{host} = hostfqdn() unless defined $_->{host};
24 0 0         $_->{time} = time() unless defined $_->{time};
25 0 0         $_->{metric_d} = delete $_->{metric} if $_->{metric};
26             } @opts;
27              
28 0           return $self->transport->send({events => \@opts});
29             }
30              
31             sub query {
32 0     0 1   my ($self, $query) = @_;
33              
34 0 0         if (ref $self->transport eq 'Riemann::Client::Transport::UDP') {
35 0           $self->_set_proto('tcp');
36 0           $self->_set_transport($self->_build_transport);
37             }
38              
39 0           return $self->transport->send({
40             query => { string => $query }
41             });
42             }
43              
44             sub _build_transport {
45 0     0     my $self = shift;
46 0           my $class = 'Riemann::Client::Transport::' . uc $self->proto;
47 0           return $class->new(
48             host => $self->host,
49             port => $self->port,
50             );
51             }
52              
53             1;
54              
55             __END__