diff options
author | Ton Voon <tonvoon@users.sourceforge.net> | 2005-11-09 16:40:12 (GMT) |
---|---|---|
committer | Ton Voon <tonvoon@users.sourceforge.net> | 2005-11-09 16:40:12 (GMT) |
commit | 6224ec31587dc70b21b487a57d59cb863c2cd3a8 (patch) | |
tree | 29329797f7e4b4211f119d267ff446bf93a95b57 /NPTest.pm | |
parent | 38873559580dab20ad4a450136b980849874ed57 (diff) | |
download | monitoring-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.pm | 72 |
1 files changed, 60 insertions, 12 deletions
@@ -31,7 +31,7 @@ NPTest - Simplify the testing of Nagios Plugins | |||
31 | 31 | ||
32 | This modules provides convenience functions to assist in the testing | 32 | This modules provides convenience functions to assist in the testing |
33 | of Nagios Plugins, making the testing code easier to read and write; | 33 | of Nagios Plugins, making the testing code easier to read and write; |
34 | hopefully encouraging the development of more complete test suite for | 34 | hopefully encouraging the development of a more complete test suite for |
35 | the Nagios Plugins. It is based on the patterns of testing seen in the | 35 | the Nagios Plugins. It is based on the patterns of testing seen in the |
36 | 1.4.0 release, and continues to use the L<Test> module as the basis of | 36 | 1.4.0 release, and continues to use the L<Test> module as the basis of |
37 | testing. | 37 | testing. |
@@ -80,8 +80,17 @@ that, such defaults are not stored in the cache, as there is currently | |||
80 | no mechanism to edit existing cache entries, save the use of text | 80 | no mechanism to edit existing cache entries, save the use of text |
81 | editor or removing the cache file completely. | 81 | editor or removing the cache file completely. |
82 | 82 | ||
83 | =item C<testCmd($command)> | ||
84 | |||
85 | Call with NPTest->testCmd("./check_disk ...."). This returns a NPTest object | ||
86 | which you can then run $object->return_code or $object->output against. | ||
87 | |||
88 | Testing of results would be done in your test script, not in this module. | ||
89 | |||
83 | =item C<checkCmd(...)> | 90 | =item C<checkCmd(...)> |
84 | 91 | ||
92 | This function is obsolete. Use C<testCmd()> instead. | ||
93 | |||
85 | This function attempts to encompass the majority of test styles used | 94 | This function attempts to encompass the majority of test styles used |
86 | in testing Nagios Plugins. As each plug-in is a separate command, the | 95 | in testing Nagios Plugins. As each plug-in is a separate command, the |
87 | typical tests we wish to perform are against the exit status of the | 96 | typical 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 | ||
554 | sub new { | ||
555 | my $type = shift; | ||
556 | my $self = {}; | ||
557 | return bless $self, $type; | ||
558 | } | ||
559 | |||
560 | # Accessors | ||
561 | sub return_code { | ||
562 | my $self = shift; | ||
563 | if (@_) { | ||
564 | return $self->{return_code} = shift; | ||
565 | } else { | ||
566 | return $self->{return_code}; | ||
567 | } | ||
568 | } | ||
569 | sub output { | ||
570 | my $self = shift; | ||
571 | if (@_) { | ||
572 | return $self->{output} = shift; | ||
573 | } else { | ||
574 | return $self->{output}; | ||
575 | } | ||
576 | } | ||
577 | |||
578 | sub 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 | ||
552 | 1; | 600 | 1; |
553 | # | 601 | # |