OSDN Git Service

d878df41032432ad604aae0ad6a006b848d4a380
[ultramonkey-l7/ultramonkey-l7-v2.git] / l7directord / t / 02_cmd.t
1 use strict;
2 use warnings;
3 no warnings qw(redefine once);
4 use lib qw(t/lib lib);
5 use L7lib;
6 use Test::More tests => 75;
7
8 L7lib::chdir();
9 L7lib::comment_out();
10 require './l7directord';
11 override();
12 default_value();
13
14 our $signal = undef;
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;
25 our $run_pid = 0;
26 our $ld_main_called = 0;
27 our $remove_pid_called = 0;
28
29 close *STDOUT;
30 open  *STDOUT, '>', '/dev/null';
31 close *STDERR;
32 open  *STDERR, '>', '/dev/null';
33
34 #...............................................
35 # test start
36 #   - cmd_start
37 {
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;
44     local $run_pid               = 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';
59 }
60 {
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;
67     local $run_pid               = 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';
85 }
86 {
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;
93     local $run_pid               = 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';
111 }
112 {
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';
122 }
123 #   - cmd_stop
124 {
125     local @read_pid_return = ();
126     my $got = cmd_stop();
127     is $got, 2, 'cmd_stop - not running(1)';
128 }
129 {
130     local @read_pid_return = (undef, undef);
131     my $got = cmd_stop();
132     is $got, 2, 'cmd_stop - not running(2)';
133 }
134 {
135     local @read_pid_return = (undef, 100);
136     my $got = cmd_stop();
137     is $got, 2, 'cmd_stop - stale pid exist';
138 }
139 {
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';
145 }
146 {
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';
152 }
153 #   - cmd_restart
154 {
155     local *cmd_start = \&__cmd_start;
156     local *cmd_stop  = \&__cmd_stop;
157     {
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';
162     }
163     {
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';
168     }
169     {
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';
174     }
175     {
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';
180     }
181 }
182 #   - cmd_try_restart
183 {
184     local *cmd_start = \&__cmd_start;
185     local *cmd_stop  = \&__cmd_stop;
186     {
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';
191     }
192     {
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';
197     }
198     {
199         local $cmd_stop_return  = 2;
200         my $got = cmd_try_restart();
201         is $got, 2, 'cmd_try_restart - stop fail';
202     }
203 }
204 #   - cmd_reload
205 {
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';
211 }
212 {
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';
218 }
219 {
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';
225 }
226 {
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';
234 }
235 {
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';
243 }
244 #   - cmd_status
245 {
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';
251 }
252 {
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';
258 }
259 {
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';
265 }
266 {
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';
272 }
273 #   - cmd_configtest
274 {
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';
279 }
280 #   - cmd_version
281 {
282     my $got = cmd_version();
283     is $got, 0, 'cmd_version';
284 }
285 #   - cmd_help
286 {
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';
292 }
293 #   - cmd_usage
294 {
295     my $got = cmd_usage();
296     is $got, 0, 'cmd_usage';
297 }
298
299
300 # test end
301 #...............................................
302
303 L7lib::comment_in();
304
305 sub default_value {
306     $main::CONFIG_FILE{filename} = 'filename';
307     $main::CONFIG_FILE{path}     = '/path/filename';
308     $main::CONFIG{supervised}    = 0;
309     $main::DEBUG_LEVEL           = 0;
310 }
311 sub override {
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;
323 }
324 sub __cmd_start {
325     return $cmd_start_return;
326 }
327 sub __cmd_stop {
328     return $cmd_stop_return;
329 }
330 sub __set_ld_handler {
331     $set_ld_handler_called++;
332 }
333 sub __read_config {
334     $read_config_called++;
335 }
336 sub __ld_setup {
337     $ld_setup_called++;
338 }
339 sub __read_pid {
340     return wantarray ? @read_pid_return : $read_pid_return[0];
341 }
342 sub __write_pid {
343     $run_pid = shift;
344 }
345 sub __ld_cmd_children {
346     push @children_command, @_;
347 }
348 sub __ld_main {
349     $ld_main_called++;
350 }
351 sub __remove_pid {
352     $remove_pid_called++;
353 }
354 sub __system_wrapper {
355     $system_command = shift;
356 }
357 sub __ld_log {
358     $ld_log_called++;
359 }
360 sub __ld_daemon {
361     $ld_daemon_called++;
362 }