annotate proxy.t @ 91:ec89d4d65bef

Tests: Last-Modified and Accept-Ranges should be cleared on ssi. As of 0.7.44 (cache support) they are no longer cleared when got from upstream. Probably other filters (e.g. xslt) are affected as well.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 26 May 2009 17:21:59 +0400
parents 6e5884419e4a
children 1c0ec30614c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for http proxy module.
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More tests => 3;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 my $t = Test::Nginx->new();
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 master_process off;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 daemon off;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 events {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 http {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 access_log off;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 root %%TESTDIR%%;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 client_body_temp_path %%TESTDIR%%/client_body_temp;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 proxy_temp_path %%TESTDIR%%/proxy_temp;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 server {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 43
diff changeset
43 listen 127.0.0.1:8080;
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server_name localhost;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location / {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 43
diff changeset
47 proxy_pass http://127.0.0.1:8081;
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 proxy_read_timeout 1s;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 EOF
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 $t->run_daemon(\&http_daemon);
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 $t->run();
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 ###############################################################################
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 like(http_get('/'), qr/SEE-THIS/, 'proxy request');
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 like(http_get('/multi'), qr/AND-THIS/, 'proxy request with multiple packets');
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 unlike(http_head('/'), qr/SEE-THIS/, 'proxy head request');
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 ###############################################################################
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 sub http_daemon {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 my $server = IO::Socket::INET->new(
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
69 Proto => 'tcp',
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 LocalHost => '127.0.0.1:8081',
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
71 Listen => 5,
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
72 Reuse => 1
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 )
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
74 or die "Can't create listening socket: $!\n";
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 while (my $client = $server->accept()) {
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
77 $client->autoflush(1);
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 my $headers = '';
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 my $uri = '';
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
82 while (<$client>) {
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 $headers .= $_;
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
84 last if (/^\x0d?\x0a?$/);
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
85 }
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 if ($uri eq '/') {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 print $client <<'EOF';
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 HTTP/1.1 200 OK
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 Connection: close
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 EOF
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 print $client "TEST-OK-IF-YOU-SEE-THIS"
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 unless $headers =~ /^HEAD/i;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 } elsif ($uri eq '/multi') {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
100 print $client <<"EOF";
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 HTTP/1.1 200 OK
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 Connection: close
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 TEST-OK-IF-YOU-SEE-THIS
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 EOF
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 select undef, undef, undef, 0.1;
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 print $client 'AND-THIS';
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 } else {
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
112 print $client <<"EOF";
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 HTTP/1.1 404 Not Found
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 Connection: close
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 Oops, '$uri' not found
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 EOF
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119
83
6e5884419e4a Tests: whitespace cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
120 close $client;
42
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 }
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123
7435db149168 Tests: basic proxy tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 ###############################################################################