annotate fastcgi.t @ 114:44b281ac4bc6

Tests: add server name tests, including fancy regex ones. With test config nginx will fail to start as of 0.8.28 due to incorrect conversion of regular expressions to lowercase. Patch was discussed on mailing list and will be included in next release.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 30 Nov 2009 14:47:17 +0300
parents 1c0ec30614c6
children 8ac1faaddd2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Test for fastcgi backend.
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require FCGI; };
31
baf9c51d166c Tests: fix typo in fastcgi test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 30
diff changeset
25 plan(skip_all => 'FCGI not installed') if $@;
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
27 my $t = Test::Nginx->new()->has('fastcgi')->plan(4)
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
30 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
31
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 master_process off;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 daemon off;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 events {
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
39 %%TEST_GLOBALS_HTTP%%
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 31
diff changeset
40
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 server {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 44
diff changeset
42 listen 127.0.0.1:8080;
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 server_name localhost;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 location / {
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 fastcgi_pass 127.0.0.1:8081;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 EOF
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 $t->run_daemon(\&fastcgi_daemon);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 $t->run();
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 like(http_get('/'), qr/SEE-THIS/, 'fastcgi request');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 like(http_get('/redir'), qr/302/, 'fastcgi redirect');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 like(http_get('/'), qr/^3$/m, 'fastcgi third request');
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
41
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 40
diff changeset
62 unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD');
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 40
diff changeset
63
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 ###############################################################################
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 sub fastcgi_daemon {
44
daa295331acd Tests: don't bind backend daemons to *, use 127.0.0.1 instead.
Maxim Dounin <mdounin@mdounin.ru>
parents: 41
diff changeset
67 my $socket = FCGI::OpenSocket('127.0.0.1:8081', 5);
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV,
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 $socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 my $count;
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 while( $request->Accept() >= 0 ) {
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
73 $count++;
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
74 print <<EOF;
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 44
diff changeset
75 Location: http://127.0.0.1:8080/redirect
40
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
76 Content-Type: text/html
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
77
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
78 SEE-THIS
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
79 $count
3325fa3f515c Tests: avoid using \r\n.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
80 EOF
30
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 FCGI::CloseSocket($socket);
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 }
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85
a8e8b7a664c1 Tests: basic fastcgi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 ###############################################################################