summaryrefslogtreecommitdiffstats
path: root/plugins-scripts/t/check_file_age.t
blob: ebf673f582ecff49eef9edf3bba18848edea79b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/perl -w -I ..
#
# check_file_age tests
#
#

use strict;
use Test::More tests => 27;
use NPTest;

my $successOutput = '/^FILE_AGE OK: /';
my $warningOutput = '/^FILE_AGE WARNING: /';
my $criticalOutput = '/^FILE_AGE CRITICAL: /';
my $unknownOutput = '/^FILE_AGE UNKNOWN: /';
my $performanceOutput = '/ \| age=[0-9]+s;[0-9:]+;[0-9:]+ size=[0-9]+B;[0-9:]+;[0-9:]+;0$/';

my $result;
my $temp_file = "/tmp/check_file_age.tmp";
my $temp_link = "/tmp/check_file_age.link.tmp";

unlink $temp_file, $temp_link;

$result = NPTest->testCmd(
	"./check_file_age"
	);
cmp_ok( $result->return_code, '==', 3, "Missing parameters" );
like  ( $result->output, $unknownOutput, "Output for unknown correct" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file"
	);
cmp_ok( $result->return_code, '==', 2, "File not exists" );
like  ( $result->output, $criticalOutput, "Output for file missing correct" );

write_chars(100);
$result = NPTest->testCmd(
	"./check_file_age -f $temp_file"
	);
cmp_ok( $result->return_code, '==', 0, "File is new enough" );
like  ( $result->output, $successOutput, "Output for success correct" );

sleep 2;

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -w 1"
	);
cmp_ok( $result->return_code, '==', 1, "Warning for file over 1 second old" );
like  ( $result->output, $warningOutput, "Output for warning correct" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -w 0:1"
	);
cmp_ok( $result->return_code, '==', 1, "Warning for file over 1 second old by range" );
like  ( $result->output, $warningOutput, "Output for warning by range correct" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1"
	);
cmp_ok( $result->return_code, '==', 2, "Critical for file over 1 second old" );
like  ( $result->output, $criticalOutput, "Output for critical correct" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 0:1"
	);
cmp_ok( $result->return_code, '==', 2, "Critical for file over 1 second old by range" );
like  ( $result->output, $criticalOutput, "Output for critical by range correct" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 100"
	);
cmp_ok( $result->return_code, '==', 0, "Checking file size" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 0:1000 -W 0:100"
	);
cmp_ok( $result->return_code, '==', 0, "Checking file size by range" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 100"
	);
like( $result->output, $performanceOutput, "Checking for performance Output" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 100"
	);
like( $result->output, $performanceOutput, "Checking for performance Output from range" );

$result = NPTest->testCmd(
	"./check_file_age -f /non/existent --ignore-missing"
	);
cmp_ok( $result->return_code, '==', 0, "Honours --ignore-missing" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 101"
	);
cmp_ok( $result->return_code, '==', 1, "One byte too short" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 101:"
	);
cmp_ok( $result->return_code, '==', 1, "One byte too short by range" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -C 101"
	);
cmp_ok( $result->return_code, '==', 2, "One byte too short - critical" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -C 101:"
	);
cmp_ok( $result->return_code, '==', 2, "One byte too short by range - critical" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -W 0:99"
	);
cmp_ok( $result->return_code, '==', 1, "One byte too long by range" );

$result = NPTest->testCmd(
	"./check_file_age -f $temp_file -c 1000 -C 0:99"
	);
cmp_ok( $result->return_code, '==', 2, "One byte too long by range - critical" );

symlink $temp_file, $temp_link or die "Cannot create symlink";
$result = NPTest->testCmd("./check_file_age -f $temp_link -c 10");
cmp_ok( $result->return_code, '==', 0, "Works for symlinks" );
unlink $temp_link;

unlink $temp_file;
mkdir $temp_file or die "Cannot create directory";
$result = NPTest->testCmd("./check_file_age -f $temp_file -c 1");
cmp_ok( $result->return_code, '==', 0, "Works for directories" );
rmdir $temp_file;


sub write_chars {
	my $size = shift;
	open F, "> $temp_file" or die "Cannot write to $temp_file";
	print F "A" x $size;
	close F;
}