Title: [opsview] [11687] Tests for SNMP throughput expanded syntax.
Revision
11687
Author
pknight
Date
2013-03-08 12:13:20 +0000 (Fri, 08 Mar 2013)

Log Message

Tests for SNMP throughput expanded syntax.

Added Paths


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;

_______________________________________________
Opsview-checkins mailing list
Opsview-checkins@lists.opsview.org
http://lists.opsview.org/lists/listinfo/opsview-checkins

Reply via email to