annotate stream_error_log.t @ 570:f7bc1f74970a

Tests: avoid send errors in syslog tests with mail error_log. Use a separate mail server block for syslog parsing tests to make sure that syslog messages are always read by the receiver on the remote side. Otherwise, syslog message might not be sent due to a pending socket error.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 07 May 2015 14:28:44 +0300
parents 22bade4c7e12
children 77359b849cd5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Stream tests for error_log.
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 use IO::Select;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 ###############################################################################
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
562
abf5f3197967 Tests: skipped stream_error_log.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 558
diff changeset
27 plan(skip_all => 'win32') if $^O eq 'MSWin32';
abf5f3197967 Tests: skipped stream_error_log.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 558
diff changeset
28
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
29 my $t = Test::Nginx->new()->has(qw/stream/)->plan(34);
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 $t->write_file_expand('nginx.conf', <<'EOF');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 error_log %%TESTDIR%%/e_glob.log info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 error_log %%TESTDIR%%/e_glob2.log info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 error_log syslog:server=127.0.0.1:8083 info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 daemon off;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 events {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 stream {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 upstream u {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 server 127.0.0.1:8083 down;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 server {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 listen 127.0.0.1:8080;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 proxy_pass u;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 error_log %%TESTDIR%%/e_debug.log debug;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 error_log %%TESTDIR%%/e_info.log info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 error_log %%TESTDIR%%/e_emerg.log emerg;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 error_log stderr info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 server {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 listen 127.0.0.1:8082;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 proxy_pass 127.0.0.1:8081;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 error_log %%TESTDIR%%/e_stream.log info;
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
64 error_log syslog:server=127.0.0.1:8080 info;
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 error_log syslog:server=127.0.0.1:8084 info;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 EOF
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 open OLDERR, ">&", \*STDERR;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 open STDERR, '>', $t->testdir() . '/stderr' or die "Can't reopen STDERR: $!";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 open my $stderr, '<', $t->testdir() . '/stderr'
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 or die "Can't open stderr file: $!";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 $t->run_daemon(\&stream_daemon);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 $t->run_daemon(\&syslog_daemon, 8083, $t, 's_glob.log');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 $t->run_daemon(\&syslog_daemon, 8084, $t, 's_stream.log');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 $t->waitforsocket('127.0.0.1:8081');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 $t->waitforfile($t->testdir . '/s_glob.log');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 $t->waitforfile($t->testdir . '/s_stream.log');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 $t->run();
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 open STDERR, ">&", \*OLDERR;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 ###############################################################################
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 stream_get('data');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 # error_log levels
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 SKIP: {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 skip "no --with-debug", 1 unless $t->has_module('--with-debug');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 isnt(lines($t, 'e_debug.log', '[debug]'), 0, 'file debug in debug');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 isnt(lines($t, 'e_info.log', '[info]'), 0, 'file info in info');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 is(lines($t, 'e_info.log', '[debug]'), 0, 'file debug in info');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 isnt(lines($t, 'stderr', '[info]'), 0, 'stderr info in info');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 is(lines($t, 'stderr', '[debug]'), 0, 'stderr debug in info');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 # multiple error_log
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 like($t->read_file('e_glob.log'), qr!nginx/[.0-9]+!, 'error global');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 like($t->read_file('e_glob2.log'), qr!nginx/[.0-9]+!, 'error global 2');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 is_deeply(levels($t, 'e_glob.log'), levels($t, 'e_glob2.log'),
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 'multiple error global');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 # syslog
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
115 parse_syslog_message('syslog', get_syslog('data2', '127.0.0.1:8082'));
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 is_deeply(levels($t, 's_glob.log'), levels($t, 'e_glob.log'),
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 'global syslog messages');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 is_deeply(levels($t, 's_stream.log'), levels($t, 'e_stream.log'),
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 'stream syslog messages');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 # error_log context
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 SKIP: {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 skip "relies on error log contents", 5 unless $ENV{TEST_NGINX_UNSAFE};
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 my $msg = 'no live upstreams while connecting to upstream, '
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 . 'client: 127.0.0.1, server: 127.0.0.1:8080, upstream: "u"';
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 unlike($t->read_file('e_glob.log'), qr/$msg/ms, 'stream error in global');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 like($t->read_file('e_info.log'), qr/$msg/ms, 'stream error in info');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132 like($t->read_file('stderr'), qr/$msg/ms, 'stream error in info stderr');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 unlike($t->read_file('e_emerg.log'), qr/$msg/ms, 'stream error in emerg');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 $msg = "bytes from/to client:5/4, bytes from/to upstream:4/5";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137 like($t->read_file('e_stream.log'), qr/$msg/ms, 'stream byte counters');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 ###############################################################################
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 sub lines {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 my ($t, $file, $pattern) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 if ($file eq 'stderr') {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 return map { $_ =~ /\Q$pattern\E/ } (<$stderr>);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 my $path = $t->testdir() . '/' . $file;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 open my $fh, '<', $path or return "$!";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 my $value = map { $_ =~ /\Q$pattern\E/ } (<$fh>);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153 close $fh;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 return $value;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 sub levels {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 my ($t, $file) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 my %levels_hash;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 map { $levels_hash{$_}++; } ($t->read_file($file) =~ /(\[\w+\])/g);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 return \%levels_hash;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 sub stream_get {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167 my ($data, $peer) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169 $peer = '127.0.0.1:8080' unless defined $peer;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170 my $s = stream_connect($peer);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 stream_write($s, $data);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172
565
ff49e1c00b35 Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents: 562
diff changeset
173 $data = '';
ff49e1c00b35 Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents: 562
diff changeset
174 while (my $buf = stream_read($s)) {
ff49e1c00b35 Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents: 562
diff changeset
175 $data .= $buf;
ff49e1c00b35 Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents: 562
diff changeset
176 }
ff49e1c00b35 Tests: in stream tests, try to read all the data where appropriate.
Sergey Kandaurov <pluknet@nginx.com>
parents: 562
diff changeset
177 return $data;
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
178 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 sub stream_connect {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 my $peer = shift;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 my $s = IO::Socket::INET->new(
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183 Proto => 'tcp',
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 PeerAddr => $peer || '127.0.0.1:8080'
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185 )
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 or die "Can't connect to nginx: $!\n";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
188 return $s;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191 sub stream_write {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
192 my ($s, $message) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
193
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
194 local $SIG{PIPE} = 'IGNORE';
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
195
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 $s->blocking(0);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
197 while (IO::Select->new($s)->can_write(1.5)) {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
198 my $n = $s->syswrite($message);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
199 last unless $n;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
200 $message = substr($message, $n);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
201 last unless length $message;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
202 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
203
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
204 if (length $message) {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205 $s->close();
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
207 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 sub stream_read {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210 my ($s) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
211 my ($buf);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213 $s->blocking(0);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214 if (IO::Select->new($s)->can_read(5)) {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 $s->sysread($buf, 1024);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216 };
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218 log_in($buf);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219 return $buf;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
220 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
221
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
222 sub get_syslog {
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
223 my ($data, $peer, $port) = @_;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
224 my ($s);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
225 my $rfd = '';
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
226
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
227 $port = 8080 unless defined $port;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
228
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
229 eval {
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
230 local $SIG{ALRM} = sub { die "timeout\n" };
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
231 local $SIG{PIPE} = sub { die "sigpipe\n" };
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
232 alarm(1);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
233 $s = IO::Socket::INET->new(
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
234 Proto => 'udp',
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
235 LocalAddr => "127.0.0.1:$port"
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
236 );
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
237 alarm(0);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
238 };
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
239 alarm(0);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
240 if ($@) {
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
241 log_in("died: $@");
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
242 return undef;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
243 }
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
244
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
245 stream_get($data, $peer);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
246 $data = '';
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
247
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
248 IO::Select->new($s)->can_read(1.5);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
249 while (IO::Select->new($s)->can_read(0.1)) {
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
250 my $buffer;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
251 sysread($s, $buffer, 4096);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
252 $data .= $buffer;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
253 }
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
254 $s->close();
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
255 return $data;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
256 }
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
257
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 sub parse_syslog_message {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259 my ($desc, $line) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
261 ok($line, $desc);
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
262
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
263 SKIP: {
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
264 skip "$desc timeout", 18 unless $line;
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
265
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
266 my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
267 'Sep', 'Oct', 'Nov', 'Dec');
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
269 my ($pri, $mon, $mday, $hour, $minute, $sec, $host, $tag, $msg) =
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
270 $line =~ /^<(\d{1,3})> # PRI
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
271 ([A-Z][a-z]{2})\s # mon
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
272 ([ \d]\d)\s(\d{2}):(\d{2}):(\d{2})\s # date
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
273 ([\S]*)\s # host
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
274 (\w{1,32}):\s # tag
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
275 (.*)/x; # MSG
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
276
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
277 my $sev = $pri & 0x07;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
278 my $fac = ($pri & 0x03f8) >> 3;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
279
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
280 ok(defined($pri), "$desc has PRI");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
281 ok($sev >= 0 && $sev <= 7, "$desc valid severity");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
282 ok($fac >= 0 && $fac < 24, "$desc valid facility");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
283
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
284 ok(defined($mon), "$desc has month");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
285 ok((grep $mon, @months), "$desc valid month");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
286
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
287 ok(defined($mday), "$desc has day");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
288 ok($mday <= 31, "$desc valid day");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
289
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
290 ok(defined($hour), "$desc has hour");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
291 ok($hour < 24, "$desc valid hour");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
292
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
293 ok(defined($minute), "$desc has minutes");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
294 ok($minute < 60, "$desc valid minutes");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
295
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
296 ok(defined($sec), "$desc has seconds");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
297 ok($sec < 60, "$desc valid seconds");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
298
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
299 ok(defined($host), "$desc has host");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
300 chomp(my $hostname = lc `hostname`);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
301 is($host , $hostname, "$desc valid host");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
302
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
303 ok(defined($tag), "$desc has tag");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
304 like($tag, qr'\w+', "$desc valid tag");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
305
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
306 ok(length($msg) > 0, "$desc valid CONTENT");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
307 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
308
567
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
309 }
22bade4c7e12 Tests: in stream, made sure to get syslog data to test its format.
Sergey Kandaurov <pluknet@nginx.com>
parents: 565
diff changeset
310
558
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
311 ###############################################################################
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
312
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
313 sub syslog_daemon {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
314 my ($port, $t, $file) = @_;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
315
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
316 my $s = IO::Socket::INET->new(
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
317 Proto => 'udp',
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
318 LocalAddr => "127.0.0.1:$port"
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
319 );
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
320
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
321 open my $fh, '>', $t->testdir() . '/' . $file;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
322 select $fh; $| = 1;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
323
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
324 while (1) {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
325 my $buffer;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
326 $s->recv($buffer, 4096);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
327 print $fh $buffer . "\n";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
328 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
329 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
330
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
331 sub stream_daemon {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
332 my $server = IO::Socket::INET->new(
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
333 Proto => 'tcp',
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
334 LocalHost => '127.0.0.1',
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
335 LocalPort => 8081,
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
336 Listen => 5,
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
337 Reuse => 1
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
338 )
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
339 or die "Can't create listening socket: $!\n";
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
340
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
341 local $SIG{PIPE} = 'IGNORE';
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
342
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
343 while (my $client = $server->accept()) {
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
344 $client->autoflush(1);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
345
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
346 log2c("(new connection $client)");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
347
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
348 $client->sysread(my $buffer, 65536) or next;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
349
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
350 log2i("$client $buffer");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
351
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
352 $buffer = $client->sockport();
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
353
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
354 log2o("$client $buffer");
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
355
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
356 $client->syswrite($buffer);
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
357
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
358 close $client;
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
359 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
360 }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
361
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
362 sub log2i { Test::Nginx::log_core('|| <<', @_); }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
363 sub log2o { Test::Nginx::log_core('|| >>', @_); }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
364 sub log2c { Test::Nginx::log_core('||', @_); }
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
365
27740a2dd781 Tests: stream error_log tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
366 ###############################################################################