3 no warnings qw(redefine once);
7 use Test::More tests => 75;
13 require './l7directord';
18 open *STDOUT, '>', '/dev/null';
20 open *STDERR, '>', '/dev/null';
22 #...............................................
28 # - search_config_file
29 # - search_l7vsadm_file
33 test_argv('no ARGV', 10, qw());
34 test_argv('ARGV="usage"', 10, qw(usage));
35 test_argv('unknown ARGV', 10, qw(foobar hogehoge));
36 test_argv('ARGV="help"', 9, qw(help));
37 test_argv('ARGV="--help"', 9, qw(--help));
38 test_argv('ARGV="--h"', 9, qw(--h));
39 test_argv('ARGV="-h"', 9, qw(-h));
40 test_argv('ARGV="version"', 8, qw(version));
41 test_argv('ARGV="--version"', 8, qw(--version));
42 test_argv('ARGV="-v"', 8, qw(-v));
43 test_argv('ARGV="--v"', 8, qw(--v));
44 test_argv('ARGV="configtest"', 7, qw(configtest));
45 test_argv('ARGV="--configtest"', 10, qw(--configtest));
46 test_argv('ARGV="-t"', 7, qw(-t));
47 test_argv('ARGV="--t"', 7, qw(--t));
48 test_argv('ARGV="--test"', 10, qw(--test));
49 test_argv('ARGV="status"', 6, qw(status));
50 test_argv('ARGV="reload"', 5, qw(reload));
51 test_argv('ARGV="try-restart"', 4, qw(try-restart));
52 test_argv('ARGV="restart"', 3, qw(restart));
53 test_argv('ARGV="stop"', 2, qw(stop));
54 test_argv('ARGV="start"', 1, qw(start));
55 test_argv('ARGV="--help start"', 9, qw(--help start));
56 test_argv('ARGV="--version stop"', 8, qw(--version stop));
57 test_argv('ARGV="--help --version"', 9, qw(--help --version));
58 test_argv('ARGV="-t --version"', 8, qw(-t --version));
59 test_argv('ARGV="-t -d"', 7, qw(-t -d));
61 test_argv('ARGV="-d"', 10, qw(-d));
62 is $main::DEBUG_LEVEL, 3, 'default debug level';
64 test_argv('ARGV="-d 1"', 10, qw(-d 1));
65 is $main::DEBUG_LEVEL, 1, 'set debug level';
67 test_argv('ARGV="-d 0"', 10, qw(-d 0));
68 is $main::DEBUG_LEVEL, 0, 'set debug level zero';
70 test_argv('ARGV="-d -1"', 10, qw(-d -1));
71 is $main::DEBUG_LEVEL, -1, 'set debug level minus';
74 skip '/etc/hosts not found', 3 if (!-f '/etc/hosts');
75 test_argv('ARGV="/etc/hosts start"', 1, qw(/etc/hosts start));
76 is $main::CONFIG_FILE{path}, '/etc/hosts', 'set config path(1)';
77 is $main::CONFIG_FILE{filename}, 'hosts', 'set config filename';
81 skip '/etc/hosts not found', 3 if (!-f '/etc/hosts');
82 test_argv('ARGV="-d 20 --version /etc/hosts start"', 8, qw(-d 20 --version /etc/hosts start));
83 is $main::DEBUG_LEVEL, 20, 'set debug level';
84 is $main::CONFIG_FILE{path}, '/etc/hosts', 'set config path';
85 is $main::CONFIG_FILE{filename}, 'hosts', 'set config filename';
89 skip '/etc/ld.so.conf not found', 3 if (!-f '/etc/ld.so.conf');
90 test_argv('ARGV="/etc/ld.so.conf stop"', 2, qw(/etc/ld.so.conf stop));
91 is $main::CONFIG_FILE{path}, '/etc/ld.so.conf', 'set config path(2)';
92 is $main::CONFIG_FILE{filename}, 'ld.so', 'set config filename, omit ".conf"';
96 skip '/etc/mail/sendmail.cf not found', 3 if (!-f '/etc/mail/sendmail.cf');
97 test_argv('ARGV="/etc/mail/sendmail.cf restart"', 3, qw(/etc/mail/sendmail.cf restart));
98 is $main::CONFIG_FILE{path}, '/etc/mail/sendmail.cf', 'set config path(3)';
99 is $main::CONFIG_FILE{filename}, 'sendmail', 'set config filename, omit ".cf"';
103 skip '/a/b/c exist', 1 if (-f '/a/b/c');
104 local @ARGV = qw(/a/b/c reload);
106 is $@, "init_error\n", 'config not found';
112 if (!-f './l7directord.cf') {
113 if (!open my $f, '>', './l7directord.cf') {
115 } else { $made = 1; close $f; }
118 if ($made) { unlink './l7directord.cf'; }
119 skip 'cannot make ./l7directord.cf', 3;
121 test_argv('ARGV="reload"', 5, qw(reload));
122 is $main::CONFIG_FILE{path}, abs_path('./l7directord.cf'), 'search config path(1)';
123 is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename';
124 if ($made) { unlink './l7directord.cf'; }
132 if (-f './l7directord.cf') {
133 if (move './l7directord.cf', 'l7d.bak1') {
139 if (!$fail && !-d '/etc/ha.d/conf') {
140 if (!mkdir '/etc/ha.d/conf') {
142 } else { $mkdir = 1; }
144 if (!$fail && !-f '/etc/ha.d/conf/l7directord.cf') {
145 if (!open my $f, '>', '/etc/ha.d/conf/l7directord.cf') {
147 } else { $made = 1; }
150 if ($made) { unlink '/etc/ha.d/conf/l7directord.cf'; }
151 if ($mkdir) { rmdir '/etc/ha.d/conf'; }
152 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
153 skip 'cannot make /etc/ha.d/conf/l7directord.cf', 3;
155 test_argv('ARGV="try-restart"', 4, qw(try-restart));
156 is $main::CONFIG_FILE{path}, '/etc/ha.d/conf/l7directord.cf', 'search config path(2)';
157 is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename(2)';
158 if ($made) { unlink '/etc/ha.d/conf/l7directord.cf'; }
159 if ($mkdir) { rmdir '/etc/ha.d/conf'; }
160 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
169 if (-f './l7directord.cf') {
170 if (move './l7directord.cf', 'l7d.bak1') {
176 if (!$fail && -f '/etc/ha.d/conf/l7directord.cf') {
177 if (move '/etc/ha.d/conf/l7directord.cf', 'l7d.bak2') {
183 if (!$fail && !-d '/etc/ha.d') {
184 if (!mkdir '/etc/ha.d') {
186 } else { $mkdir = 1; }
188 if (!$fail && !-f '/etc/ha.d/l7directord.cf') {
189 if (!open my $f, '>', '/etc/ha.d/l7directord.cf') {
191 } else { $made = 1; }
194 if ($made) { unlink '/etc/ha.d/l7directord.cf'; }
195 if ($mkdir) { rmdir '/etc/ha.d'; }
196 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
197 if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
198 skip 'cannot make /etc/ha.d/l7directord.cf', 3;
200 test_argv('ARGV="restart"', 3, qw(restart));
201 is $main::CONFIG_FILE{path}, '/etc/ha.d/l7directord.cf', 'search config path(3)';
202 is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename(3)';
203 if ($made) { unlink '/etc/ha.d/l7directord.cf'; }
204 if ($mkdir) { rmdir '/etc/ha.d'; }
205 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
206 if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
214 if (-f './l7directord.cf') {
215 if (move './l7directord.cf', 'l7d.bak1') {
221 if (!$fail && -f '/etc/ha.d/conf/l7directord.cf') {
222 if (move '/etc/ha.d/conf/l7directord.cf', 'l7d.bak2') {
228 if (!$fail && -f '/etc/ha.d/l7directord.cf') {
229 if (move '/etc/ha.d/l7directord.cf', 'l7d.bak3') {
236 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
237 if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
238 if ($bak2) { move 'l7d.bak3', '/etc/ha.d/l7directord.cf'; }
239 skip 'cannot move config search path file', 1;
241 local @ARGV = qw(status);
243 is $@, "init_error\n", 'config not found';
244 if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
245 if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
246 if ($bak2) { move 'l7d.bak3', '/etc/ha.d/l7directord.cf'; }
252 if (!-f './l7vsadm') {
253 if (!open my $f, '>', './l7vsadm') {
255 } else { $made = 1; close $f; }
257 if (!-x './l7vsadm') {
258 if (!chmod 0755, './l7vsadm') {
262 skip 'cannot make ./l7vsadm', 2 if ($fail);
263 test_argv('ARGV="stop"', 2, qw(stop));
264 is $main::PROC_ENV{l7vsadm}, abs_path('./l7vsadm'), 'search l7vsadm(1)';
265 if ($made) { unlink './l7vsadm'; }
273 if (-f './l7vsadm') {
274 if (move './l7vsadm', 'l7v.bak1') {
280 if (!$fail && !-d '/usr/sbin') {
281 if (!mkdir '/usr/sbin') {
283 } else { $mkdir = 1; }
285 if (!$fail && !-f '/usr/sbin/l7vsadm') {
286 if (!open my $f, '>', '/usr/sbin/l7vsadm') {
288 } else { $made = 1; }
290 if (!$fail && !-x '/usr/sbin/l7vsadm') {
291 if (!chmod 0755, '/usr/sbin/l7vsadm') {
295 skip 'cannot make /usr/sbin/l7vsadm', 2 if ($fail);
296 test_argv('ARGV="start"', 1, qw(start));
297 is $main::PROC_ENV{l7vsadm}, '/usr/sbin/l7vsadm', 'search l7vsadm(2)';
298 if ($made) { unlink './l7vsadm'; }
299 if ($mkdir) { rmdir '/usr/sbin'; }
301 move 'l7v.bak1', './l7vsadm';
302 chmod '0755', './l7vsadm';
312 if (-f './l7vsadm') {
313 if (move './l7vsadm', 'l7v.bak1') {
319 if (!$fail && -f '/usr/sbin/l7vsadm') {
320 if (move '/usr/sbin/l7vsadm', 'l7v.bak2') {
326 if (!$fail && (!-d '/sbin')) {
327 if (!mkdir '/sbin') {
329 } else { $mkdir = 1; }
331 if (!$fail && !-f '/sbin/l7vsadm') {
332 if (!open my $f, '>', '/sbin/l7vsadm') {
334 } else { $made = 1; }
336 if (!$fail && !-x '/sbin/l7vsadm') {
337 if (!chmod 0755, '/sbin/l7vsadm') {
342 if ($made) { unlink '/sbin/l7vsadm'; }
343 if ($mkdir) { rmdir '/sbin'; }
345 move 'l7v.bak1', './l7vsadm';
346 chmod '0755', './l7vsadm';
349 move 'l7v.bak2', '/usr/sbin/l7vsadm';
350 chmod '0755', '/usr/sbin/l7vsadm';
352 skip 'cannot make /sbin/l7vsadm', 2;
354 test_argv('ARGV="configtest"', 7, qw(configtest));
355 is $main::PROC_ENV{l7vsadm}, '/sbin/l7vsadm', 'search l7vsadm(3)';
356 if ($made) { unlink '/sbin/l7vsadm'; }
357 if ($mkdir) { rmdir '/sbin'; }
359 move 'l7v.bak1', './l7vsadm';
360 chmod '0755', './l7vsadm';
363 move 'l7v.bak2', '/usr/sbin/l7vsadm';
364 chmod '0755', '/usr/sbin/l7vsadm';
373 if (-f './l7vsadm') {
374 if (move './l7vsadm', 'l7v.bak1') {
380 if (!$fail && -f '/usr/sbin/l7vsadm') {
381 if (move '/usr/sbin/l7vsadm', 'l7v.bak2') {
387 if (!$fail && -f '/sbin/l7vsadm') {
388 if (move '/sbin/l7vsadm', 'l7v.bak3') {
396 move 'l7v.bak1', './l7vsadm';
397 chmod '0755', './l7vsadm';
400 move 'l7v.bak2', '/usr/sbin/l7vsadm';
401 chmod '0755', '/usr/sbin/l7vsadm';
404 move 'l7v.bak3', '/sbin/l7vsadm';
405 chmod '0755', '/sbin/l7vsadm';
407 skip 'cannot move l7vsadm search path file', 1;
409 local @ARGV = qw(status);
411 is $@, "init_error\n", 'l7vsadm not found';
413 move 'l7v.bak1', './l7vsadm';
414 chmod '0755', './l7vsadm';
417 move 'l7v.bak2', '/usr/sbin/l7vsadm';
418 chmod '0755', '/usr/sbin/l7vsadm';
421 move 'l7v.bak3', '/sbin/l7vsadm';
422 chmod '0755', '/sbin/l7vsadm';
427 local $ENV{HOSTNAME} = 'test_host_name';
428 test_argv('ARGV="status"', 6, qw(status));
429 is $main::PROC_ENV{hostname}, 'test_host_name', 'set env HOSTNAME';
433 local $ENV{HOSTNAME};
434 test_argv('ARGV="status"', 6, qw(status));
435 is $main::PROC_ENV{hostname}, (POSIX::uname())[1], 'set HOSTNAME from uname';
441 is $main::DEBUG_LEVEL, 0, 'default - debug level';
442 is $main::PROC_ENV{l7vsadm}, undef, 'default - l7vsadm path';
443 is $main::CONFIG_FILE{path}, undef, 'default - config path';
444 is $main::CONFIG_FILE{filename}, undef, 'default - config filename';
445 is $main::PROC_ENV{hostname}, undef, 'default - hostname';
450 my $expected = shift;
453 is $return, $expected, $name;
457 #...............................................
463 open my $d, '>', './l7directord.cf';
465 open my $v, '>', './l7vsadm';
467 chmod 0755, './l7vsadm';
470 unlink './l7directord.cf';
474 *cmd_start = \&__cmd_start;
475 *cmd_stop = \&__cmd_stop;
476 *cmd_restart = \&__cmd_restart;
477 *cmd_try_restart = \&__cmd_try_restart;
478 *cmd_reload = \&__cmd_reload;
479 *cmd_status = \&__cmd_status;
480 *cmd_configtest = \&__cmd_configtest;
481 *cmd_version = \&__cmd_version;
482 *cmd_help = \&__cmd_help;
483 *cmd_usage = \&__cmd_usage;
484 *init_error = \&__init_error;
485 *ld_exit = \&__ld_exit;
486 *ld_log = \&__ld_log;
497 sub __cmd_try_restart {
506 sub __cmd_configtest {