3 no warnings qw(redefine once);
8 use Test::More tests => 33;
12 require './l7directord';
15 our $filename = undef;
16 our @message_only_args = ();
17 our @message_args = ();
18 our $init_error_arg = undef;
19 our $ld_rm_file_arg = undef;
20 our $ld_log_arg = undef;
22 #...............................................
28 local $0 = 'l7directord';
29 my ($oldpid, $filepid) = read_pid();
30 is $oldpid, $$, 'read_pid - from /proc/pid';
31 is $filepid, $$, 'read_pid - from pid file';
37 local $0 = 'l7directord';
38 my $oldpid = read_pid();
39 is $oldpid, $$, 'read_pid - get /proc/pid only';
46 my ($oldpid, $filepid) = read_pid();
47 is $oldpid, undef, 'read_pid - from /proc/pid, but process name mismatch';
48 is $filepid, $$, 'read_pid - from pid file';
55 my $oldpid = read_pid();
56 is $oldpid, undef, 'read_pid - get /proc/pid only, but process name mismatch';
61 create_pidfile(99999);
62 local $0 = 'l7directord';
63 my ($oldpid, $filepid) = read_pid();
64 is $oldpid, undef, 'read_pid - from /proc/pid, but no such proc file.';
65 is $filepid, 99999, 'read_pid - from pid file';
70 local $0 = 'l7directord';
71 my ($oldpid, $filepid) = read_pid();
72 is $oldpid, undef, 'read_pid - from /proc/pid';
73 is $filepid, undef, 'read_pid - from pid file, but no such pid file.';
80 local @message_only_args = ();
81 local $init_error_arg = undef;
83 my $written = read_pidfile();
84 is $written, "1\n", 'write_pid - pid 1 specified';
90 local @message_only_args = ();
91 local $init_error_arg = undef;
93 is_deeply \@message_only_args, ['ERR0412', 0], 'write_pid - pid 0 specified, error message';
94 is $init_error_arg, "message_only", 'write_pid - pid 0 specified, init_error';
100 local @message_only_args = ();
101 local $init_error_arg = undef;
103 is_deeply \@message_only_args, ['ERR0412', 'undef'], 'write_pid - pid not specified, error message';
104 is $init_error_arg, "message_only", 'write_pid - pid not specified, init_error';
110 local @message_only_args = ();
111 local $init_error_arg = undef;
113 is_deeply \@message_only_args, ['ERR0412', 'foobar'], 'write_pid - pid some word specified, error message';
114 is $init_error_arg, "message_only", 'write_pid - pid some word specified, init_error';
120 local @message_only_args = ();
121 local $init_error_arg = undef;
122 local *close = \&__close;
124 is_deeply \@message_only_args, ['ERR0409', $filename, "close_error\n"], 'write_pid - close error';
125 is $init_error_arg, "message_only", 'write_pid - close error, init_error';
131 local *ld_rm_file = \&__ld_rm_file;
133 is $ld_rm_file_arg, $filename, 'remove_pid';
139 my $got = ld_rm_file($filename);
140 is $got, 0, 'ld_rm_file - success';
144 my $got = ld_rm_file();
145 is $got, -1, 'ld_rm_file - error no delete file';
146 is_deeply \@message_args, ['ERR0411'], 'ld_rm_file - error message(1)';
147 is $ld_log_arg, 'message', 'ld_rm_file - error log(1)';
151 skip '/tmp not found!', 3 if (!-d '/tmp');
152 my $got = ld_rm_file('/tmp');
153 is $got, -1, 'ld_rm_file - error directory';
154 is_deeply \@message_args, ['ERR0401', '/tmp'], 'ld_rm_file - error message(2)';
155 is $ld_log_arg, 'message', 'ld_rm_file - error log(2)';
159 skip 'file /asdfasdf exist', 3 if (-e '/asdfasdf');
160 my $got = ld_rm_file('/asdfasdf');
161 is $got, -1, 'ld_rm_file - error file not found';
162 is_deeply \@message_args, ['ERR0402', '/asdfasdf'], 'ld_rm_file - error message(3)';
163 is $ld_log_arg, 'message', 'ld_rm_file - error log(3)';
167 skip 'file /proc/version not exist', 3 if (!-f '/proc/version');
168 my $got = ld_rm_file('/proc/version');
169 is $got, -1, 'ld_rm_file - error cannot remove';
170 is_deeply \@message_args, ['ERR0403', '/proc/version', $!], 'ld_rm_file - error message(4)';
171 is $ld_log_arg, 'message', 'ld_rm_file - error log(4)';
174 #...............................................
179 $main::PROC_ENV{pid_prefix} = cwd;
180 $main::CONFIG_FILE{filename} = time;
183 *_message_only = \&__message_only;
184 *_message = \&__message;
185 *ld_log = \&__ld_log;
186 *init_error = \&__init_error;
190 $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
191 if (open my $f, ">", $filename) {
192 print $f $pid . "\n";
199 $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
201 if (open my $f, "<", $filename) {
209 $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
215 @message_only_args = @_;
216 return 'message_only';
219 $init_error_arg = shift;
225 $ld_rm_file_arg = shift;