annotate t/buffering.t @ 5:ae29daca3f0e default tip

Explicit use of "proxy_request_buffering on" in tests. This allows to avoid spurious tests failures in test runs with request buffering switched off by default.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 06 Mar 2015 17:44:38 +0300
parents 01a36878bf36
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for "proxy_request_buffering off".
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::Nginx;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 use Socket qw/ CRLF /;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 ###############################################################################
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 select STDERR; $| = 1;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 select STDOUT; $| = 1;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21
4
01a36878bf36 Tests now use try_run().
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
22 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)
3
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 ->write_file_expand('nginx.conf', <<'EOF');
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 %%TEST_GLOBALS%%
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 daemon off;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 events {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 http {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 %%TEST_GLOBALS_HTTP%%
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 server {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 listen 127.0.0.1:8080;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 server_name localhost;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 location / {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 proxy_pass http://127.0.0.1:8080/catch;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 proxy_request_buffering off;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 add_header X-Request-Time $request_time always;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 location /catch {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 proxy_pass http://127.0.0.1:8080/proxy;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 proxy_request_buffering off;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 catch_body on;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 location /proxy {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 proxy_pass http://127.0.0.1:8080/empty;
5
ae29daca3f0e Explicit use of "proxy_request_buffering on" in tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4
diff changeset
53 proxy_request_buffering on;
3
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 location /empty {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 return 200 "test response body\n";
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 EOF
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 $t->write_file('index.html', 'SEE-THIS');
4
01a36878bf36 Tests now use try_run().
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
65 $t->try_run('no catch_body')->plan(1);
3
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 ###############################################################################
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 # buffering switched off - expect immediate reject,
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 # before we'll send second part of the body
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 like(get_sleep('/', '12345X', '123456'),
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 qr/403 Forbidden.*X-Request-Time: 0/ms,
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 'unbuffered request rejected');
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 ###############################################################################
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 sub get_sleep {
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 my $uri = shift;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 my $first = shift;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 my $second = shift;
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 my $length = length($first) + length($second);
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 return http(
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 "GET $uri HTTP/1.1" . CRLF
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 . "Host: localhost" . CRLF
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 . "Connection: close" . CRLF
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 . "Content-Length: $length" . CRLF . CRLF
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 . $first,
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 sleep => 1.1,
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 body => $second
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 );
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 }
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93
d7b8639a8857 Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 ###############################################################################