annotate scgi.t @ 540:481d705b8610

Tests: SSL support in mail backends. Socket is now embedded into every mail module. Socket methods are wrapped where appropriate. The new "SSL" extra flag specifies to accept connection over SSL.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 03 Apr 2015 00:11:38 +0300
parents d5bf5942a8b2
children dc2f8aac0553
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Test for scgi backend.
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require SCGI; };
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 plan(skip_all => 'SCGI not installed') if $@;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http scgi/)->plan(5)
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 %%TEST_GLOBALS%%
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 241
diff changeset
32 daemon off;
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 events {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 http {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 listen 127.0.0.1:8080;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 server_name localhost;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 location / {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 scgi_pass 127.0.0.1:8081;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 scgi_param SCGI 1;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 scgi_param REQUEST_URI $request_uri;
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
48 scgi_param HTTP_X_BLAH "blah";
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 EOF
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 $t->run_daemon(\&scgi_daemon);
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 $t->run();
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 like(http_get('/'), qr/SEE-THIS/, 'scgi request');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
61 like(http_get('/redir'), qr/ 302 /, 'scgi redirect');
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 like(http_get('/'), qr/^3$/m, 'scgi third request');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD');
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
167
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
66 like(http_get_headers('/headers'), qr/SEE-THIS/,
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
67 'scgi request with many ignored headers');
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
68
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
69 ###############################################################################
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
70
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
71 sub http_get_headers {
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
72 my ($url, %extra) = @_;
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
73 return http(<<EOF, %extra);
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
74 GET $url HTTP/1.0
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
75 Host: localhost
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
76 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
77 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
78 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
79 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
80 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
81 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
82 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
83 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
84 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
85 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
86 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
87 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
88 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
89 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
90 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
91 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
92 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
93 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
94 X-Blah: ignored header
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
95
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
96 EOF
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
97 }
b8fdbc918280 Tests: add scgi headers_param test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
98
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 ###############################################################################
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 sub scgi_daemon {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 my $server = IO::Socket::INET->new(
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 Proto => 'tcp',
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 LocalHost => '127.0.0.1:8081',
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 Listen => 5,
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 Reuse => 1
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 )
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 or die "Can't create listening socket: $!\n";
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 my $scgi = SCGI->new($server, blocking => 1);
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 my $count = 0;
212
a7cc4371f4ad Tests: whitespace fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 167
diff changeset
112
158
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 while (my $request = $scgi->accept()) {
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 $count++;
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 $request->read_env();
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 $request->connection()->print(<<EOF);
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 Location: http://127.0.0.1:8080/redirect
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 Content-Type: text/html
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 SEE-THIS
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 $count
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 EOF
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 }
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126
72236ee09631 Tests: add scgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127 ###############################################################################