File: 040eventlog.t

package info (click to toggle)
monitoring-plugins-check-logfiles 4.1.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,024 kB
  • sloc: perl: 19,496; sh: 3,422; makefile: 72; awk: 41
file content (139 lines) | stat: -rw-r--r-- 4,223 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/perl -w
#
# ~/check_logfiles/test/040eventlog.t
#
#  Test that all the Perl modules we require are available.
#

use strict;
use Test::More;
use Cwd;
use lib "../plugins-scripts";
use Nagios::CheckLogfiles::Test;
use constant TESTDIR => ".";
use Data::Dumper;

if ($^O !~ /MSWin/) {
  diag("this is not a windows machine");
  plan skip_all => 'Test only relevant on Windows';
} elsif ($^O eq "cygwin") {
  diag("this is a windows machine, but cygwin. this worked in former times, afte
r vista you have to use native windows for the tests");
  plan skip_all => 'Test only relevant on Windows';
} else {
  plan tests => 7;
}

my $cl = Nagios::CheckLogfiles::Test->new({
	protocolsdir => TESTDIR."/var/tmp",
	seekfilesdir => TESTDIR."/var/tmp",
	searches => [
	    {
	      tag => "ssh",
	      type => "eventlog",
              criticalpatterns => ["Adobe", "Firewall" ],
              eventlog => {
              	eventlog => "application",
              }
	    }
	]    });
my $ssh = $cl->get_search_by_tag("ssh");
if ($^O !~ /MSWin|cygwin/) {
  diag("windows only");
  foreach (1..7) {ok(1)};
  exit 0;
}
$ssh->delete_seekfile();
$ssh->trace("deleted seekfile");

# 1 logfile will be created. there is no seekfile. position at the end of file
# and remember this as starting point for the next run.
$ssh->trace(sprintf "+----------------------- test %d ------------------", 1);
sleep 2;
$ssh->trace("initial run");
$cl->run(); # cleanup
diag("1st run");
$cl->reset();
diag("cleanup");
$ssh->logger(undef, undef, 1, "Fireball 1hihi");
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage});
ok($cl->expect_result(0, 0, 0, 0, 0)); #1

# 2 now find the two criticals
$ssh->trace(sprintf "+----------------------- test %d ------------------", 2);
$cl->reset();
sleep 30;
$ssh->logger(undef, undef, 1, "Fireball 2hihi");
$ssh->logger(undef, undef, 1, "Fireball 3hihi");
$ssh->logger(undef, undef, 1, "Firewall problem1");
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage}.'|'.$cl->{perfdata});
ok($cl->expect_result(0, 0, 0, 0, 0)); #2

# 3 now find the critical (Firewall problem1)
$ssh->trace(sprintf "+----------------------- test %d ------------------", 3);
$cl->reset();
sleep 120;
$cl->run();
$ssh->logger(undef, undef, 2, "Fireball huhuhuhhihi");
diag($cl->has_result());
diag($cl->{exitmessage}.'|'.$cl->{perfdata});
ok($cl->expect_result(0, 0, 1, 0, 2)); #3

# 2 now find the two criticals
$ssh->trace(sprintf "+----------------------- test %d ------------------", 4);
$cl->reset();
$ssh->logger(undef, undef, 1, "Firewall problem2");
sleep 20;
$ssh->logger(undef, undef, 1, "Firewall problem3");
$ssh->logger(undef, undef, 1, "Fireball hihi");
sleep 10;
$ssh->logger(undef, undef, 1, "Firewall problem4");
$ssh->logger(undef, undef, 1, "Fireball hihi");
sleep 10;
$ssh->logger(undef, undef, 1, "Firewall problem5");
$ssh->logger(undef, undef, 1, "Fireball hihi");
sleep 10;
$ssh->logger(undef, undef, 1, "Firewall problem6");
$ssh->logger(undef, undef, 1, "Fireball hihi");
$ssh->logger(undef, undef, 1, "Firewall problem7");
sleep 10;
$cl->run();
diag("now there should be up to 6 criticals");
diag($cl->has_result());
diag($cl->{exitmessage}.'|'.$cl->{perfdata});
#ok($cl->expect_result(0, 0, 6, 0, 2));
$cl->{exitmessage} =~ /.*problem(\d+).*/;
my $problem = $1;
$cl->{perfdata} =~ /.*'ssh_criticals'=(\d+).*/;
my $found = $1;
diag(sprintf "reported %d errors so far. %d to come", $found, 6 - $found);
ok($cl->{exitmessage} =~ /CRITICAL/); #4
ok($problem == $found + 1);

# 3 now find the two criticals and the two warnings
$ssh->trace(sprintf "+----------------------- test %d ------------------", 5);
$cl->reset();
sleep 65;
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage}.'|'.$cl->{perfdata});
if ($found == 6) {
  ok($cl->expect_result(0, 0, 0, 0, 0));
} else {
  ok($cl->expect_result(0, 0, 6 - $found, 0, 2));
}

$ssh->trace(sprintf "+----------------------- test %d ------------------", 6);
$cl->reset();
$ssh->logger(undef, undef, 1, "Firewall problem2");
$ssh->set_option('eventlogformat', '%w id:%i so:%s ca:%c msg:%m');
sleep 20;
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage}.'|'.$cl->{perfdata});
ok($cl->{exitmessage} =~ /id:.*so:.*ca:.*/); #6