[monitoring-plugins] Add tests for check_swap with JSON output

Lorenz Kästle git at monitoring-plugins.org
Fri Feb 21 14:40:11 CET 2025


 Module: monitoring-plugins
 Branch: master
 Commit: ec18b80cdbdc2c4c1e7eb587e251177e8cc7ca11
 Author: Lorenz Kästle <12514511+RincewindsHat at users.noreply.github.com>
   Date: Wed Feb 19 12:07:01 2025 +0100
    URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=ec18b80c

Add tests for check_swap with JSON output

---

 plugins/t/check_swap.t | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/plugins/t/check_swap.t b/plugins/t/check_swap.t
index 6ef2323d..93e481c3 100644
--- a/plugins/t/check_swap.t
+++ b/plugins/t/check_swap.t
@@ -6,8 +6,9 @@
 
 use strict;
 use warnings;
-use Test::More tests => 14;
+use Test::More tests => 35;
 use NPTest;
+use JSON;
 
 my $successOutput = '/^OK.* - [0-9]+\% free \([0-9]+MiB out of [0-9]+MiB\)/';
 my $failureOutput = '/^CRITICAL: .*- [0-9]+\% free \([0-9]+MiB out of [0-9]+MiB\)/';
@@ -43,3 +44,50 @@ like( $result->output, $warnOutput, "Right output" );
 $result = NPTest->testCmd( "./check_swap -c 100% $outputFormat" );				# 100% (single threshold, always critical)
 cmp_ok( $result->return_code, "==", 2, 'Get critical because not 100% free' );
 like( $result->output, $failureOutput, "Right output" );
+
+
+$outputFormat = '--output-format mp-test-json';
+my $output;
+my $message = '/^[0-9]+\% free \([0-9]+MiB out of [0-9]+MiB\)/';
+
+$result = NPTest->testCmd( "./check_swap $outputFormat" );					# Always OK
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "OK", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -w 1048576 -c 1048576 $outputFormat" );		# 1 MB free
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "OK", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -w 1% -c 1% $outputFormat" );			# 1% free
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "OK", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -w 100% -c 100% $outputFormat" );			# 100% (always critical)
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "CRITICAL", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -w 100% -c 1% $outputFormat" );			# 100% (always warn)
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "WARNING", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -w 100% $outputFormat" );				# 100% (single threshold, always warn)
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "WARNING", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");
+
+$result = NPTest->testCmd( "./check_swap -c 100% $outputFormat" );				# 100% (single threshold, always critical)
+cmp_ok( $result->return_code, "==", 0, "Always OK" );
+$output = decode_json($result->output);
+is($output->{'state'}, "CRITICAL", "State was correct");
+like($output->{'checks'}->[0]->{'output'}, $message, "Output was correct");



More information about the Commits mailing list