File Coverage

lib/Consul/Simple/Test.pm
Criterion Covered Total %
statement 27 32 84.3
branch 9 16 56.2
condition 3 8 37.5
subroutine 3 3 100.0
pod 0 2 0.0
total 42 61 68.8


line stmt bran cond sub pod time code
1             package Consul::Simple::Test;
2             $Consul::Simple::Test::VERSION = '1.142390';
3             my $consul_data_dir = '/tmp/consul_data_' . $$;
4             our $consul_daemon_pid;
5              
6             sub init_tests {
7 8     8 0 5444 my $can_test = init_server();
8 4 50       100 if(not $can_test) {
9 0         0 print STDERR "#full tests can only be run on Linux or MacOS(Darwin) x86_64. Skipping all.\n";
10 0         0 exit 0;
11             }
12             }
13              
14             sub init_server {
15 8     8 0 109006 my $uname = `uname 2>&1`;
16 8         228 chomp $uname;
17 8 50 33     696 if($uname ne 'Linux' and $uname ne 'Darwin') {
18 0         0 return 0;
19             }
20 8         79386 my $arch = `uname -m 2>&1`;
21 8         412 chomp $arch;
22 8 50       364 if($arch ne 'x86_64') {
23 0         0 return 0;
24             }
25 8   50     1842 mkdir $consul_data_dir || return 0;
26 8         26645 my $new_pid = fork;
27 8 50       814 return 0 if not defined $new_pid; #fork failed. (!??)
28 8 100       287 if(not $new_pid) { #child
29 4         338 my $consul_bin = 'testbin/consul_' . $uname . '_' . $arch;
30 4 50 33     559 $consul_bin = '../' . $consul_bin if $ENV{PWD} and $ENV{PWD} =~ /\/t$/;
31 4         214 my @args = ('agent', '-server', '-bootstrap-expect', '1', '-data-dir', $consul_data_dir, '-log-level', 'err');
32 4         740 print STDERR "##Ignore WARNING: Bootstrap* and [ERR] agent* output from consul daemon\n";
33 4         0 exec $consul_bin, @args;
34 0         0 exit;
35             }
36 4         28 $consul_daemon_pid = $new_pid; #parent
37 4         12000638 sleep 3;
38 4         69582 my $ret = `ps -p $consul_daemon_pid > /dev/null 2>&1;echo \$?`;
39 4         100 chomp $ret;
40 4 50       94 return 0 unless $ret eq '0';
41 4         110 return 1;
42             }
43              
44             END {
45 4 50   4   19898 kill 9, $consul_daemon_pid if $consul_daemon_pid;
46 4         4009020 sleep 1;
47 4         60597 system "rm -rf $consul_data_dir > /dev/null 2>&1";
48 4           system 'rm -rf /tmp/consul*';
49             };
50              
51             1;