File Coverage

lib/Measure/Everything/Adapter/InfluxDB/TCP.pm
Criterion Covered Total %
statement 18 38 47.3
branch 0 8 0.0
condition 0 4 0.0
subroutine 6 9 66.6
pod 0 2 0.0
total 24 61 39.3


line stmt bran cond sub pod time code
1             package Measure::Everything::Adapter::InfluxDB::TCP;
2 1     1   431 use strict;
  1         1  
  1         21  
3 1     1   3 use warnings;
  1         1  
  1         33  
4              
5             our $VERSION = '1.003';
6              
7             # ABSTRACT: Send stats to Influx via TCP using Telegraf
8              
9 1     1   7 use base qw(Measure::Everything::Adapter::Base);
  1         1  
  1         463  
10 1     1   532 use InfluxDB::LineProtocol qw();
  1         3707  
  1         20  
11 1     1   414 use IO::Socket::INET;
  1         13749  
  1         5  
12 1     1   818 use Log::Any qw($log);
  1         7995  
  1         4  
13              
14             sub init {
15 0     0 0   my $self = shift;
16              
17 0   0       my $host = $self->{host} || 'localhost';
18 0   0       my $port = $self->{port} || 8094;
19 0 0         my $precision = $self->{precision} ? 'precision='.$self->{precision} : '';
20 0           InfluxDB::LineProtocol->import('data2line', $precision);
21              
22 0           my $socket = IO::Socket::INET->new(
23             PeerAddr => $host,
24             PeerPort => $port,
25             Proto => 'tcp',
26             );
27 0 0         if ($socket) {
28 0           $self->{socket} = $socket;
29             }
30             else {
31 0           $log->errorf(
32             "Cannot set up TCP socket on %s:%s, no stats will be recorded!",
33             $host, $port );
34             }
35             }
36              
37             sub write {
38 0     0 0   my $self = shift;
39 0           my $line = data2line(@_);
40              
41 0 0         if ($self->{socket} ) {
42 0     0     local $SIG{'PIPE'} = sub { die "SIGPIPE" };
  0            
43 0           eval {
44 0           $self->{socket}->send($line."\n");
45             };
46 0 0         return unless $@;
47 0           $log->errorf("write error %s", $@);
48             }
49 0           undef $self->{socket};
50 0           $self->init;
51             }
52              
53             1;
54              
55             __END__