SF.net SVN: nagiosplug: [1952] Nagios-Plugin/trunk

[email protected]
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
Revision: 1952
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=1952&view=rev
Author:   tonvoon
Date:     2008-03-17 13:32:11 -0700 (Mon, 17 Mar 2008)

Log Message:
-----------
Fixed parsing of negative values and support full range definitions

Modified Paths:
--------------
    Nagios-Plugin/trunk/Changes
    Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm
    Nagios-Plugin/trunk/lib/Nagios/Plugin/Performance.pm
    Nagios-Plugin/trunk/lib/Nagios/Plugin.pm
    Nagios-Plugin/trunk/t/Nagios-Plugin-Performance.t

Modified: Nagios-Plugin/trunk/Changes
===================================================================
--- Nagios-Plugin/trunk/Changes	2008-03-16 18:10:47 UTC (rev 1951)
+++ Nagios-Plugin/trunk/Changes	2008-03-17 20:32:11 UTC (rev 1952)
@@ -1,5 +1,8 @@
 Revision history for Perl module Nagios::Plugin.
 
+0.25  17th March 2008
+  - Fixed parsing of performance data with negative values and full range definitions
+
 0.24  1st February 2008
   - Fixed a test failure which highlighted a precision rounding within hashes
 

Modified: Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm
===================================================================
--- Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm	2008-03-16 18:10:47 UTC (rev 1951)
+++ Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm	2008-03-17 20:32:11 UTC (rev 1952)
@@ -12,7 +12,7 @@
 use Math::Calc::Units;
 
 # Remember to update Nagios::Plugins as well
-our $VERSION = "0.24";
+our $VERSION = "0.25";
 
 our @STATUS_CODES = qw(OK WARNING CRITICAL UNKNOWN DEPENDENT);
 

Modified: Nagios-Plugin/trunk/lib/Nagios/Plugin/Performance.pm
===================================================================
--- Nagios-Plugin/trunk/lib/Nagios/Plugin/Performance.pm	2008-03-16 18:10:47 UTC (rev 1951)
+++ Nagios-Plugin/trunk/lib/Nagios/Plugin/Performance.pm	2008-03-17 20:32:11 UTC (rev 1952)
@@ -22,10 +22,12 @@
 	Nagios::Plugin::Functions::_use_die($_);
 }
 
+my $value_re = qr/[-+]?[\d\.]+/;
+my $value_re_with_negative_infinity = qr/$value_re|~/;
 sub _parse {
 	my $class = shift;
 	my $string = shift;
-	$string =~ s/^([^=]+)=([\d\.]+)([\w%]*);?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?\s*//;
+	$string =~ s/^([^=]+)=($value_re)([\w%]*);?($value_re_with_negative_infinity\:?$value_re?)?;?($value_re_with_negative_infinity\:?$value_re?)?;?($value_re)?;?($value_re)?\s*//o;
 	return undef unless ((defined $1 && $1 ne "") && (defined $2 && $2 ne ""));
     my $p = $class->new(
         label => $1, value => $2+0, uom => $3, warning => $4, critical => $5, 

Modified: Nagios-Plugin/trunk/lib/Nagios/Plugin.pm
===================================================================
--- Nagios-Plugin/trunk/lib/Nagios/Plugin.pm	2008-03-16 18:10:47 UTC (rev 1951)
+++ Nagios-Plugin/trunk/lib/Nagios/Plugin.pm	2008-03-17 20:32:11 UTC (rev 1952)
@@ -25,7 +25,7 @@
 # CPAN stupidly won't index this module without a literal $VERSION here,
 #   so we're forced to duplicate it explicitly
 # Make sure you update $Nagios::Plugin::Functions::VERSION too
-our $VERSION = "0.24";
+our $VERSION = "0.25";
 
 sub new {
 	my $class = shift;

Modified: Nagios-Plugin/trunk/t/Nagios-Plugin-Performance.t
===================================================================
--- Nagios-Plugin/trunk/t/Nagios-Plugin-Performance.t	2008-03-16 18:10:47 UTC (rev 1951)
+++ Nagios-Plugin/trunk/t/Nagios-Plugin-Performance.t	2008-03-17 20:32:11 UTC (rev 1952)
@@ -1,6 +1,6 @@
 
 use strict;
-use Test::More tests => 91;
+use Test::More tests => 111;
 BEGIN { use_ok('Nagios::Plugin::Performance') };
 
 diag "\nusing Nagios::Plugin::Performance revision ". $Nagios::Plugin::Performance::VERSION . "\n" if $ENV{TEST_VERBOSE};
@@ -142,4 +142,33 @@
 cmp_ok( $p[0]->threshold->warning, 'eq', "90", "warn okay");
 cmp_ok( $p[0]->threshold->critical, 'eq', "95", "crit okay");
 
+# Check ranges are parsed correctly
+@p = Nagios::Plugin::Performance->parse_perfstring("availability=93.8%;90:99;");
+is( $p[0]->label, "availability", "label okay");
+is( $p[0]->value, "93.8", "value okay");
+is( $p[0]->uom, "%", "uom okay");
+ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
+is( $p[0]->threshold->critical->is_set, 0, "Critical range has not been set");
+is( $p[0]->threshold->warning, "90:99", "warn okay");
+
+# Check that negative values are parsed correctly in value and ranges
+@p = Nagios::Plugin::Performance->parse_perfstring("offset=-0.004476s;-60.000000:-5;-120.000000:-3;");
+is( $p[0]->label, "offset", "label okay");
+is( $p[0]->value, "-0.004476", "value okay");
+is( $p[0]->uom, "s", "uom okay");
+ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
+ok( defined eval { $p[0]->threshold->critical->is_set }, "Critical range has been set");
+is( $p[0]->threshold->warning, "-60:-5", "warn okay");
+is( $p[0]->threshold->critical, "-120:-3", "crit okay");
+
+# Check infinity values are okay
+@p = Nagios::Plugin::Performance->parse_perfstring("salary=52GBP;~:23;45:");
+is( $p[0]->label, "salary", "label okay");
+is( $p[0]->value, "52", "value okay");
+is( $p[0]->uom, "GBP", "uom okay");
+ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
+is( $p[0]->threshold->critical->is_set, 1, "Critical range has been set");
+is( $p[0]->threshold->warning, "~:23", "warn okay");
+is( $p[0]->threshold->critical, "45:", "warn okay");
+
 # add_perfdata tests in t/Nagios-Plugin-01.t


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.