From ec18b80cdbdc2c4c1e7eb587e251177e8cc7ca11 Mon Sep 17 00:00:00 2001 From: Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> Date: Wed, 19 Feb 2025 12:07:01 +0100 Subject: Add tests for check_swap with JSON output --- plugins/t/check_swap.t | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'plugins/t/check_swap.t') 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"); -- cgit v1.2.3-74-g34f1