tests: port all existing tests to TAP library
[rainbows.git] / t / lib-large-file-response.sh
blob9bbd767134c745e2a6496cd0dfce8156fe5551ba
1 . ./test-lib.sh
2 test -r random_blob || die "random_blob required, run with 'make $0'"
4 if ! grep -v ^VmRSS: /proc/self/status >/dev/null 2>&1
5 then
6 t_info "skipping, can't read RSS from /proc/self/status"
7 exit 0
8 fi
10 t_plan 10 "large file response slurp avoidance for $model"
12 t_begin "setup and startup" && {
13 rtmpfiles curl_out
14 rainbows_setup $model
15 # can't load Rack::Lint here since it'll cause Rev to slurp
16 rainbows -E none -D large-file-response.ru -c $unicorn_config
17 rainbows_wait_start
20 t_begin "read random blob size" && {
21 random_blob_size=$(wc -c < random_blob)
24 t_begin "read current RSS" && {
25 curl -v http://$listen/rss
26 dbgcat r_err
27 rss_before=$(curl -sSfv http://$listen/rss)
28 t_info "rss_before=$rss_before"
31 t_begin "send a series HTTP/1.1 requests sequentially" && {
32 for i in a b c
34 size=$( (curl -sSfv http://$listen/random_blob &&
35 echo ok >$ok) |wc -c)
36 test $size -eq $random_blob_size
37 test xok = x$(cat $ok)
38 done
41 # this was a problem during development
42 t_begin "HTTP/1.0 test" && {
43 size=$( (curl -0 -sSfv http://$listen/random_blob &&
44 echo ok >$ok) |wc -c)
45 test $size -eq $random_blob_size
46 test xok = x$(cat $ok)
49 t_begin "HTTP/0.9 test" && {
51 printf 'GET /random_blob\r\n'
52 cat $fifo > $tmp &
53 wait
54 echo ok > $ok
55 ) | socat - TCP:$listen > $fifo
56 cmp $tmp random_blob
57 test xok = x$(cat $ok)
60 dbgcat r_err
62 t_begin "read RSS again" && {
63 curl -v http://$listen/rss
64 rss_after=$(curl -sSfv http://$listen/rss)
65 t_info "rss_after=$rss_after"
68 t_begin "shutdown server" && {
69 kill -QUIT $rainbows_pid
72 t_begin "compare RSS before and after" && {
73 diff=$(( $rss_after - $rss_before ))
74 t_info "test diff=$diff < orig=$random_blob_size"
75 test $diff -le $random_blob_size
78 dbgcat r_err
80 t_begin "check stderr" && check_stderr
82 t_done