Mercurial > hg > nginx-tests
annotate lib/Test/Nginx.pm @ 619:58a67c40a761
Tests: stream limit conn tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Mon, 29 Jun 2015 21:40:30 +0300 |
parents | 3a9a7b4f27f0 |
children | 7497adad1a50 |
rev | line source |
---|---|
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
1 package Test::Nginx; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
155 | 5 # Generic module for nginx tests. |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use base qw/ Exporter /; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
41
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
14 our @EXPORT = qw/ log_in log_out http http_get http_head /; |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
15 our @EXPORT_OK = qw/ http_gzip_request http_gzip_like http_start http_end /; |
93
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
16 our %EXPORT_TAGS = ( |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
17 gzip => [ qw/ http_gzip_request http_gzip_like / ] |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
18 ); |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 ############################################################################### |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 |
290
f781b087b7aa
Tests: fixed possible test suite hang on exit.
Vladimir Homutov <vl@nginx.com>
parents:
289
diff
changeset
|
22 use File::Path qw/ rmtree /; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 use File::Temp qw/ tempdir /; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 use IO::Socket; |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
25 use POSIX qw/ waitpid WNOHANG /; |
7
9eb509695651
Tests: drop our own CRLF constant, use Socket's one instead.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
26 use Socket qw/ CRLF /; |
27
fb94a224fef2
Tests: add has() functions for feature testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
24
diff
changeset
|
27 use Test::More qw//; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
29 ############################################################################### |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
48
acfafb52d393
Tests: use TEST_NGINX_BINARY to find nginx binary.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
31 our $NGINX = defined $ENV{TEST_NGINX_BINARY} ? $ENV{TEST_NGINX_BINARY} |
acfafb52d393
Tests: use TEST_NGINX_BINARY to find nginx binary.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
32 : '../nginx/objs/nginx'; |
27
fb94a224fef2
Tests: add has() functions for feature testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
24
diff
changeset
|
33 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
34 sub new { |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
35 my $self = {}; |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
36 bless $self; |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
37 |
296
a113f4d55b12
Tests: fix hang on exit after errors in child processes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
290
diff
changeset
|
38 $self->{_pid} = $$; |
592
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
39 $self->{_alerts} = 1; |
296
a113f4d55b12
Tests: fix hang on exit after errors in child processes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
290
diff
changeset
|
40 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
41 $self->{_testdir} = tempdir( |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
42 'nginx-test-XXXXXXXXXX', |
290
f781b087b7aa
Tests: fixed possible test suite hang on exit.
Vladimir Homutov <vl@nginx.com>
parents:
289
diff
changeset
|
43 TMPDIR => 1 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
44 ) |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
45 or die "Can't create temp directory: $!\n"; |
219
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
46 $self->{_testdir} =~ s!\\!/!g if $^O eq 'MSWin32'; |
395
d7d9b4367bab
Tests: start nginx prefixed to a temporary directory.
Sergey Kandaurov <pluknet@nginx.com>
parents:
392
diff
changeset
|
47 mkdir "$self->{_testdir}/logs" |
d7d9b4367bab
Tests: start nginx prefixed to a temporary directory.
Sergey Kandaurov <pluknet@nginx.com>
parents:
392
diff
changeset
|
48 or die "Can't create logs directory: $!\n"; |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
49 |
460
0342957cca37
Tests: check for nginx binary presence.
Sergey Kandaurov <pluknet@nginx.com>
parents:
438
diff
changeset
|
50 Test::More::BAIL_OUT("no $NGINX binary found") |
0342957cca37
Tests: check for nginx binary presence.
Sergey Kandaurov <pluknet@nginx.com>
parents:
438
diff
changeset
|
51 unless -x $NGINX; |
0342957cca37
Tests: check for nginx binary presence.
Sergey Kandaurov <pluknet@nginx.com>
parents:
438
diff
changeset
|
52 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
53 return $self; |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
54 } |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
55 |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
56 sub DESTROY { |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
57 my ($self) = @_; |
415
020c4e47ecac
Tests: revert 068d020a8f85 and localize $? instead.
Maxim Dounin <mdounin@mdounin.ru>
parents:
411
diff
changeset
|
58 local $?; |
020c4e47ecac
Tests: revert 068d020a8f85 and localize $? instead.
Maxim Dounin <mdounin@mdounin.ru>
parents:
411
diff
changeset
|
59 |
296
a113f4d55b12
Tests: fix hang on exit after errors in child processes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
290
diff
changeset
|
60 return if $self->{_pid} != $$; |
415
020c4e47ecac
Tests: revert 068d020a8f85 and localize $? instead.
Maxim Dounin <mdounin@mdounin.ru>
parents:
411
diff
changeset
|
61 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
62 $self->stop(); |
144
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
63 $self->stop_daemons(); |
415
020c4e47ecac
Tests: revert 068d020a8f85 and localize $? instead.
Maxim Dounin <mdounin@mdounin.ru>
parents:
411
diff
changeset
|
64 |
592
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
65 if (Test::More->builder->expected_tests) { |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
66 local $Test::Nginx::TODO = 'alerts' unless $self->{_alerts}; |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
67 |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
68 my $alerts = $self->read_file('error.log'); |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
69 $alerts = join "\n", $alerts =~ /.+\[alert\].+/gm; |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
70 Test::More::is($alerts, '', 'no alerts'); |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
71 } |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
72 |
51
d59ae7bab0a6
Tests: cat error log to stdout if TEST_NGINX_CATLOG set.
Maxim Dounin <mdounin@mdounin.ru>
parents:
50
diff
changeset
|
73 if ($ENV{TEST_NGINX_CATLOG}) { |
d59ae7bab0a6
Tests: cat error log to stdout if TEST_NGINX_CATLOG set.
Maxim Dounin <mdounin@mdounin.ru>
parents:
50
diff
changeset
|
74 system("cat $self->{_testdir}/error.log"); |
d59ae7bab0a6
Tests: cat error log to stdout if TEST_NGINX_CATLOG set.
Maxim Dounin <mdounin@mdounin.ru>
parents:
50
diff
changeset
|
75 } |
290
f781b087b7aa
Tests: fixed possible test suite hang on exit.
Vladimir Homutov <vl@nginx.com>
parents:
289
diff
changeset
|
76 if (not $ENV{TEST_NGINX_LEAVE}) { |
f781b087b7aa
Tests: fixed possible test suite hang on exit.
Vladimir Homutov <vl@nginx.com>
parents:
289
diff
changeset
|
77 eval { rmtree($self->{_testdir}); }; |
f781b087b7aa
Tests: fixed possible test suite hang on exit.
Vladimir Homutov <vl@nginx.com>
parents:
289
diff
changeset
|
78 } |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
79 } |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
81 sub has($;) { |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
82 my ($self, @features) = @_; |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
83 |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
84 foreach my $feature (@features) { |
574
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
85 Test::More::plan(skip_all => "no $feature available") |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
86 unless $self->has_module($feature) |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
87 or $self->has_feature($feature); |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
88 } |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
89 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
90 return $self; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
91 } |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
92 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
93 sub has_module($) { |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
94 my ($self, $feature) = @_; |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
95 |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
96 my %regex = ( |
237 | 97 sni => 'TLS SNI support enabled', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
98 mail => '--with-mail(?!\S)', |
33
4f57d57543e1
Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
29
diff
changeset
|
99 flv => '--with-http_flv_module', |
118
4bf7a819358c
Tests: add some embedded perl tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
100 perl => '--with-http_perl_module', |
323
d48de852157c
Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
312
diff
changeset
|
101 auth_request |
d48de852157c
Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
312
diff
changeset
|
102 => '--with-http_auth_request_module', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
103 charset => '(?s)^(?!.*--without-http_charset_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
104 gzip => '(?s)^(?!.*--without-http_gzip_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
105 ssi => '(?s)^(?!.*--without-http_ssi_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
106 userid => '(?s)^(?!.*--without-http_userid_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
107 access => '(?s)^(?!.*--without-http_access_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
108 auth_basic |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
109 => '(?s)^(?!.*--without-http_auth_basic_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
110 autoindex |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
111 => '(?s)^(?!.*--without-http_autoindex_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
112 geo => '(?s)^(?!.*--without-http_geo_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
113 map => '(?s)^(?!.*--without-http_map_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
114 referer => '(?s)^(?!.*--without-http_referer_module)', |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
115 rewrite => '(?s)^(?!.*--without-http_rewrite_module)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
116 proxy => '(?s)^(?!.*--without-http_proxy_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
117 fastcgi => '(?s)^(?!.*--without-http_fastcgi_module)', |
139
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
118 uwsgi => '(?s)^(?!.*--without-http_uwsgi_module)', |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
119 scgi => '(?s)^(?!.*--without-http_scgi_module)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
120 memcached |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
121 => '(?s)^(?!.*--without-http_memcached_module)', |
312
b639e76ba923
Tests: limit_zone regex updated to follow the module renaming.
Sergey Kandaurov <pluknet@nginx.com>
parents:
296
diff
changeset
|
122 limit_conn |
b639e76ba923
Tests: limit_zone regex updated to follow the module renaming.
Sergey Kandaurov <pluknet@nginx.com>
parents:
296
diff
changeset
|
123 => '(?s)^(?!.*--without-http_limit_conn_module)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
124 limit_req |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
125 => '(?s)^(?!.*--without-http_limit_req_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
126 empty_gif |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
127 => '(?s)^(?!.*--without-http_empty_gif_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
128 browser => '(?s)^(?!.*--without-http_browser_module)', |
411
17c5a1cc8757
Tests: upstream hash tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
395
diff
changeset
|
129 upstream_hash |
17c5a1cc8757
Tests: upstream hash tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
395
diff
changeset
|
130 => '(?s)^(?!.*--without-http_upstream_hash_module)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
131 upstream_ip_hash |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
132 => '(?s)^(?!.*--without-http_upstream_ip_hash_module)', |
275
6cbcfb4ef7ee
Tests: correct has() checks for upstream keepalive tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
271
diff
changeset
|
133 upstream_least_conn |
6cbcfb4ef7ee
Tests: correct has() checks for upstream keepalive tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
271
diff
changeset
|
134 => '(?s)^(?!.*--without-http_upstream_least_conn_mod)', |
6cbcfb4ef7ee
Tests: correct has() checks for upstream keepalive tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
271
diff
changeset
|
135 upstream_keepalive |
6cbcfb4ef7ee
Tests: correct has() checks for upstream keepalive tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
271
diff
changeset
|
136 => '(?s)^(?!.*--without-http_upstream_keepalive_modu)', |
560
f3434de79a7f
Tests: upstream zone tests with ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
557
diff
changeset
|
137 upstream_zone |
f3434de79a7f
Tests: upstream zone tests with ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
557
diff
changeset
|
138 => '(?s)^(?!.*--without-http_upstream_zone_module)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
139 http => '(?s)^(?!.*--without-http(?!\S))', |
106
7a712d3909ba
Tests: add cache availability checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
104
diff
changeset
|
140 cache => '(?s)^(?!.*--without-http-cache)', |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
141 pop3 => '(?s)^(?!.*--without-mail_pop3_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
142 imap => '(?s)^(?!.*--without-mail_imap_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
143 smtp => '(?s)^(?!.*--without-mail_smtp_module)', |
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
118
diff
changeset
|
144 pcre => '(?s)^(?!.*--without-pcre)', |
348
08bb2b3785a2
Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
339
diff
changeset
|
145 split_clients |
08bb2b3785a2
Tests: added basic test for split_clients module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
339
diff
changeset
|
146 => '(?s)^(?!.*--without-http_split_clients_module)', |
552
93af034fda47
Tests: stream module prerequisite.
Sergey Kandaurov <pluknet@nginx.com>
parents:
524
diff
changeset
|
147 stream => '--with-stream(?!\S)', |
619
58a67c40a761
Tests: stream limit conn tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
601
diff
changeset
|
148 stream_limit_conn => |
58a67c40a761
Tests: stream limit conn tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
601
diff
changeset
|
149 '(?s)^(?!.*--without-stream_limit_conn_module)', |
571
5c3946ebd867
Tests: basic stream tests for upstream hash.
Sergey Kandaurov <pluknet@nginx.com>
parents:
560
diff
changeset
|
150 stream_upstream_hash |
5c3946ebd867
Tests: basic stream tests for upstream hash.
Sergey Kandaurov <pluknet@nginx.com>
parents:
560
diff
changeset
|
151 => '(?s)^(?!.*--without-stream_upstream_hash_module)', |
557
05cbe9e2def8
Tests: basic stream tests for upstream least_conn.
Sergey Kandaurov <pluknet@nginx.com>
parents:
552
diff
changeset
|
152 stream_upstream_least_conn |
05cbe9e2def8
Tests: basic stream tests for upstream least_conn.
Sergey Kandaurov <pluknet@nginx.com>
parents:
552
diff
changeset
|
153 => '(?s)^(?!.*--without-stream_upstream_least_conn_m)', |
560
f3434de79a7f
Tests: upstream zone tests with ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
557
diff
changeset
|
154 stream_upstream_zone |
f3434de79a7f
Tests: upstream zone tests with ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
557
diff
changeset
|
155 => '(?s)^(?!.*--without-stream_upstream_zone_module)', |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
156 ); |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
157 |
100
9ddc18214854
Tests: arbitrary regexp support in has().
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
158 my $re = $regex{$feature}; |
9ddc18214854
Tests: arbitrary regexp support in has().
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
159 $re = $feature if !defined $re; |
9ddc18214854
Tests: arbitrary regexp support in has().
Maxim Dounin <mdounin@mdounin.ru>
parents:
96
diff
changeset
|
160 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
161 $self->{_configure_args} = `$NGINX -V 2>&1` |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
162 if !defined $self->{_configure_args}; |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
163 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
164 return ($self->{_configure_args} =~ $re) ? 1 : 0; |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
165 } |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
166 |
574
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
167 sub has_feature($) { |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
168 my ($self, $feature) = @_; |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
169 |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
170 if ($feature eq 'symlink') { |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
171 return $^O ne 'MSWin32'; |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
172 } |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
173 |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
174 if ($feature eq 'shmem') { |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
175 return $^O ne 'MSWin32' || $self->has_version('1.9.0'); |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
176 } |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
177 |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
178 return 0; |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
179 } |
2cd00179f4b2
Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
571
diff
changeset
|
180 |
242
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
181 sub has_version($) { |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
182 my ($self, $need) = @_; |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
183 |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
184 $self->{_configure_args} = `$NGINX -V 2>&1` |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
185 if !defined $self->{_configure_args}; |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
186 |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
187 $self->{_configure_args} =~ m!nginx version: nginx/([0-9.]+)!; |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
188 |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
189 my @v = split(/\./, $1); |
284
8fcc46212e5e
Tests: fix has_version() to handle previous branch checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
281
diff
changeset
|
190 my ($n, $v); |
242
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
191 |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
192 for $n (split(/\./, $need)) { |
284
8fcc46212e5e
Tests: fix has_version() to handle previous branch checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
281
diff
changeset
|
193 $v = shift @v || 0; |
8fcc46212e5e
Tests: fix has_version() to handle previous branch checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
281
diff
changeset
|
194 return 0 if $n > $v; |
8fcc46212e5e
Tests: fix has_version() to handle previous branch checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
281
diff
changeset
|
195 return 1 if $v > $n; |
242
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
196 } |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
197 |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
198 return 1; |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
199 } |
8f280348d76f
Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents:
237
diff
changeset
|
200 |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
201 sub has_daemon($) { |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
202 my ($self, $daemon) = @_; |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
203 |
220
f6f60780f758
Tests: fail has_daemon() on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
219
diff
changeset
|
204 if ($^O eq 'MSWin32') { |
f6f60780f758
Tests: fail has_daemon() on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
219
diff
changeset
|
205 Test::More::plan(skip_all => "win32"); |
f6f60780f758
Tests: fail has_daemon() on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
219
diff
changeset
|
206 return $self; |
f6f60780f758
Tests: fail has_daemon() on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
219
diff
changeset
|
207 } |
f6f60780f758
Tests: fail has_daemon() on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
219
diff
changeset
|
208 |
232
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
209 if ($^O eq 'solaris') { |
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
210 Test::More::plan(skip_all => "$daemon not found") |
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
211 unless `command -v $daemon`; |
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
212 return $self; |
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
213 } |
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
214 |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
215 Test::More::plan(skip_all => "$daemon not found") |
232
4c43b3a0117c
Tests: revert 5db96b64cead, use "which" instead of "command -v".
Maxim Dounin <mdounin@mdounin.ru>
parents:
222
diff
changeset
|
216 unless `which $daemon`; |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
217 |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
218 return $self; |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
219 } |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
220 |
392
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
221 sub try_run($$) { |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
222 my ($self, $message) = @_; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
223 |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
224 eval { |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
225 open OLDERR, ">&", \*STDERR; close STDERR; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
226 $self->run(); |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
227 open STDERR, ">&", \*OLDERR; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
228 }; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
229 |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
230 Test::More::plan(skip_all => $message) if $@; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
231 return $self; |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
232 } |
c28ecaef065f
Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents:
375
diff
changeset
|
233 |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
234 sub plan($) { |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
235 my ($self, $plan) = @_; |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
236 |
592
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
237 Test::More::plan(tests => $plan + 1); |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
238 |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
239 return $self; |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
240 } |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
241 |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
242 sub todo_alerts() { |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
243 my ($self) = @_; |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
244 |
355f2d5ff60f
Tests: catch nginx alerts on exit.
Sergey Kandaurov <pluknet@nginx.com>
parents:
574
diff
changeset
|
245 $self->{_alerts} = 0; |
28
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
246 |
8f1519472ece
Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents:
27
diff
changeset
|
247 return $self; |
27
fb94a224fef2
Tests: add has() functions for feature testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
24
diff
changeset
|
248 } |
fb94a224fef2
Tests: add has() functions for feature testing.
Maxim Dounin <mdounin@mdounin.ru>
parents:
24
diff
changeset
|
249 |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
250 sub run(;$) { |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
251 my ($self, $conf) = @_; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
252 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
253 my $testdir = $self->{_testdir}; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
254 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
255 if (defined $conf) { |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
256 my $c = `cat $conf`; |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
257 $self->write_file_expand('nginx.conf', $c); |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
258 } |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
259 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
260 my $pid = fork(); |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
261 die "Unable to fork(): $!\n" unless defined $pid; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
262 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
263 if ($pid == 0) { |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
264 my @globals = $self->{_test_globals} ? |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
265 () : ('-g', "pid $testdir/nginx.pid; " |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
266 . "error_log $testdir/error.log debug;"); |
524
084f8c8cb648
Tests: compatibility with old nginx versions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
467
diff
changeset
|
267 exec($NGINX, '-p', "$testdir/", '-c', 'nginx.conf', @globals), |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
268 or die "Unable to exec(): $!\n"; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
269 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
270 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
271 # wait for nginx to start |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
272 |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
273 $self->waitforfile("$testdir/nginx.pid", $pid) |
50
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
274 or die "Can't start nginx"; |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
275 |
20
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
276 $self->{_started} = 1; |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
277 return $self; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
278 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
279 |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
280 sub waitforfile($;$) { |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
281 my ($self, $file, $pid) = @_; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
282 my $exited; |
50
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
283 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
284 # wait for file to appear |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
285 # or specified process to exit |
50
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
286 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
287 for (1 .. 30) { |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
288 return 1 if -e $file; |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
289 return 0 if $exited; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
290 $exited = waitpid($pid, WNOHANG) != 0 if $pid; |
50
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
291 select undef, undef, undef, 0.1; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
292 } |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
293 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
294 return undef; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
295 } |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
296 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
297 sub waitforsocket($) { |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
298 my ($self, $peer) = @_; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
299 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
300 # wait for socket to accept connections |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
301 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
302 for (1 .. 30) { |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
303 my $s = IO::Socket::INET->new( |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
304 Proto => 'tcp', |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
305 PeerAddr => $peer |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
306 ); |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
307 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
308 return 1 if defined $s; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
309 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
310 select undef, undef, undef, 0.1; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
311 } |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
312 |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
313 return undef; |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
314 } |
b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
49
diff
changeset
|
315 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
316 sub stop() { |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
317 my ($self) = @_; |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
318 |
144
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
319 return $self unless $self->{_started}; |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
320 |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
321 local $/; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
322 open F, '<' . $self->{_testdir} . '/nginx.pid' |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
323 or die "Can't open nginx.pid: $!"; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
324 my $pid = <F>; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
325 close F; |
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
326 |
219
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
327 if ($^O eq 'MSWin32') { |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
328 my $testdir = $self->{_testdir}; |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
329 my @globals = $self->{_test_globals} ? |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
330 () : ('-g', "pid $testdir/nginx.pid; " |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
331 . "error_log $testdir/error.log debug;"); |
395
d7d9b4367bab
Tests: start nginx prefixed to a temporary directory.
Sergey Kandaurov <pluknet@nginx.com>
parents:
392
diff
changeset
|
332 system($NGINX, '-p', $testdir, '-c', "nginx.conf", |
d7d9b4367bab
Tests: start nginx prefixed to a temporary directory.
Sergey Kandaurov <pluknet@nginx.com>
parents:
392
diff
changeset
|
333 '-s', 'stop', @globals) == 0 |
222
5b7883daaf82
Tests: use kill(9, $pid) on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
220
diff
changeset
|
334 or die "system() failed: $?\n"; |
219
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
335 |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
336 } else { |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
337 kill 'QUIT', $pid; |
219
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
338 } |
ce2e23daa1da
Tests: minimal win32 support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
209
diff
changeset
|
339 |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
340 waitpid($pid, 0); |
144
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
341 |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
342 $self->{_started} = 0; |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
343 |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
344 return $self; |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
345 } |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
346 |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
347 sub stop_daemons() { |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
348 my ($self) = @_; |
6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Maxim Dounin <mdounin@mdounin.ru>
parents:
139
diff
changeset
|
349 |
20
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
350 while ($self->{_daemons} && scalar @{$self->{_daemons}}) { |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
351 my $p = shift @{$self->{_daemons}}; |
222
5b7883daaf82
Tests: use kill(9, $pid) on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
220
diff
changeset
|
352 kill $^O eq 'MSWin32' ? 9 : 'TERM', $p; |
289
cbd4f6eca676
Tests: check if started process is alive while starting nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
284
diff
changeset
|
353 waitpid($p, 0); |
20
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
354 } |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
355 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
356 return $self; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
357 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
358 |
467
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
359 sub read_file($) { |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
360 my ($self, $name) = @_; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
361 local $/; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
362 |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
363 open F, '<', $self->{_testdir} . '/' . $name |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
364 or die "Can't open $name: $!"; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
365 my $content = <F>; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
366 close F; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
367 |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
368 return $content; |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
369 } |
43e05ac6c23c
Tests: the read_file function added in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents:
460
diff
changeset
|
370 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
371 sub write_file($$) { |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
372 my ($self, $name, $content) = @_; |
12
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
373 |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
374 open F, '>' . $self->{_testdir} . '/' . $name |
12
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
375 or die "Can't create $name: $!"; |
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
376 print F $content; |
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
377 close F; |
14
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
378 |
d4b74207a627
Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents:
12
diff
changeset
|
379 return $self; |
12
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
380 } |
d19146b30334
Tests: move write_file() into _common.pm.
Maxim Dounin <mdounin@mdounin.ru>
parents:
8
diff
changeset
|
381 |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
382 sub write_file_expand($$) { |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
383 my ($self, $name, $content) = @_; |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
384 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
385 $content =~ s/%%TEST_GLOBALS%%/$self->test_globals()/gmse; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
386 $content =~ s/%%TEST_GLOBALS_HTTP%%/$self->test_globals_http()/gmse; |
15
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
387 $content =~ s/%%TESTDIR%%/$self->{_testdir}/gms; |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
388 |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
389 return $self->write_file($name, $content); |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
390 } |
c6c36d7a4d90
Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents:
14
diff
changeset
|
391 |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
392 sub run_daemon($;@) { |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
393 my ($self, $code, @args) = @_; |
20
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
394 |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
395 my $pid = fork(); |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
396 die "Can't fork daemon: $!\n" unless defined $pid; |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
397 |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
398 if ($pid == 0) { |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
399 if (ref($code) eq 'CODE') { |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
400 $code->(@args); |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
401 exit 0; |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
402 } else { |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
403 exec($code, @args); |
195
d73ab4b6ef4a
Tests: fix run_daemon() in case of exec() failure.
Maxim Dounin <mdounin@mdounin.ru>
parents:
194
diff
changeset
|
404 exit 0; |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
405 } |
20
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
406 } |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
407 |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
408 $self->{_daemons} = [] unless defined $self->{_daemons}; |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
409 push @{$self->{_daemons}}, $pid; |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
410 |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
411 return $self; |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
412 } |
c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
Maxim Dounin <mdounin@mdounin.ru>
parents:
15
diff
changeset
|
413 |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
45
diff
changeset
|
414 sub testdir() { |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
45
diff
changeset
|
415 my ($self) = @_; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
45
diff
changeset
|
416 return $self->{_testdir}; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
45
diff
changeset
|
417 } |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
45
diff
changeset
|
418 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
419 sub test_globals() { |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
420 my ($self) = @_; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
421 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
422 return $self->{_test_globals} |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
423 if defined $self->{_test_globals}; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
424 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
425 my $s = ''; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
426 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
427 $s .= "pid $self->{_testdir}/nginx.pid;\n"; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
428 $s .= "error_log $self->{_testdir}/error.log debug;\n"; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
429 |
375
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
430 $s .= $ENV{TEST_NGINX_GLOBALS} |
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
431 if $ENV{TEST_NGINX_GLOBALS}; |
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
432 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
433 $self->{_test_globals} = $s; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
434 } |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
435 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
436 sub test_globals_http() { |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
437 my ($self) = @_; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
438 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
439 return $self->{_test_globals_http} |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
440 if defined $self->{_test_globals_http}; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
441 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
442 my $s = ''; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
443 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
444 $s .= "root $self->{_testdir};\n"; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
445 $s .= "access_log $self->{_testdir}/access.log;\n"; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
446 $s .= "client_body_temp_path $self->{_testdir}/client_body_temp;\n"; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
447 |
243
de7338227832
Tests: removed trailing spaces.
Homutov Vladimir <vl@nginx.com>
parents:
242
diff
changeset
|
448 $s .= "fastcgi_temp_path $self->{_testdir}/fastcgi_temp;\n" |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
449 if $self->has_module('fastcgi'); |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
450 |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
451 $s .= "proxy_temp_path $self->{_testdir}/proxy_temp;\n" |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
452 if $self->has_module('proxy'); |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
453 |
139
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
454 $s .= "uwsgi_temp_path $self->{_testdir}/uwsgi_temp;\n" |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
455 if $self->has_module('uwsgi'); |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
456 |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
457 $s .= "scgi_temp_path $self->{_testdir}/scgi_temp;\n" |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
458 if $self->has_module('scgi'); |
8b62dd9b8615
Tests: set temp paths for uwsgi and scgi modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
133
diff
changeset
|
459 |
375
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
460 $s .= $ENV{TEST_NGINX_GLOBALS_HTTP} |
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
461 if $ENV{TEST_NGINX_GLOBALS_HTTP}; |
5fdde9f755c9
Tests: a couple of auxiliary environment variables introduced.
Andrei Belov <defan@nginx.com>
parents:
348
diff
changeset
|
462 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
463 $self->{_test_globals_http} = $s; |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
464 } |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
465 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
466 ############################################################################### |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
467 |
68
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
468 sub log_core { |
67
5d16f380cd75
Tests: don't output in/out unless TEST_NGINX_VERBOSE set.
Maxim Dounin <mdounin@mdounin.ru>
parents:
51
diff
changeset
|
469 return unless $ENV{TEST_NGINX_VERBOSE}; |
68
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
470 my ($prefix, $msg) = @_; |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
471 ($prefix, $msg) = ('', $prefix) unless defined $msg; |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
472 $prefix .= ' ' if length($prefix) > 0; |
164
f602276b9bb9
Tests: truncate huge messages while logging.
Maxim Dounin <mdounin@mdounin.ru>
parents:
163
diff
changeset
|
473 |
281
53068d38a3ce
Tests: truncate messages to 2048 bytes instead of 4096.
Maxim Dounin <mdounin@mdounin.ru>
parents:
275
diff
changeset
|
474 if (length($msg) > 2048) { |
53068d38a3ce
Tests: truncate messages to 2048 bytes instead of 4096.
Maxim Dounin <mdounin@mdounin.ru>
parents:
275
diff
changeset
|
475 $msg = substr($msg, 0, 2048) |
53068d38a3ce
Tests: truncate messages to 2048 bytes instead of 4096.
Maxim Dounin <mdounin@mdounin.ru>
parents:
275
diff
changeset
|
476 . "(...logged only 2048 of " . length($msg) |
165
fca70f483608
Tests: fix previous commit (print original message length).
Maxim Dounin <mdounin@mdounin.ru>
parents:
164
diff
changeset
|
477 . " bytes)"; |
164
f602276b9bb9
Tests: truncate huge messages while logging.
Maxim Dounin <mdounin@mdounin.ru>
parents:
163
diff
changeset
|
478 } |
f602276b9bb9
Tests: truncate huge messages while logging.
Maxim Dounin <mdounin@mdounin.ru>
parents:
163
diff
changeset
|
479 |
68
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
480 $msg =~ s/^/# $prefix/gm; |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
481 $msg =~ s/([^\x20-\x7e])/sprintf('\\x%02x', ord($1)) . (($1 eq "\n") ? "\n" : '')/gmxe; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
482 $msg .= "\n" unless $msg =~ /\n\Z/; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
483 print $msg; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
484 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
485 |
68
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
486 sub log_out { |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
487 log_core('>>', @_); |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
488 } |
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
489 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
490 sub log_in { |
68
5f56040c39df
Tests: smtp xclient tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
67
diff
changeset
|
491 log_core('<<', @_); |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
492 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
493 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
494 ############################################################################### |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
495 |
79
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
496 sub http_get($;%) { |
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
497 my ($url, %extra) = @_; |
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
498 return http(<<EOF, %extra); |
29
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
499 GET $url HTTP/1.0 |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
500 Host: localhost |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
501 |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
502 EOF |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
503 } |
71ea39729fa0
Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
28
diff
changeset
|
504 |
79
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
505 sub http_head($;%) { |
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
506 my ($url, %extra) = @_; |
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
507 return http(<<EOF, %extra); |
41
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
508 HEAD $url HTTP/1.0 |
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
509 Host: localhost |
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
510 |
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
511 EOF |
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
512 } |
1b3c22a87e5d
Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
37
diff
changeset
|
513 |
79
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
514 sub http($;%) { |
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
515 my ($request, %extra) = @_; |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
516 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
517 my $s = http_start($request, %extra); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
518 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
519 return $s if $extra{start} or !defined $s; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
520 return http_end($s); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
521 } |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
522 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
523 sub http_start($;%) { |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
524 my ($request, %extra) = @_; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
525 my $s; |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
526 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
527 eval { |
96
ecff5407867c
Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
93
diff
changeset
|
528 local $SIG{ALRM} = sub { die "timeout\n" }; |
ecff5407867c
Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
93
diff
changeset
|
529 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
339
9d0a2fa47ac6
Tests: change http timeout to 5s, imap/pop3/smtp to 3s.
Maxim Dounin <mdounin@mdounin.ru>
parents:
323
diff
changeset
|
530 alarm(5); |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
531 |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
532 $s = $extra{socket} || IO::Socket::INET->new( |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
533 Proto => 'tcp', |
45
d68b85def521
Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents:
41
diff
changeset
|
534 PeerAddr => '127.0.0.1:8080' |
253
f440a8acbf39
Tests: report connection errors.
Maxim Dounin <mdounin@mdounin.ru>
parents:
243
diff
changeset
|
535 ) |
f440a8acbf39
Tests: report connection errors.
Maxim Dounin <mdounin@mdounin.ru>
parents:
243
diff
changeset
|
536 or die "Can't connect to nginx: $!\n"; |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
537 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
538 log_out($request); |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
539 $s->print($request); |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
540 |
79
d5330d926fac
Tests: add test for limit_req not clearing write timeout on delay.
Maxim Dounin <mdounin@mdounin.ru>
parents:
77
diff
changeset
|
541 select undef, undef, undef, $extra{sleep} if $extra{sleep}; |
87
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
79
diff
changeset
|
542 return '' if $extra{aborted}; |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
543 |
271
1a6eef7ac914
Tests: test for r->request_body->buf incorrect reuse.
Maxim Dounin <mdounin@mdounin.ru>
parents:
270
diff
changeset
|
544 if ($extra{body}) { |
1a6eef7ac914
Tests: test for r->request_body->buf incorrect reuse.
Maxim Dounin <mdounin@mdounin.ru>
parents:
270
diff
changeset
|
545 log_out($extra{body}); |
1a6eef7ac914
Tests: test for r->request_body->buf incorrect reuse.
Maxim Dounin <mdounin@mdounin.ru>
parents:
270
diff
changeset
|
546 $s->print($extra{body}); |
1a6eef7ac914
Tests: test for r->request_body->buf incorrect reuse.
Maxim Dounin <mdounin@mdounin.ru>
parents:
270
diff
changeset
|
547 } |
1a6eef7ac914
Tests: test for r->request_body->buf incorrect reuse.
Maxim Dounin <mdounin@mdounin.ru>
parents:
270
diff
changeset
|
548 |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
549 alarm(0); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
550 }; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
551 alarm(0); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
552 if ($@) { |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
553 log_in("died: $@"); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
554 return undef; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
555 } |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
556 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
557 return $s; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
558 } |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
559 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
560 sub http_end($;%) { |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
561 my ($s) = @_; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
562 my $reply; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
563 |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
564 eval { |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
565 local $SIG{ALRM} = sub { die "timeout\n" }; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
566 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
567 alarm(5); |
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
415
diff
changeset
|
568 |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
569 local $/; |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
570 $reply = $s->getline(); |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
571 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
572 alarm(0); |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
573 }; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
574 alarm(0); |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
575 if ($@) { |
96
ecff5407867c
Tests: better handle unexpected connection close from nginx.
Maxim Dounin <mdounin@mdounin.ru>
parents:
93
diff
changeset
|
576 log_in("died: $@"); |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
577 return undef; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
578 } |
270
f857180657c9
Tests: whitespace, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
268
diff
changeset
|
579 |
209
5137f27935b4
Tests: log timeouts in IMAP/POP3/SMTP.
Maxim Dounin <mdounin@mdounin.ru>
parents:
195
diff
changeset
|
580 log_in($reply); |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
581 return $reply; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
582 } |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
583 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
584 ############################################################################### |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
585 |
93
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
586 sub http_gzip_request { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
587 my ($url) = @_; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
588 my $r = http(<<EOF); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
589 GET $url HTTP/1.1 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
590 Host: localhost |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
591 Connection: close |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
592 Accept-Encoding: gzip |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
593 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
594 EOF |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
595 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
596 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
597 sub http_content { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
598 my ($text) = @_; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
599 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
600 return undef if !defined $text; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
601 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
602 if ($text !~ /(.*?)\x0d\x0a?\x0d\x0a?(.*)/ms) { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
603 return undef; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
604 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
605 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
606 my ($headers, $body) = ($1, $2); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
607 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
608 if ($headers !~ /Transfer-Encoding: chunked/i) { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
609 return $body; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
610 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
611 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
612 my $content = ''; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
613 while ($body =~ /\G\x0d?\x0a?([0-9a-f]+)\x0d\x0a?/gcmsi) { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
614 my $len = hex($1); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
615 $content .= substr($body, pos($body), $len); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
616 pos($body) += $len; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
617 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
618 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
619 return $content; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
620 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
621 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
622 sub http_gzip_like { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
623 my ($text, $re, $name) = @_; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
624 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
625 SKIP: { |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
626 eval { require IO::Uncompress::Gunzip; }; |
601
3a9a7b4f27f0
Tests: properly skip tests if run without IO::Uncompress::Gunzip.
Sergey Kandaurov <pluknet@nginx.com>
parents:
592
diff
changeset
|
627 Test::More::skip( |
93
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
628 "IO::Uncompress::Gunzip not installed", 1) if $@; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
629 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
630 my $in = http_content($text); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
631 my $out; |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
632 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
633 IO::Uncompress::Gunzip::gunzip(\$in => \$out); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
634 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
635 Test::More->builder->like($out, $re, $name); |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
636 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
637 } |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
638 |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
639 ############################################################################### |
5276d85d5040
Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
87
diff
changeset
|
640 |
5
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
641 1; |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
642 |
4d75bdb05ecf
Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
643 ############################################################################### |