The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl -w

#

use Test;

use Nagios::Report ;


# Each element in this array is a single test. Storing them this way makes
# maintenance easy, and should be OK since perl should be pretty functional
# before these tests are run.

$tests = <<'EOTESTS' ;
# Scalar expression 
# 1==1,

$n = Nagios::Report->new(q<dev_debug from_data_handle>, [q<Test>]) ;
ref($n)							=~ /Nagios::Report/

							# XXXX time2ddhhmmss rounds to nearest 300 sec/5min

$ts = Nagios::Report::time2ddhhmmss(59)			and $ts eq ' '
$ts = Nagios::Report::time2ddhhmmss(150)		and $ts =~ /^5m\s+/
$ts = Nagios::Report::time2ddhhmmss(300)		and $ts =~ /^5m\s+/
$ts = Nagios::Report::time2ddhhmmss(3_600)		and $ts =~ /^1h\s+/
$ts = Nagios::Report::time2ddhhmmss(3_630)		and $ts =~ /^1h\s+/
$ts = Nagios::Report::time2ddhhmmss(86_400)		and $ts =~ /^1d\s+/
$ts = Nagios::Report::time2ddhhmmss(86_700)		and $ts =~ /^1d 5m\s+/
$ts = Nagios::Report::time2ddhhmmss(86_400 + 3_600)	and $ts =~ /^1d 1h\s+/
$ts = Nagios::Report::time2ddhhmmss(86_400 + 3_600 + 300)	and $ts =~ /^1d 1h 5m\s+/
$ts = Nagios::Report::time2ddhhmmss(7 * 86_400)		and $ts =~ /^1w\s+/
$ts = Nagios::Report::time2ddhhmmss(4 * 7 * 86_400)	and $ts =~ /^1m\s+/

							# Check the alias

$ts = t2hms(59)						and $ts eq ' '
$ts = t2hms(150)					and $ts =~ /^5m\s+/
$ts = t2hms(300)					and $ts =~ /^5m\s+/
$ts = t2hms(3_600)					and $ts =~ /^1h\s+/
$ts = t2hms(3_630)					and $ts =~ /^1h\s+/
$ts = t2hms(86_400)					and $ts =~ /^1d\s+/
$ts = t2hms(86_700)					and $ts =~ /^1d 5m\s+/
$ts = t2hms(86_400 + 3_600)				and $ts =~ /^1d 1h\s+/
$ts = t2hms(86_400 + 3_600 + 300)			and $ts =~ /^1d 1h 5m\s+/
$ts = t2hms(7 * 86_400)					and $ts =~ /^1w\s+/
$ts = t2hms(4 * 7 * 86_400)				and $ts =~ /^1m\s+/
$ts = t2hms(4 * 7 * 86_400 + 86_400 + 3_600 + 300)	and $ts =~ /^1m 1d 1h 5m\s+/

EOTESTS

@t = split /\n/, $tests ;
@tests = grep !( m<\s*#> or m<^\s*$> ), @t ;

plan tests => scalar(@tests) ;
# plan tests => scalar(@tests) + 1 ;


for ( @tests ) {

  $sub = eval "sub { $_ }" ;

  warn "sub { $_ } fails to compile: $@"
    if $@ ;

  ok $sub  ;

  1 ;
}

{ 
  my $data ; 

  sub from_data_handle {

    my $rep_period = shift @_ ;

    my @avail_rep = () ;

    local $/ = undef ;
    $data = <DATA> 
      unless $data ;

    my ($r) = $data =~ /^# $rep_period\n(.*?)^END_OF_FILE_MARKER/sm ;
  
    @avail_rep = split /\n/, $r ;

    @avail_rep ;

  }
}

__DATA__
# Test
HOST_NAME, TIME_UP_SCHEDULED, PERCENT_TIME_UP_SCHEDULED, PERCENT_KNOWN_TIME_UP_SCHEDULED, TIME_UP_UNSCHEDULED, PERCENT_TIME_UP_UNSCHEDULED, PERCENT_KNOWN_TIME_UP_UNSCHEDULED, TOTAL_TIME_UP, PERCENT_TOTAL_TIME_UP, PERCENT_KNOWN_TIME_UP, TIME_DOWN_SCHEDULED, PERCENT_TIME_DOWN_SCHEDULED, PERCENT_KNOWN_TIME_DOWN_SCHEDULED, TIME_DOWN_UNSCHEDULED, PERCENT_TIME_DOWN_UNSCHEDULED, PERCENT_KNOWN_TIME_DOWN_UNSCHEDULED, TOTAL_TIME_DOWN, PERCENT_TOTAL_TIME_DOWN, PERCENT_KNOWN_TIME_DOWN, TIME_UNREACHABLE_SCHEDULED, PERCENT_TIME_UNREACHABLE_SCHEDULED, PERCENT_KNOWN_TIME_UNREACHABLE_SCHEDULED, TIME_UNREACHABLE_UNSCHEDULED, PERCENT_TIME_UNREACHABLE_UNSCHEDULED, PERCENT_KNOWN_TIME_UNREACHABLE_UNSCHEDULED, TOTAL_TIME_UNREACHABLE, PERCENT_TOTAL_TIME_UNREACHABLE, PERCENT_KNOWN_TIME_UNREACHABLE, TIME_UNDETERMINED_NOT_RUNNING, PERCENT_TIME_UNDETERMINED_NOT_RUNNING, TIME_UNDETERMINED_NO_DATA, PERCENT_TIME_UNDETERMINED_NO_DATA, TOTAL_TIME_UNDETERMINED, PERCENT_TOTAL_TIME_UNDETERMINED
"16_Mort_St_Optus_router_PE_interface", 0, 0.000%, 0.000%, 2045127, 100.000%, 100.000%, 2045127, 100.000%, 100.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0, 0.000%, 0, 0.000%
"Adelaide_State_Office_DEST_router", 0, 0.000%, 0.000%, 2045127, 100.000%, 100.000%, 2045127, 100.000%, 100.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0, 0.000%, 0, 0.000%
"Adelaide_State_Office_Optus_router_PE_interface", 0, 0.000%, 0.000%, 2045127, 100.000%, 100.000%, 2045127, 100.000%, 100.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0.000%, 0, 0.000%, 0, 0.000%, 0, 0.000%
"Albany_DEST_router", 0, 0.000%, 0.000%, 2039937, 99.746%, 99.746%, 2039937, 99.746%, 99.746%, 0, 0.000%, 0.000%, 290, 0.014%, 0.014%, 290, 0.014%, 0.014%, 0, 0.000%, 0.000%, 4900, 0.240%, 0.240%, 4900, 0.240%, 0.240%, 0, 0.000%, 0, 0.000%, 0, 0.000%
END_OF_FILE_MARKER