summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTon Voon <tonvoon@users.sourceforge.net>2008-03-17 20:32:11 (GMT)
committerTon Voon <tonvoon@users.sourceforge.net>2008-03-17 20:32:11 (GMT)
commit9d5427f392b4b03b7fd558b4be628653d140f6c0 (patch)
tree6d52797148baf7371071c05d98a6b60e97f1e6e2
parent405590a12a5552df48d8153f91e529bad0a9c528 (diff)
downloadmonitoring-plugin-perl-9d5427f392b4b03b7fd558b4be628653d140f6c0.tar.gz
Fixed parsing of negative values and support full range definitions
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/Nagios-Plugin/trunk@1952 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--Changes3
-rw-r--r--lib/Nagios/Plugin.pm2
-rw-r--r--lib/Nagios/Plugin/Functions.pm2
-rw-r--r--lib/Nagios/Plugin/Performance.pm4
-rw-r--r--t/Nagios-Plugin-Performance.t31
5 files changed, 38 insertions, 4 deletions
diff --git a/Changes b/Changes
index 471bb31..d680524 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
1Revision history for Perl module Nagios::Plugin. 1Revision history for Perl module Nagios::Plugin.
2 2
30.25 17th March 2008
4 - Fixed parsing of performance data with negative values and full range definitions
5
30.24 1st February 2008 60.24 1st February 2008
4 - Fixed a test failure which highlighted a precision rounding within hashes 7 - Fixed a test failure which highlighted a precision rounding within hashes
5 8
diff --git a/lib/Nagios/Plugin.pm b/lib/Nagios/Plugin.pm
index b395b68..edcb2c3 100644
--- a/lib/Nagios/Plugin.pm
+++ b/lib/Nagios/Plugin.pm
@@ -25,7 +25,7 @@ our @EXPORT_OK = qw(%ERRORS);
25# CPAN stupidly won't index this module without a literal $VERSION here, 25# CPAN stupidly won't index this module without a literal $VERSION here,
26# so we're forced to duplicate it explicitly 26# so we're forced to duplicate it explicitly
27# Make sure you update $Nagios::Plugin::Functions::VERSION too 27# Make sure you update $Nagios::Plugin::Functions::VERSION too
28our $VERSION = "0.24"; 28our $VERSION = "0.25";
29 29
30sub new { 30sub new {
31 my $class = shift; 31 my $class = shift;
diff --git a/lib/Nagios/Plugin/Functions.pm b/lib/Nagios/Plugin/Functions.pm
index 2638b8d..0f33121 100644
--- a/lib/Nagios/Plugin/Functions.pm
+++ b/lib/Nagios/Plugin/Functions.pm
@@ -12,7 +12,7 @@ use Params::Validate qw(:types validate);
12use Math::Calc::Units; 12use Math::Calc::Units;
13 13
14# Remember to update Nagios::Plugins as well 14# Remember to update Nagios::Plugins as well
15our $VERSION = "0.24"; 15our $VERSION = "0.25";
16 16
17our @STATUS_CODES = qw(OK WARNING CRITICAL UNKNOWN DEPENDENT); 17our @STATUS_CODES = qw(OK WARNING CRITICAL UNKNOWN DEPENDENT);
18 18
diff --git a/lib/Nagios/Plugin/Performance.pm b/lib/Nagios/Plugin/Performance.pm
index 55e3ddc..403492c 100644
--- a/lib/Nagios/Plugin/Performance.pm
+++ b/lib/Nagios/Plugin/Performance.pm
@@ -22,10 +22,12 @@ sub import {
22 Nagios::Plugin::Functions::_use_die($_); 22 Nagios::Plugin::Functions::_use_die($_);
23} 23}
24 24
25my $value_re = qr/[-+]?[\d\.]+/;
26my $value_re_with_negative_infinity = qr/$value_re|~/;
25sub _parse { 27sub _parse {
26 my $class = shift; 28 my $class = shift;
27 my $string = shift; 29 my $string = shift;
28 $string =~ s/^([^=]+)=([\d\.]+)([\w%]*);?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?;?([\d\.]+)?\s*//; 30 $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;
29 return undef unless ((defined $1 && $1 ne "") && (defined $2 && $2 ne "")); 31 return undef unless ((defined $1 && $1 ne "") && (defined $2 && $2 ne ""));
30 my $p = $class->new( 32 my $p = $class->new(
31 label => $1, value => $2+0, uom => $3, warning => $4, critical => $5, 33 label => $1, value => $2+0, uom => $3, warning => $4, critical => $5,
diff --git a/t/Nagios-Plugin-Performance.t b/t/Nagios-Plugin-Performance.t
index 0574ea0..7a28546 100644
--- a/t/Nagios-Plugin-Performance.t
+++ b/t/Nagios-Plugin-Performance.t
@@ -1,6 +1,6 @@
1 1
2use strict; 2use strict;
3use Test::More tests => 91; 3use Test::More tests => 111;
4BEGIN { use_ok('Nagios::Plugin::Performance') }; 4BEGIN { use_ok('Nagios::Plugin::Performance') };
5 5
6diag "\nusing Nagios::Plugin::Performance revision ". $Nagios::Plugin::Performance::VERSION . "\n" if $ENV{TEST_VERBOSE}; 6diag "\nusing Nagios::Plugin::Performance revision ". $Nagios::Plugin::Performance::VERSION . "\n" if $ENV{TEST_VERBOSE};
@@ -142,4 +142,33 @@ cmp_ok( $p[0]->uom, "eq", "%", "uom okay");
142cmp_ok( $p[0]->threshold->warning, 'eq', "90", "warn okay"); 142cmp_ok( $p[0]->threshold->warning, 'eq', "90", "warn okay");
143cmp_ok( $p[0]->threshold->critical, 'eq', "95", "crit okay"); 143cmp_ok( $p[0]->threshold->critical, 'eq', "95", "crit okay");
144 144
145# Check ranges are parsed correctly
146@p = Nagios::Plugin::Performance->parse_perfstring("availability=93.8%;90:99;");
147is( $p[0]->label, "availability", "label okay");
148is( $p[0]->value, "93.8", "value okay");
149is( $p[0]->uom, "%", "uom okay");
150ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
151is( $p[0]->threshold->critical->is_set, 0, "Critical range has not been set");
152is( $p[0]->threshold->warning, "90:99", "warn okay");
153
154# Check that negative values are parsed correctly in value and ranges
155@p = Nagios::Plugin::Performance->parse_perfstring("offset=-0.004476s;-60.000000:-5;-120.000000:-3;");
156is( $p[0]->label, "offset", "label okay");
157is( $p[0]->value, "-0.004476", "value okay");
158is( $p[0]->uom, "s", "uom okay");
159ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
160ok( defined eval { $p[0]->threshold->critical->is_set }, "Critical range has been set");
161is( $p[0]->threshold->warning, "-60:-5", "warn okay");
162is( $p[0]->threshold->critical, "-120:-3", "crit okay");
163
164# Check infinity values are okay
165@p = Nagios::Plugin::Performance->parse_perfstring("salary=52GBP;~:23;45:");
166is( $p[0]->label, "salary", "label okay");
167is( $p[0]->value, "52", "value okay");
168is( $p[0]->uom, "GBP", "uom okay");
169ok( defined eval { $p[0]->threshold->warning->is_set }, "Warning range has been set");
170is( $p[0]->threshold->critical->is_set, 1, "Critical range has been set");
171is( $p[0]->threshold->warning, "~:23", "warn okay");
172is( $p[0]->threshold->critical, "45:", "warn okay");
173
145# add_perfdata tests in t/Nagios-Plugin-01.t 174# add_perfdata tests in t/Nagios-Plugin-01.t