File Coverage

blib/lib/Metabrik/Network/Freebsd/Ping.pm
Criterion Covered Total %
statement 9 20 45.0
branch 0 6 0.0
condition 0 6 0.0
subroutine 3 5 60.0
pod 1 2 50.0
total 13 39 33.3


line stmt bran cond sub pod time code
1             #
2             # $Id$
3             #
4             # network::freebsd::ping Brik
5             #
6             package Metabrik::Network::Freebsd::Ping;
7 1     1   710 use strict;
  1         2  
  1         29  
8 1     1   6 use warnings;
  1         2  
  1         26  
9              
10 1     1   5 use base qw(Metabrik::Shell::Command);
  1         2  
  1         264  
11              
12             sub brik_properties {
13             return {
14 0     0 1   revision => '$Revision$',
15             tags => [ qw(unstable) ],
16             author => 'GomoR ',
17             license => 'http://opensource.org/licenses/BSD-3-Clause',
18             attributes => {
19             try => [ qw(count) ],
20             timeout => [ qw(seconds) ],
21             },
22             attributes_default => {
23             try => 2,
24             timeout => 5,
25             ignore_error => 0, # We need return code from ping command
26             },
27             commands => {
28             is_alive => [ qw(host try|OPTIONAL timeout|OPTIONAL) ],
29             },
30             require_binaries => {
31             ping => [ ], # ping is a standard userlang command in FreeBSD
32             },
33             };
34             }
35              
36             #
37             # Sends ICMP echo-requests $try number of times or until $timeout seconds occurs.
38             #
39             sub is_alive {
40 0     0 0   my $self = shift;
41 0           my ($host, $try, $timeout) = @_;
42              
43 0   0       $try ||= $self->try;
44 0   0       $timeout ||= $self->timeout;
45 0 0         $self->brik_help_run_undef_arg('is_alive', $host) or return;
46              
47 0           my $cmd = "ping -c $try -t $timeout $host > /dev/null 2>&1";
48              
49 0 0         my $r = $self->system($cmd) or return;
50 0 0         if ($r == 1) {
51 0           return 1; # Host is alive
52             }
53              
54 0           return 0; # Host not alive
55             }
56              
57             1;
58              
59             __END__