Added: trunk/opsview-core/t/tests/Test/Opsview/Utils/SnmpInterfaces.pm
===================================================================
--- trunk/opsview-core/t/tests/Test/Opsview/Utils/SnmpInterfaces.pm (rev 0)
+++ trunk/opsview-core/t/tests/Test/Opsview/Utils/SnmpInterfaces.pm 2013-03-08 12:13:20 UTC (rev 11687)
@@ -0,0 +1,420 @@
+package Test::Opsview::Utils::SnmpInterfaces;
+
+use strict;
+use warnings;
+
+use base qw( Test::Opsview );
+
+use FindBin '$Bin';
+use lib "$Bin/../lib";
+use DDP;
+use Test::More;
+
+sub _setup_testing : Tests(setup => no_plan) {
+ use_ok 'Opsview::Utils::SnmpInterfaces'
+ or die "Cannot load Opsview::Utils::SnmpInterfaces";
+}
+
+sub throughput_state : Tests(44) {
+
+ my @tests = (
+ {
+ warning_syntax => 'IN 10:50%',
+ critical_syntax => 'IN 50:100%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 1,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => 'OUT 30000:50000',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 10,
+ throughput_in_pct => 0,
+ throughput_out_pct => 2,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'OUT 30000:50000',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 10,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'OUT 30000:50000',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 40000,
+ throughput_in_pct => 0,
+ throughput_out_pct => 80,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'OUT 30000:50000',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 40000,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% and OUT 30:55%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 99,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% and OUT 30:55%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 40,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => '',
+ critical_syntax => 'IN 10:50% and OUT 30:55%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 99,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '',
+ critical_syntax => 'IN 10:50% and OUT 30:55%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 40,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% and OUT 30:55%',
+ critical_syntax => 'IN 10:50% and OUT 30:55%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 1,
+ throughput_out_pct => 99,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50 and OUT 30:55',
+ critical_syntax => '',
+ throughput_in => 1,
+ throughput_out => 99,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% and OUT 30:55%',
+ critical_syntax => 'IN 5:50% and OUT 30:55%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 6,
+ throughput_out_pct => 99,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% or OUT 30:55%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 6,
+ throughput_out_pct => 40,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% or OUT 30:55%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 20,
+ throughput_out_pct => 40,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'IN 10:50% or OUT 30:55%',
+ critical_syntax => 'IN 10:50% or OUT 30:85%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 20,
+ throughput_out_pct => 90,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '40:60%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 50,
+ throughput_out_pct => 50,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => '40:60%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 50,
+ throughput_out_pct => 70,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => '40:60%',
+ critical_syntax => '0:80%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 50,
+ throughput_out_pct => 70,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => '40:60%',
+ critical_syntax => '0:80%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 50,
+ throughput_out_pct => 90,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '',
+ critical_syntax => '75%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 50,
+ throughput_out_pct => 50,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => '',
+ critical_syntax => '75%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 80,
+ throughput_out_pct => 50,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '75%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 80,
+ throughput_out_pct => 50,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => '75%',
+ critical_syntax => '75%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 80,
+ throughput_out_pct => 50,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 75,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 75,
+ throughput_out_pct => 0,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 78,
+ throughput_out_pct => 0,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 78,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '75.1%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 78,
+ throughput_out_pct => 0,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '75.1%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 78,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 78,
+ throughput_out_pct => 78,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 75.2,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => '75.1%',
+ critical_syntax => '81.2%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 75.2,
+ throughput_out_pct => 82,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => '70%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => '70%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => 'IN 70% and OUT 50%',
+ critical_syntax => '',
+ throughput_in => 0,
+ throughput_out => 0,
+ expected => [ 1, 1 ],
+ },
+ {
+ warning_syntax => 'OUT 50%',
+ critical_syntax => 'OUT 90%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 20,
+ throughput_out_pct => 70,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'OUT 50%',
+ critical_syntax => 'OUT 90%',
+ throughput_in => 0,
+ throughput_out => 0,
+ throughput_in_pct => 20,
+ throughput_out_pct => 99,
+ expected => [ 2, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 and OUT 50',
+ critical_syntax => '',
+ throughput_in => 10,
+ throughput_out => 10,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 and OUT 50',
+ critical_syntax => '',
+ throughput_in => 30,
+ throughput_out => 60,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 or OUT 50',
+ critical_syntax => '',
+ throughput_in => 10,
+ throughput_out => 10,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 0, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 or OUT 50',
+ critical_syntax => '',
+ throughput_in => 30,
+ throughput_out => 40,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 and OUT 50',
+ critical_syntax => 'IN 40 and OUT 70',
+ throughput_in => 30,
+ throughput_out => 60,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 and OUT 50',
+ critical_syntax => 'IN 40 and OUT 70',
+ throughput_in => 50,
+ throughput_out => 60,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 1, 0 ],
+ },
+ {
+ warning_syntax => 'IN 20 and OUT 50',
+ critical_syntax => 'IN 40 and OUT 70',
+ throughput_in => 50,
+ throughput_out => 80,
+ throughput_in_pct => 0,
+ throughput_out_pct => 0,
+ expected => [ 2, 0 ],
+ },
+ );
+
+ for my $test (@tests) {
+ is_deeply(
+ [
+ Opsview::Utils::SnmpInterfaces::throughput_state(
+ $test->{warning_syntax}, $test->{critical_syntax},
+ $test->{throughput_in}, $test->{throughput_out},
+ $test->{throughput_in_pct}, $test->{throughput_out_pct}
+ )
+ ],
+ $test->{expected}
+ ) or diag( p($test) );
+ }
+
+}
+
+1;