summaryrefslogtreecommitdiffstats
path: root/NPTest.pm
diff options
context:
space:
mode:
authorTon Voon <tonvoon@users.sourceforge.net>2005-11-09 16:40:12 +0000
committerTon Voon <tonvoon@users.sourceforge.net>2005-11-09 16:40:12 +0000
commit6224ec31587dc70b21b487a57d59cb863c2cd3a8 (patch)
tree29329797f7e4b4211f119d267ff446bf93a95b57 /NPTest.pm
parent38873559580dab20ad4a450136b980849874ed57 (diff)
downloadmonitoring-plugins-6224ec31587dc70b21b487a57d59cb863c2cd3a8.tar.gz
Added new NPTest->testCmd which returns objects back for testing
at the test script level. Updated check_swap and check_imap to this new format git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1279 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'NPTest.pm')
-rw-r--r--NPTest.pm72
1 files changed, 60 insertions, 12 deletions
diff --git a/NPTest.pm b/NPTest.pm
index 8f20678b..440e7343 100644
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -31,7 +31,7 @@ NPTest - Simplify the testing of Nagios Plugins
31 31
32This modules provides convenience functions to assist in the testing 32This modules provides convenience functions to assist in the testing
33of Nagios Plugins, making the testing code easier to read and write; 33of Nagios Plugins, making the testing code easier to read and write;
34hopefully encouraging the development of more complete test suite for 34hopefully encouraging the development of a more complete test suite for
35the Nagios Plugins. It is based on the patterns of testing seen in the 35the Nagios Plugins. It is based on the patterns of testing seen in the
361.4.0 release, and continues to use the L<Test> module as the basis of 361.4.0 release, and continues to use the L<Test> module as the basis of
37testing. 37testing.
@@ -80,8 +80,17 @@ that, such defaults are not stored in the cache, as there is currently
80no mechanism to edit existing cache entries, save the use of text 80no mechanism to edit existing cache entries, save the use of text
81editor or removing the cache file completely. 81editor or removing the cache file completely.
82 82
83=item C<testCmd($command)>
84
85Call with NPTest->testCmd("./check_disk ...."). This returns a NPTest object
86which you can then run $object->return_code or $object->output against.
87
88Testing of results would be done in your test script, not in this module.
89
83=item C<checkCmd(...)> 90=item C<checkCmd(...)>
84 91
92This function is obsolete. Use C<testCmd()> instead.
93
85This function attempts to encompass the majority of test styles used 94This function attempts to encompass the majority of test styles used
86in testing Nagios Plugins. As each plug-in is a separate command, the 95in testing Nagios Plugins. As each plug-in is a separate command, the
87typical tests we wish to perform are against the exit status of the 96typical tests we wish to perform are against the exit status of the
@@ -213,21 +222,14 @@ sub checkCmd
213{ 222{
214 my( $command, $desiredExitStatus, $desiredOutput, %exceptions ) = @_; 223 my( $command, $desiredExitStatus, $desiredOutput, %exceptions ) = @_;
215 224
216 my $output = `${command}`; 225 my $result = NPTest->testCmd($command);
217 my $exitStatus = $? >> 8; 226
227 my $output = $result->output;
228 my $exitStatus = $result->return_code;
218 229
219 $output = "" unless defined( $output ); 230 $output = "" unless defined( $output );
220 chomp( $output ); 231 chomp( $output );
221 232
222 if ( exists( $ENV{'NPTEST_DEBUG'} ) && $ENV{'NPTEST_DEBUG'} )
223 {
224 my( $pkg, $file, $line ) = caller(0);
225
226 print "checkCmd: Called from line $line in $file\n";
227 print "Testing : ${command}\n";
228 print "Result : ${exitStatus} AND '${output}'\n";
229 }
230
231 my $testStatus; 233 my $testStatus;
232 234
233 my $testOutput = "continue"; 235 my $testOutput = "continue";
@@ -547,7 +549,53 @@ sub TestsFrom
547 return @tests; 549 return @tests;
548} 550}
549 551
552# All the new object oriented stuff below
550 553
554sub new {
555 my $type = shift;
556 my $self = {};
557 return bless $self, $type;
558}
559
560# Accessors
561sub return_code {
562 my $self = shift;
563 if (@_) {
564 return $self->{return_code} = shift;
565 } else {
566 return $self->{return_code};
567 }
568}
569sub output {
570 my $self = shift;
571 if (@_) {
572 return $self->{output} = shift;
573 } else {
574 return $self->{output};
575 }
576}
577
578sub testCmd {
579 my $class = shift;
580 my $command = shift or die "No command passed to testCmd";
581 my $object = $class->new;
582
583 my $output = `$command`;
584 chomp $output;
585
586 $object->output($output);
587 $object->return_code($? >> 8);
588
589 if ($ENV{'NPTEST_DEBUG'}) {
590 my ($pkg, $file, $line) = caller(0);
591 print "testCmd: Called from line $line in $file", $/;
592 print "Testing: $command", $/;
593 print "Output: ", $object->output, $/;
594 print "Return code: ", $object->return_code, $/;
595 }
596
597 return $object;
598}
551 599
5521; 6001;
553# 601#