3 no warnings qw(redefine once);
8 use Test::More tests => 23;
15 require './l7directord';
18 #...............................................
23 my $sock = create_sock($port);
24 skip 'cannot create socket', 1 if !$sock;
25 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
27 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'GET'};
28 my $r = {url => "http://localhost:$port/", fail_counts => 0,
29 server => {ip => '127.0.0.1', port => $port }};
30 my $got = check_http($v, $r);
31 is $got, $main::SERVICE_UP, 'check_http - GET ok';
37 my $sock = create_sock($port);
38 skip 'cannot create socket', 1 if !$sock;
39 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
41 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
42 my $r = {url => "http://localhost:$port/", fail_counts => 0,
43 server => {ip => '127.0.0.1', port => $port }};
44 my $got = check_http($v, $r);
45 is $got, $main::SERVICE_UP, 'check_http - HEAD ok';
52 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
53 my $r = {url => "http//localhost:$port/", fail_counts => 0,
54 server => {ip => '127.0.0.1', port => $port }};
55 my $got = check_http($v, $r);
56 is $got, $main::SERVICE_DOWN, 'check_http - URL error';
61 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
62 my $r = {url => "http://localhost:$port/", fail_counts => 0,
63 server => {ip => '127.0.0.1', port => $port }};
64 my $got = check_http($v, $r);
65 is $got, $main::SERVICE_DOWN, 'check_http - cannot connect';
69 my $sock = create_sock($port);
70 skip 'cannot create socket', 1 if !$sock;
71 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
73 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
74 my $r = {url => "http://localhost:$port/", fail_counts => 0,
75 server => {ip => '127.0.0.1', port => $port }};
76 my $got = check_http($v, $r);
77 is $got, $main::SERVICE_DOWN, 'check_http - timeout';
83 my $sock = create_sock($port);
84 skip 'cannot create socket', 1 if !$sock;
85 my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
87 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
88 my $r = {url => "http://localhost:$port/", fail_counts => 0,
89 server => {ip => '127.0.0.1', port => $port }};
90 my $got = check_http($v, $r);
91 is $got, $main::SERVICE_DOWN, 'check_http - error response';
98 todo_skip 'not ready https response', 1;
100 my $sock = create_sock($port);
101 skip 'cannot create socket', 1 if !$sock;
102 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
104 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'GET'};
105 my $r = {url => "https://localhost:$port/", fail_counts => 0,
106 server => {ip => '127.0.0.1', port => $port }};
107 my $got = check_http($v, $r);
108 is $got, $main::SERVICE_UP, 'check_http - GET ok (https)';
114 todo_skip 'not ready https response', 1;
116 my $sock = create_sock($port);
117 skip 'cannot create socket', 1 if !$sock;
118 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
120 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
121 my $r = {url => "https://localhost:$port/", fail_counts => 0,
122 server => {ip => '127.0.0.1', port => $port }};
123 my $got = check_http($v, $r);
124 is $got, $main::SERVICE_UP, 'check_http - HEAD ok (https)';
131 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
132 my $r = {url => "https//localhost:$port/", fail_counts => 0,
133 server => {ip => '127.0.0.1', port => $port }};
134 my $got = check_http($v, $r);
135 is $got, $main::SERVICE_DOWN, 'check_http - URL error (https)';
140 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
141 my $r = {url => "https://localhost:$port/", fail_counts => 0,
142 server => {ip => '127.0.0.1', port => $port }};
143 my $got = check_http($v, $r);
144 is $got, $main::SERVICE_DOWN, 'check_http - cannot connect (https)';
148 todo_skip 'not ready https response', 1;
150 my $sock = create_sock($port);
151 skip 'cannot create socket', 1 if !$sock;
152 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
154 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
155 my $r = {url => "https://localhost:$port/", fail_counts => 0,
156 server => {ip => '127.0.0.1', port => $port }};
157 my $got = check_http($v, $r);
158 is $got, $main::SERVICE_DOWN, 'check_http - timeout (https)';
164 todo_skip 'not ready https response', 1;
166 my $sock = create_sock($port);
167 skip 'cannot create socket', 1 if !$sock;
168 my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
170 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
171 my $r = {url => "https://localhost:$port/", fail_counts => 0,
172 server => {ip => '127.0.0.1', port => $port }};
173 my $got = check_http($v, $r);
174 is $got, $main::SERVICE_DOWN, 'check_http - error response (https)';
178 #############################################################################
182 my $sock = create_sock6($port);
183 skip 'cannot create socket6', 1 if !$sock;
184 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
186 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'GET'};
187 my $r = {url => "http://localhost:$port/", fail_counts => 0,
188 server => {ip => '[::1]', port => $port }};
189 my $got = check_http($v, $r);
190 is $got, $main::SERVICE_UP, 'check_http IPv6 - GET ok';
196 my $sock = create_sock6($port);
197 skip 'cannot create socket6', 1 if !$sock;
198 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
200 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
201 my $r = {url => "http://localhost:$port/", fail_counts => 0,
202 server => {ip => '[::1]', port => $port }};
203 my $got = check_http($v, $r);
204 is $got, $main::SERVICE_UP, 'check_http IPv6 - HEAD ok';
211 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
212 my $r = {url => "http//localhost:$port/", fail_counts => 0,
213 server => {ip => '[::1]', port => $port }};
214 my $got = check_http($v, $r);
215 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - URL error';
220 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
221 my $r = {url => "http://localhost:$port/", fail_counts => 0,
222 server => {ip => '[::1]', port => $port }};
223 my $got = check_http($v, $r);
224 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - cannot connect';
228 my $sock = create_sock6($port);
229 skip 'cannot create socket6', 1 if !$sock;
230 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
232 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
233 my $r = {url => "http://localhost:$port/", fail_counts => 0,
234 server => {ip => '[::1]', port => $port }};
235 my $got = check_http($v, $r);
236 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - timeout';
242 my $sock = create_sock6($port);
243 skip 'cannot create socket6', 1 if !$sock;
244 my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
246 my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
247 my $r = {url => "http://localhost:$port/", fail_counts => 0,
248 server => {ip => '[::1]', port => $port }};
249 my $got = check_http($v, $r);
250 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - error response';
257 todo_skip 'not ready https response', 1;
259 my $sock = create_sock6($port);
260 skip 'cannot create socket6', 1 if !$sock;
261 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
263 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'GET'};
264 my $r = {url => "https://localhost:$port/", fail_counts => 0,
265 server => {ip => '[::1]', port => $port }};
266 my $got = check_http($v, $r);
267 is $got, $main::SERVICE_UP, 'check_http IPv6 - GET ok (https)';
273 todo_skip 'not ready https response', 1;
275 my $sock = create_sock6($port);
276 skip 'cannot create socket6', 1 if !$sock;
277 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
279 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
280 my $r = {url => "https://localhost:$port/", fail_counts => 0,
281 server => {ip => '[::1]', port => $port }};
282 my $got = check_http($v, $r);
283 is $got, $main::SERVICE_UP, 'check_http IPv6 - HEAD ok (https)';
290 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
291 my $r = {url => "https//localhost:$port/", fail_counts => 0,
292 server => {ip => '[::1]', port => $port }};
293 my $got = check_http($v, $r);
294 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - URL error (https)';
299 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
300 my $r = {url => "https://localhost:$port/", fail_counts => 0,
301 server => {ip => '[::1]', port => $port }};
302 my $got = check_http($v, $r);
303 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - cannot connect (https)';
307 todo_skip 'not ready https response', 1;
309 my $sock = create_sock6($port);
310 skip 'cannot create socket6', 1 if !$sock;
311 my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
313 my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
314 my $r = {url => "https://localhost:$port/", fail_counts => 0,
315 server => {ip => '127.0.0.1', port => $port }};
316 my $got = check_http($v, $r);
317 is $got, $main::SERVICE_DOWN, 'check_http IPv6 - timeout (https)';
323 #...............................................
329 my $sock = IO::Socket::INET->new(
331 LocalAddr => 'localhost',
339 my $sock = IO::Socket::INET->new(
353 my $s = $sock->accept;
355 if ($sleep) { sleep $sleep; }
370 *ld_log = \&__ld_log;
371 *get_status = \&__get_status;
374 return $main::SERVICE_UP;