1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
| | #!/bin/sh
. ./test-lib.sh
skip_models StreamResponseEpoll
test -r random_blob || die "random_blob required, run with 'make $0'"
req_curl_chunked_upload_err_check
t_plan 18 "rack.input client_max_body_size tiny"
t_begin "setup and startup" && {
rtmpfiles curl_out curl_err
rainbows_setup $model
ed -s $unicorn_config <<EOF
,s/client_max_body_size.*/client_max_body_size 256/
w
EOF
rainbows -D sha1-random-size.ru -c $unicorn_config
rainbows_wait_start
}
t_begin "stops a regular request" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/ > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "stops a large chunked request" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/ > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "small size sha1 chunked ok" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/ > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "small size sha1 content-length ok" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/ > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "stops a regular request (gets_read_mix)" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "stops a large chunked request (gets_read_mix)" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "stops a large line-based chunked request (gets_read_mix)" && {
rm -f $ok
</dev/null awk 'BEGIN{for(i=22;--i>=0;) print "hello world"}' | \
curl -vsSf -T- -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "OK with line-based chunked request (gets_read_mix)" && {
rm -f $ok
</dev/null awk 'BEGIN{for(i=21;--i>=0;) print "hello world"}' | \
curl -vsSf -T- -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test x"$(cat $curl_out)" = x23eab3cebcbe22a0456c8462e3d3bb01ae761702
}
t_begin "small size sha1 chunked ok (gets_read_mix)" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "small size sha1 content-length ok (gets_read_mix)" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/gets_read_mix > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "stops a regular request (each)" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/each > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "stops a large chunked request (each)" && {
rm -f $ok
dd if=/dev/zero bs=257 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/each > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "small size sha1 chunked ok (each)" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 | \
curl -vsSf -T- -H Expect: \
http://$listen/each > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "small size sha1 content-length ok (each)" && {
blob_sha1=b376885ac8452b6cbf9ced81b1080bfd570d9b91
rm -f $ok
dd if=/dev/zero bs=256 count=1 of=$tmp
curl -vsSf -T $tmp -H Expect: \
http://$listen/each > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test "$(cat $curl_out)" = $blob_sha1
}
t_begin "stops a large line-based chunked request (each)" && {
rm -f $ok
</dev/null awk 'BEGIN{for(i=22;--i>=0;) print "hello world"}' | \
curl -vsSf -T- -H Expect: \
http://$listen/each > $curl_out 2> $curl_err || > $ok
dbgcat curl_err
dbgcat curl_out
grep 413 $curl_err
test -e $ok
}
t_begin "OK with line-based chunked request (each)" && {
rm -f $ok
</dev/null awk 'BEGIN{for(i=21;--i>=0;) print "hello world"}' | \
curl -vsSf -T- -H Expect: \
http://$listen/each > $curl_out 2> $curl_err
dbgcat curl_err
dbgcat curl_out
test x"$(cat $curl_out)" = x23eab3cebcbe22a0456c8462e3d3bb01ae761702
}
t_begin "shutdown" && {
kill $rainbows_pid
}
t_done
|