rev+revactor: fix LARGE pipelined uploads
[rainbows.git] / t / t0106-rack-input-keepalive.sh
blobce6d092ce8402212f95a0a1861e000057b70bb70
1 #!/bin/sh
2 . ./test-lib.sh
3 t_plan 11 "rack.input pipelining test"
5 t_begin "setup and startup" && {
6 rainbows_setup $model
7 rtmpfiles req
8 rainbows -D sha1.ru -c $unicorn_config
9 body=hello
10 body_size=$(printf $body | wc -c)
11 body_sha1=$(printf $body | rsha1)
12 random_blob_size=$(wc -c < random_blob)
13 random_blob_sha1=$(rsha1 < random_blob)
14 rainbows_wait_start
17 t_begin "send big pipelined chunked requests" && {
19 cat $fifo > $tmp &
20 content-md5-put < random_blob
21 content-md5-put < random_blob
22 content-md5-put < random_blob
23 printf 'PUT / HTTP/1.0\r\n'
24 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
25 cat random_blob
26 wait
27 echo ok > $ok
28 ) | socat - TCP4:$listen > $fifo
29 test x"$(cat $ok)" = xok
32 t_begin "check responses" && {
33 dbgcat tmp
34 test 4 -eq $(grep $random_blob_sha1 $tmp | wc -l)
37 t_begin "send big pipelined identity requests" && {
39 cat $fifo > $tmp &
40 printf 'PUT / HTTP/1.0\r\n'
41 printf 'Connection: keep-alive\r\n'
42 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
43 cat random_blob
44 printf 'PUT / HTTP/1.1\r\n'
45 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
46 cat random_blob
47 printf 'PUT / HTTP/1.0\r\n'
48 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
49 cat random_blob
50 wait
51 echo ok > $ok
52 ) | socat - TCP4:$listen > $fifo
53 test x"$(cat $ok)" = xok
56 t_begin "check responses" && {
57 dbgcat tmp
58 test 3 -eq $(grep $random_blob_sha1 $tmp | wc -l)
61 t_begin "send pipelined identity requests" && {
64 printf 'PUT / HTTP/1.0\r\n'
65 printf 'Connection: keep-alive\r\n'
66 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
67 printf 'PUT / HTTP/1.1\r\nHost: example.com\r\n'
68 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
69 printf 'PUT / HTTP/1.0\r\n'
70 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
71 } > $req
73 cat $fifo > $tmp &
74 cat $req
75 wait
76 echo ok > $ok
77 ) | socat - TCP4:$listen > $fifo
78 test x"$(cat $ok)" = xok
81 t_begin "check responses" && {
82 dbgcat tmp
83 test 3 -eq $(grep $body_sha1 $tmp | wc -l)
86 t_begin "send pipelined chunked requests" && {
89 printf 'PUT / HTTP/1.0\r\n'
90 printf 'Connection: keep-alive\r\n'
91 printf 'Transfer-Encoding: chunked\r\n\r\n'
92 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
93 printf 'PUT / HTTP/1.1\r\nHost: example.com\r\n'
94 printf 'Transfer-Encoding: chunked\r\n\r\n'
95 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
96 printf 'PUT / HTTP/1.0\r\n'
97 printf 'Transfer-Encoding: chunked\r\n\r\n'
98 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
99 } > $req
101 cat $fifo > $tmp &
102 cat $req
103 wait
104 echo ok > $ok
105 ) | socat - TCP4:$listen > $fifo
106 test x"$(cat $ok)" = xok
109 t_begin "check responses" && {
110 dbgcat tmp
111 test 3 -eq $(grep $body_sha1 $tmp | wc -l)
114 t_begin "kill server" && kill $rainbows_pid
116 t_begin "no errors in stderr log" && check_stderr
118 t_done