annotate scgi_extra_data.t @ 1689:dbd19195df8a

Tests: adjusted mail_smtp.t "long pipelined" TODO. Prior to fixed reading with fully filled buffer in 2851e4c7de03 (1.21.0), test for long pipelined commands leads to connection close by nginx, which can result in RST and no response seen by the client, notably on win32. While here, cleaned up permitted smtp_auth methods in that particular server.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 24 May 2021 22:09:54 +0300
parents 6c323c672a86
children 5ac6efbe5552
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1581
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4 # (C) Nginx, Inc.
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 # Test for scgi backend with extra data.
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 ###############################################################################
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use warnings;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 use strict;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::More;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use lib 'lib';
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use Test::Nginx;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 ###############################################################################
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDERR; $| = 1;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDOUT; $| = 1;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 eval { require SCGI; };
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 plan(skip_all => 'SCGI not installed') if $@;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 my $t = Test::Nginx->new()
1638
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
29 ->has(qw/http scgi cache rewrite addition/)->plan(22)
1581
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 ->write_file_expand('nginx.conf', <<'EOF');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 %%TEST_GLOBALS%%
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 daemon off;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 events {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 http {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 %%TEST_GLOBALS_HTTP%%
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 scgi_param SCGI 1;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 scgi_param REQUEST_URI $request_uri;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 scgi_param REQUEST_METHOD $request_method;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 scgi_cache_path cache keys_zone=one:1m;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 scgi_cache_key $request_uri;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 scgi_cache_valid any 1m;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 server {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 listen 127.0.0.1:8080;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 server_name localhost;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 location / {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 scgi_pass 127.0.0.1:8081;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 add_after_body /after;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 location /unbuf/ {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 scgi_pass 127.0.0.1:8081;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 scgi_buffering off;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 add_after_body /after;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 location /head/ {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 scgi_pass 127.0.0.1:8081;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 scgi_cache one;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 add_after_body /after;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 location /after {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 return 200 ":after\n";
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 EOF
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 $t->run_daemon(\&scgi_daemon);
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 $t->run()->waitforsocket('127.0.0.1:' . port(8081));
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 ###############################################################################
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 TODO: {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 local $TODO = 'not yet' unless $t->has_version('1.19.1');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 like(http_get('/'), qr/SEE-THIS(?!-BUT-NOT-THIS)/, 'response with extra data');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 like(http_get('/short'), qr/SEE-THIS(?!.*:after)/s, 'too short response');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 like(http_get('/empty'), qr/200 OK(?!.*:after)/s, 'empty too short response');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like(http_head('/'), qr/200 OK(?!.*SEE-THIS)/s, 'no data in HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 like(http_head('/short'), qr/200 OK(?!.*SEE-THIS)/s, 'too short to HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_head('/empty'), qr/200 OK/, 'empty response to HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 # unbuffered responses
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 TODO: {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 local $TODO = 'not yet' unless $t->has_version('1.19.1');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 like(http_get('/unbuf/'), qr/SEE-THIS(?!-BUT-NOT-THIS)/,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 'unbuffered with extra data');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 like(http_get('/unbuf/short'), qr/SEE-THIS(?!.*:after)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 'unbuffered too short response');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 like(http_get('/unbuf/empty'), qr/200 OK(?!.*:after)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 'unbuffered empty too short response');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 like(http_head('/unbuf/'), qr/200 OK(?!.*SEE-THIS)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 'unbuffered no data in HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 like(http_head('/unbuf/short'), qr/200 OK(?!.*SEE-THIS)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 'unbuffered too short response to HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 like(http_head('/unbuf/empty'), qr/200 OK/,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 'unbuffered empty response to HEAD');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 # caching of responsses to HEAD requests
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 like(http_head('/head/empty'), qr/200 OK(?!.*SEE-THIS)/s, 'head no body');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 like(http_head('/head/matching'), qr/200 OK(?!.*SEE-THIS)/s, 'head matching');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 like(http_head('/head/extra'), qr/200 OK(?!.*SEE-THIS)/s, 'head extra');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 like(http_head('/head/short'), qr/200 OK(?!.*SEE-THIS)/s, 'head too short');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 like(http_get('/head/empty'), qr/SEE-THIS/, 'head no body cached');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 like(http_get('/head/matching'), qr/SEE-THIS/, 'head matching cached');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128 TODO: {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129 local $TODO = 'not yet' unless $t->has_version('1.19.1');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
130
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
131 like(http_get('/head/extra'), qr/SEE-THIS(?!-BUT-NOT-THIS)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132 'head extra cached');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133 like(http_get('/head/short'), qr/SEE-THIS(?!.*:after)/s,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 'head too short cached');
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137
1638
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
138 # "zero size buf" alerts (ticket #2117)
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
139
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
140 TODO: {
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
141 local $TODO = 'not yet' unless $t->has_version('1.19.1');
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
142
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
143 like(http_get('/zero'), qr/200 OK(?!.*NOT-THIS)/s, 'zero size');
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
144
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
145 }
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
146
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
147 TODO: {
1639
6c323c672a86 Tests: adjusted TODOs for alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1638
diff changeset
148 local $TODO = 'not yet' unless $t->has_version('1.19.7');
1638
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
149
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
150 like(http_get('/unbuf/zero'), qr/200 OK(?!.*NOT-THIS)/s,
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
151 'unbuffered zero size');
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
152
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
153 }
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
154
1639
6c323c672a86 Tests: adjusted TODOs for alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1638
diff changeset
155 $t->todo_alerts() if $t->has_version('1.19.1') and !$t->has_version('1.19.7');
1638
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
156
1581
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157 ###############################################################################
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
158
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
159 sub scgi_daemon {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 my $server = IO::Socket::INET->new(
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 Proto => 'tcp',
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162 LocalHost => '127.0.0.1:' . port(8081),
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 Listen => 5,
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 Reuse => 1
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165 )
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166 or die "Can't create listening socket: $!\n";
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168 my $scgi = SCGI->new($server, blocking => 1);
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169 my ($c, $uri, $head);
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
171 while (my $request = $scgi->accept()) {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
172 eval { $request->read_env(); };
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
173 next if $@;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
174
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
175 $uri = $request->env->{REQUEST_URI};
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
176 $uri =~ s!^/unbuf!!;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
177
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
178 $head = $request->env->{REQUEST_METHOD} eq 'HEAD';
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
179
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
180 $c = $request->connection();
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
181
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
182 if ($uri eq '/') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
183 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
184 $c->print("Content-Length: 8\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
185 $c->print("SEE-THIS-BUT-NOT-THIS\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
186
1638
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
187 } elsif ($uri eq '/zero') {
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
188 $c->print("Content-Type: text/html\n");
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
189 $c->print("Content-Length: 0\n\n");
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
190 $c->print("NOT-THIS\n");
6128590b0d46 Tests: tests for "zero size buf" alerts in unbuffered proxying.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1581
diff changeset
191
1581
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
192 } elsif ($uri eq '/short') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
193 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
194 $c->print("Content-Length: 100\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
195 $c->print("SEE-THIS-TOO-SHORT-RESPONSE\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
196
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
197 } elsif ($uri eq '/empty') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
198 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
199 $c->print("Content-Length: 100\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
200
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
201 } elsif ($uri eq '/head/empty') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
202 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
203 $c->print("Content-Length: 8\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
204 $c->print("SEE-THIS") unless $head;
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
205
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
206 } elsif ($uri eq '/head/matching') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
207 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
208 $c->print("Content-Length: 8\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
209 $c->print("SEE-THIS");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
210
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
211 } elsif ($uri eq '/head/extra') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
212 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
213 $c->print("Content-Length: 8\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
214 $c->print("SEE-THIS-BUT-NOT-THIS\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
215
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
216 } elsif ($uri eq '/head/short') {
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
217 $c->print("Content-Type: text/html\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
218 $c->print("Content-Length: 100\n\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
219 $c->print("SEE-THIS\n");
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
220 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
221 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
222 }
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
223
463d6863d360 Tests: tests for extra data and short responses.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
224 ###############################################################################