preliminary reverse proxy Rack application
[rainbows.git] / t / t0106-rack-input-keepalive.sh
blobf9c97582cd43fe1a843bba89865761aa51c651c0
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 Connection=keep-alive
21 export Connection
22 content-md5-put < random_blob
23 content-md5-put < random_blob
24 content-md5-put < random_blob
25 printf 'PUT / HTTP/1.0\r\n'
26 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
27 cat random_blob
28 wait
29 echo ok > $ok
30 ) | socat - TCP4:$listen > $fifo
31 test x"$(cat $ok)" = xok
34 t_begin "check responses" && {
35 dbgcat tmp
36 test 4 -eq $(grep $random_blob_sha1 $tmp | wc -l)
39 t_begin "send big pipelined identity requests" && {
41 cat $fifo > $tmp &
42 printf 'PUT / HTTP/1.0\r\n'
43 printf 'Connection: keep-alive\r\n'
44 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
45 cat random_blob
46 printf 'PUT / HTTP/1.1\r\n'
47 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
48 cat random_blob
49 printf 'PUT / HTTP/1.0\r\n'
50 printf 'Content-Length: %d\r\n\r\n' $random_blob_size
51 cat random_blob
52 wait
53 echo ok > $ok
54 ) | socat - TCP4:$listen > $fifo
55 test x"$(cat $ok)" = xok
58 t_begin "check responses" && {
59 dbgcat tmp
60 test 3 -eq $(grep $random_blob_sha1 $tmp | wc -l)
63 t_begin "send pipelined identity requests" && {
66 printf 'PUT / HTTP/1.0\r\n'
67 printf 'Connection: keep-alive\r\n'
68 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
69 printf 'PUT / HTTP/1.1\r\nHost: example.com\r\n'
70 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
71 printf 'PUT / HTTP/1.0\r\n'
72 printf 'Content-Length: %d\r\n\r\n%s' $body_size $body
73 } > $req
75 cat $fifo > $tmp &
76 cat $req
77 wait
78 echo ok > $ok
79 ) | socat - TCP4:$listen > $fifo
80 test x"$(cat $ok)" = xok
83 t_begin "check responses" && {
84 dbgcat tmp
85 test 3 -eq $(grep $body_sha1 $tmp | wc -l)
88 t_begin "send pipelined chunked requests" && {
91 printf 'PUT / HTTP/1.0\r\n'
92 printf 'Connection: keep-alive\r\n'
93 printf 'Transfer-Encoding: chunked\r\n\r\n'
94 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
95 printf 'PUT / HTTP/1.1\r\nHost: example.com\r\n'
96 printf 'Transfer-Encoding: chunked\r\n\r\n'
97 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
98 printf 'PUT / HTTP/1.0\r\n'
99 printf 'Transfer-Encoding: chunked\r\n\r\n'
100 printf '%x\r\n%s\r\n0\r\n\r\n' $body_size $body
101 } > $req
103 cat $fifo > $tmp &
104 cat $req
105 wait
106 echo ok > $ok
107 ) | socat - TCP4:$listen > $fifo
108 test x"$(cat $ok)" = xok
111 t_begin "check responses" && {
112 dbgcat tmp
113 test 3 -eq $(grep $body_sha1 $tmp | wc -l)
116 t_begin "kill server" && kill $rainbows_pid
118 t_begin "no errors in stderr log" && check_stderr
120 t_done