3 no warnings qw(redefine once);
6 use Test::More tests => 75;
10 require './l7directord';
15 our $read_config_called = 0;
16 our $ld_log_called = 0;
17 our @read_pid_return = ();
18 our @children_command = ();
19 our $system_command = undef;
20 our $cmd_start_return = undef;
21 our $cmd_stop_return = undef;
22 our $set_ld_handler_called = 0;
23 our $ld_setup_called = 0;
24 our $ld_daemon_called = 0;
26 our $ld_main_called = 0;
27 our $remove_pid_called = 0;
30 open *STDOUT, '>', '/dev/null';
32 open *STDERR, '>', '/dev/null';
34 #...............................................
38 local $set_ld_handler_called = 0;
39 local $read_config_called = 0;
40 local $ld_setup_called = 0;
41 local @read_pid_return = ();
42 local $ld_log_called = 0;
43 local $ld_daemon_called = 0;
45 local @children_command = ();
46 local $remove_pid_called = 0;
47 my $got = cmd_start();
48 is $got, 0, 'cmd_start - run as daemon';
49 is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
50 is $read_config_called, 1, 'cmd_start - read_config';
51 is $ld_setup_called, 1, 'cmd_start - ld_setup';
52 is $ld_log_called, 2, 'cmd_start - ld_log';
53 is $ld_daemon_called, 1, 'cmd_start - ld_daemon';
54 is $main::PROC_STAT{pid}, $$, 'cmd_start - save pid';
55 is $run_pid, $$, 'cmd_start - write_pid';
56 is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
57 is $ld_main_called, 1, 'cmd_start - ld_main';
58 is $remove_pid_called, 1, 'cmd_start - remove_pid';
61 local $set_ld_handler_called = 0;
62 local $read_config_called = 0;
63 local $ld_setup_called = 0;
64 local @read_pid_return = ();
65 local $ld_log_called = 0;
66 local $ld_daemon_called = 0;
68 local @children_command = ();
69 local $ld_main_called = 0;
70 local $remove_pid_called = 0;
71 local $main::CONFIG{supervised} = 1;
72 local $main::DEBUG_LEVEL = 0;
73 local $main::PROC_STAT{pid} = 10000;
74 my $got = cmd_start();
75 is $got, 0, 'cmd_start - run supervised mode';
76 is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
77 is $read_config_called, 1, 'cmd_start - read_config';
78 is $ld_setup_called, 1, 'cmd_start - ld_setup';
79 is $ld_log_called, 2, 'cmd_start - ld_log';
80 is $ld_daemon_called, 0, 'cmd_start - no ld_daemon';
81 is $run_pid, 10000, 'cmd_start - write_pid';
82 is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
83 is $ld_main_called, 1, 'cmd_start - ld_main';
84 is $remove_pid_called, 1, 'cmd_start - remove_pid';
87 local $set_ld_handler_called = 0;
88 local $read_config_called = 0;
89 local $ld_setup_called = 0;
90 local @read_pid_return = ();
91 local $ld_log_called = 0;
92 local $ld_daemon_called = 0;
94 local @children_command = ();
95 local $ld_main_called = 0;
96 local $remove_pid_called = 0;
97 local $main::CONFIG{supervised} = 0;
98 local $main::DEBUG_LEVEL = 3;
99 local $main::PROC_STAT{pid} = 20000;
100 my $got = cmd_start();
101 is $got, 0, 'cmd_start - run debug mode';
102 is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
103 is $read_config_called, 1, 'cmd_start - read_config';
104 is $ld_setup_called, 1, 'cmd_start - ld_setup';
105 is $ld_log_called, 2, 'cmd_start - ld_log';
106 is $ld_daemon_called, 0, 'cmd_start - no ld_daemon';
107 is $run_pid, 20000, 'cmd_start - write_pid';
108 is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
109 is $ld_main_called, 1, 'cmd_start - ld_main';
110 is $remove_pid_called, 1, 'cmd_start - remove_pid';
113 local $set_ld_handler_called = 0;
114 local $read_config_called = 0;
115 local $ld_setup_called = 0;
116 local @read_pid_return = (100);
117 my $got = cmd_start();
118 is $got, 1, 'cmd_start - already running';
119 is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
120 is $read_config_called, 1, 'cmd_start - read_config';
121 is $ld_setup_called, 1, 'cmd_start - ld_setup';
125 local @read_pid_return = ();
126 my $got = cmd_stop();
127 is $got, 2, 'cmd_stop - not running(1)';
130 local @read_pid_return = (undef, undef);
131 my $got = cmd_stop();
132 is $got, 2, 'cmd_stop - not running(2)';
135 local @read_pid_return = (undef, 100);
136 my $got = cmd_stop();
137 is $got, 2, 'cmd_stop - stale pid exist';
140 local $SIG{TERM} = sub { $signal = shift; };
141 local @read_pid_return = ($$);
142 my $got = cmd_stop();
143 is $got, 0, 'cmd_stop - running';
144 is $signal, 'TERM', 'cmd_stop - signal send';
147 local @read_pid_return = (99999);
148 local $ld_log_called = 0;
149 my $got = cmd_stop();
150 is $got, 3, 'cmd_stop - signal error';
151 is $ld_log_called, 0, 'cmd_stop - ld_log';
155 local *cmd_start = \&__cmd_start;
156 local *cmd_stop = \&__cmd_stop;
158 local $cmd_stop_return = 0;
159 local $cmd_start_return = 0;
160 my $got = cmd_restart();
161 is $got, 0, 'cmd_restart - stop success, start success';
164 local $cmd_stop_return = 0;
165 local $cmd_start_return = 1;
166 my $got = cmd_restart();
167 is $got, 1, 'cmd_restart - stop success, start fail';
170 local $cmd_stop_return = 1;
171 local $cmd_start_return = 0;
172 my $got = cmd_restart();
173 is $got, 0, 'cmd_restart - stop fail, start success';
176 local $cmd_stop_return = 1;
177 local $cmd_start_return = 1;
178 my $got = cmd_restart();
179 is $got, 1, 'cmd_restart - stop fail, start fail';
184 local *cmd_start = \&__cmd_start;
185 local *cmd_stop = \&__cmd_stop;
187 local $cmd_stop_return = 0;
188 local $cmd_start_return = 0;
189 my $got = cmd_try_restart();
190 is $got, 0, 'cmd_try_restart - stop success, start success';
193 local $cmd_stop_return = 0;
194 local $cmd_start_return = 1;
195 my $got = cmd_try_restart();
196 is $got, 1, 'cmd_try_restart - stop success, start fail';
199 local $cmd_stop_return = 2;
200 my $got = cmd_try_restart();
201 is $got, 2, 'cmd_try_restart - stop fail';
206 local $read_config_called = 0;
207 local @read_pid_return = ();
208 my $got = cmd_reload();
209 is $got, 2, 'cmd_reload - not running(1)';
210 is $read_config_called, 1, 'cmd_reload - read_config';
213 local $read_config_called = 0;
214 local @read_pid_return = (undef, undef);
215 my $got = cmd_reload();
216 is $got, 2, 'cmd_reload - not running(2)';
217 is $read_config_called, 1, 'cmd_reload - read_config';
220 local $read_config_called = 0;
221 local @read_pid_return = (undef, 100);
222 my $got = cmd_reload();
223 is $got, 2, 'cmd_reload - stale pid exist';
224 is $read_config_called, 1, 'cmd_reload - read_config';
227 local $SIG{HUP} = sub { $signal = shift; };
228 local $read_config_called = 0;
229 local @read_pid_return = ($$);
230 my $got = cmd_reload();
231 is $got, 0, 'cmd_reload - running';
232 is $read_config_called, 1, 'cmd_reload - read_config';
233 is $signal, 'HUP', 'cmd_reload - signal send';
236 local $read_config_called = 0;
237 local $ld_log_called = 0;
238 local @read_pid_return = (99999);
239 my $got = cmd_reload();
240 is $got, 3, 'cmd_reload - signal error';
241 is $read_config_called, 1, 'cmd_reload - read_config';
242 is $ld_log_called, 0, 'cmd_reload - ld_log';
246 local @read_pid_return = ();
247 local @children_command = ();
248 my $got = cmd_status();
249 is $got, 2, 'cmd_status - not running(1)';
250 is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
253 local @read_pid_return = (undef, undef);
254 local @children_command = ();
255 my $got = cmd_status();
256 is $got, 2, 'cmd_status - not running(2)';
257 is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
260 local @children_command = ();
261 local @read_pid_return = (999);
262 my $got = cmd_status();
263 is $got, 0, 'cmd_status - running';
264 is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
267 local @children_command = ();
268 local @read_pid_return = (undef, 1000);
269 my $got = cmd_status();
270 is $got, 2, 'cmd_status - stale pid exist';
271 is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
275 local $read_config_called = 0;
276 my $got = cmd_configtest();
277 is $got, 0, 'cmd_configtest';
278 is $read_config_called, 1, 'configtest - read_config';
282 my $got = cmd_version();
283 is $got, 0, 'cmd_version';
287 local $system_command = undef;
288 $main::PROC_ENV{l7directord} = '_l7directord_';
289 my $got = cmd_help();
290 is $got, 0, 'cmd_help';
291 is $system_command, '/usr/bin/perldoc _l7directord_', 'perldoc command';
295 my $got = cmd_usage();
296 is $got, 0, 'cmd_usage';
301 #...............................................
306 $main::CONFIG_FILE{filename} = 'filename';
307 $main::CONFIG_FILE{path} = '/path/filename';
308 $main::CONFIG{supervised} = 0;
309 $main::DEBUG_LEVEL = 0;
312 *set_ld_handler = \&__set_ld_handler;
313 *read_config = \&__read_config;
314 *ld_setup = \&__ld_setup;
315 *read_pid = \&__read_pid;
316 *write_pid = \&__write_pid;
317 *ld_cmd_children = \&__ld_cmd_children;
318 *ld_main = \&__ld_main;
319 *remove_pid = \&__remove_pid;
320 *system_wrapper = \&__system_wrapper;
321 *ld_log = \&__ld_log;
322 *ld_daemon = \&__ld_daemon;
325 return $cmd_start_return;
328 return $cmd_stop_return;
330 sub __set_ld_handler {
331 $set_ld_handler_called++;
334 $read_config_called++;
340 return wantarray ? @read_pid_return : $read_pid_return[0];
345 sub __ld_cmd_children {
346 push @children_command, @_;
352 $remove_pid_called++;
354 sub __system_wrapper {
355 $system_command = shift;