3 test -r random_blob || die
"random_blob required, run with 'make $0'"
7 t_info
"skipping $T since it can't load the sendfile gem, yet"
13 EventMachine|NeverBlock
)
14 t_info
"skipping $T since it's not compatible with $model"
20 t_plan
7 "sendfile byte range response for $model"
22 t_begin
"setup and startup" && {
25 echo 'require "sendfile"' >> $unicorn_config
26 echo 'def (::IO).copy_stream(*x); abort "NO"; end' >> $unicorn_config
28 # can't load Rack::Lint here since it clobbers body#to_path
29 rainbows
-E none
-D large-file-response.ru
-c $unicorn_config
36 t_begin
"read random blob sha1s" && {
37 sha1_head
=$
(curl
-sSf $range_head file://random_blob | rsha1
)
38 sha1_tail
=$
(curl
-sSf $range_tail file://random_blob | rsha1
)
39 sha1_mid
=$
(curl
-sSf $range_mid file://random_blob | rsha1
)
42 t_begin
"head range matches" && {
43 sha1
="$(curl -sSv $range_head http://$listen/random_blob | rsha1)"
44 test x
"$sha1_head" = x
"$sha1"
47 t_begin
"tail range matches" && {
48 sha1
="$(curl -sS $range_tail http://$listen/random_blob | rsha1)"
49 test x
"$sha1_tail" = x
"$sha1"
52 t_begin
"mid range matches" && {
53 sha1
="$(curl -sS $range_mid http://$listen/random_blob | rsha1)"
54 test x
"$sha1_mid" = x
"$sha1"
57 t_begin
"shutdown server" && {
58 kill -QUIT $rainbows_pid
61 t_begin
"check stderr" && check_stderr