rainbows 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +12 -6
- data/README +3 -2
- data/Rakefile +3 -3
- data/TODO +2 -9
- data/lib/rainbows.rb +1 -0
- data/lib/rainbows/app_pool.rb +10 -6
- data/lib/rainbows/base.rb +1 -1
- data/lib/rainbows/const.rb +1 -1
- data/lib/rainbows/ev_core.rb +88 -0
- data/lib/rainbows/event_machine.rb +218 -0
- data/lib/rainbows/http_server.rb +4 -1
- data/lib/rainbows/rev.rb +21 -89
- data/lib/rainbows/revactor.rb +4 -10
- data/local.mk.sample +13 -7
- data/rainbows.gemspec +17 -2
- data/t/.gitignore +1 -0
- data/t/GNUmakefile +63 -40
- data/t/README +6 -2
- data/t/async_sinatra.ru +13 -0
- data/t/bin/unused_listen +1 -1
- data/t/large-file-response.ru +1 -0
- data/t/my-tap-lib.sh +200 -0
- data/t/simple-http_Base.ru +3 -0
- data/t/simple-http_EventMachine.ru +9 -0
- data/t/simple-http_Rev.ru +9 -0
- data/t/simple-http_Revactor.ru +10 -0
- data/t/simple-http_ThreadPool.ru +10 -0
- data/t/simple-http_ThreadSpawn.ru +10 -0
- data/t/t0000-simple-http.sh +142 -0
- data/t/t0001-unix-http.sh +103 -0
- data/t/t0002-graceful.sh +32 -0
- data/t/t0002-parser-error.sh +31 -0
- data/t/t0003-reopen-logs.sh +97 -0
- data/t/t0005-large-file-response.sh +83 -0
- data/t/t0100-rack-input-hammer.sh +45 -0
- data/t/t0101-rack-input-trailer.sh +68 -0
- data/t/t0200-async-response.sh +66 -0
- data/t/t0201-async-response-no-autochunk.sh +3 -0
- data/t/t0300-async_sinatra.sh +65 -0
- data/t/t9000-rack-app-pool.sh +45 -33
- data/t/test-lib.sh +67 -56
- metadata +26 -56
- data/t/lib-async-response-no-autochunk.sh +0 -6
- data/t/lib-async-response.sh +0 -45
- data/t/lib-graceful.sh +0 -40
- data/t/lib-input-trailer.sh +0 -63
- data/t/lib-large-file-response.sh +0 -45
- data/t/lib-parser-error.sh +0 -29
- data/t/lib-rack-input-hammer.sh +0 -38
- data/t/lib-reopen-logs.sh +0 -60
- data/t/lib-simple-http.sh +0 -92
- data/t/t0000-basic.sh +0 -2
- data/t/t1000-thread-pool-basic.sh +0 -2
- data/t/t1002-thread-pool-graceful.sh +0 -2
- data/t/t1003-thread-pool-reopen-logs.sh +0 -2
- data/t/t1004-thread-pool-async-response.sh +0 -45
- data/t/t1005-thread-pool-large-file-response.sh +0 -45
- data/t/t1006-thread-pool-async-response-no-autochunk.sh +0 -6
- data/t/t1100-thread-pool-rack-input.sh +0 -2
- data/t/t1101-thread-pool-input-trailer.sh +0 -2
- data/t/t2000-thread-spawn-basic.sh +0 -2
- data/t/t2002-thread-spawn-graceful.sh +0 -2
- data/t/t2003-thread-spawn-reopen-logs.sh +0 -2
- data/t/t2004-thread-spawn-async-response.sh +0 -45
- data/t/t2005-thread-spawn-large-file-response.sh +0 -45
- data/t/t2006-thread-spawn-async-response-no-autochunk.sh +0 -6
- data/t/t2100-thread-spawn-rack-input.sh +0 -2
- data/t/t2101-thread-spawn-input-trailer.sh +0 -2
- data/t/t3000-revactor-basic.sh +0 -2
- data/t/t3002-revactor-graceful.sh +0 -2
- data/t/t3003-revactor-reopen-logs.sh +0 -2
- data/t/t3004-revactor-async-response.sh +0 -45
- data/t/t3005-revactor-large-file-response.sh +0 -2
- data/t/t3006-revactor-async-response-no-autochunk.sh +0 -6
- data/t/t3100-revactor-rack-input.sh +0 -2
- data/t/t3101-revactor-rack-input-trailer.sh +0 -2
- data/t/t4000-rev-basic.sh +0 -2
- data/t/t4002-rev-graceful.sh +0 -2
- data/t/t4003-rev-parser-error.sh +0 -2
- data/t/t4003-rev-reopen-logs.sh +0 -2
- data/t/t4004-rev-async-response.sh +0 -45
- data/t/t4005-rev-large-file-response.sh +0 -2
- data/t/t4006-rev-async-response-no-autochunk.sh +0 -6
- data/t/t4100-rev-rack-input.sh +0 -2
- data/t/t4101-rev-rack-input-trailer.sh +0 -2
    
        data/t/t9000-rack-app-pool.sh
    CHANGED
    
    | @@ -1,36 +1,48 @@ | |
| 1 1 | 
             
            #!/bin/sh
         | 
| 2 2 | 
             
            . ./test-lib.sh
         | 
| 3 | 
            +
            case $model in
         | 
| 4 | 
            +
            Thread*) ;;
         | 
| 5 | 
            +
            *)
         | 
| 6 | 
            +
            	t_info "skipping $T since it's not compatible with $model"
         | 
| 7 | 
            +
            	exit 0
         | 
| 8 | 
            +
            	;;
         | 
| 9 | 
            +
            esac
         | 
| 10 | 
            +
            nr_client=30 APP_POOL_SIZE=4
         | 
| 3 11 |  | 
| 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 | 
            -
            test  | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 12 | 
            +
            t_plan 6 "AppPool Rack middleware test for $model"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            t_begin "configure and start" && {
         | 
| 15 | 
            +
            	rtmpfiles curl_out curl_err
         | 
| 16 | 
            +
            	rainbows_setup $model 50
         | 
| 17 | 
            +
            	APP_POOL_SIZE=$APP_POOL_SIZE rainbows -D t9000.ru -c $unicorn_config
         | 
| 18 | 
            +
            	rainbows_wait_start
         | 
| 19 | 
            +
            }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            t_begin "launch $nr_client requests" && {
         | 
| 22 | 
            +
            	start=$(date +%s)
         | 
| 23 | 
            +
            	seq="$(awk "BEGIN{for(i=0;i<$nr_client;++i) print i}" </dev/null)"
         | 
| 24 | 
            +
            	for i in $seq
         | 
| 25 | 
            +
            	do
         | 
| 26 | 
            +
            		curl -sSf http://$listen/ >> $curl_out 2>> $curl_err &
         | 
| 27 | 
            +
            	done
         | 
| 28 | 
            +
            	wait
         | 
| 29 | 
            +
            	t_info elapsed=$(( $(date +%s) - $start ))
         | 
| 30 | 
            +
            }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            t_begin "kill server" && {
         | 
| 33 | 
            +
            	kill $rainbows_pid
         | 
| 34 | 
            +
            }
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            t_begin "$APP_POOL_SIZE instances of app were used" && {
         | 
| 37 | 
            +
            	test $APP_POOL_SIZE -eq $(sort < $curl_out | uniq | wc -l)
         | 
| 38 | 
            +
            }
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            t_begin "no errors in curl stderr" && {
         | 
| 41 | 
            +
            	test ! -s $curl_err
         | 
| 42 | 
            +
            }
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            t_begin "no errors in Rainbows! stderr" && {
         | 
| 45 | 
            +
            	check_stderr
         | 
| 46 | 
            +
            }
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            t_done
         | 
    
        data/t/test-lib.sh
    CHANGED
    
    | @@ -1,63 +1,21 @@ | |
| 1 1 | 
             
            #!/bin/sh
         | 
| 2 2 | 
             
            # Copyright (c) 2009 Rainbows! developers
         | 
| 3 | 
            +
            . ./my-tap-lib.sh
         | 
| 3 4 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
            (
         | 
| 6 | 
            -
            	set +e
         | 
| 7 | 
            -
            	set -o pipefail 2>/dev/null
         | 
| 8 | 
            -
            )
         | 
| 9 | 
            -
            if test $? -eq 0
         | 
| 10 | 
            -
            then
         | 
| 11 | 
            -
            	set -o pipefail
         | 
| 12 | 
            -
            else
         | 
| 13 | 
            -
            	echo >&2 "WARNING: your shell does not understand pipefail"
         | 
| 14 | 
            -
            fi
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            set -e
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            T=$(basename $0)
         | 
| 5 | 
            +
            set +u
         | 
| 19 6 | 
             
            if test -z "$model"
         | 
| 20 7 | 
             
            then
         | 
| 21 | 
            -
            	 | 
| 22 | 
            -
            	 | 
| 23 | 
            -
            	 | 
| 24 | 
            -
            	t3???-revactor-*.sh) model=Revactor ;;
         | 
| 25 | 
            -
            	t4???-rev-*.sh) model=Rev ;;
         | 
| 26 | 
            -
            	*) model=any ;;
         | 
| 27 | 
            -
            	esac
         | 
| 8 | 
            +
            	# defaulting to Base would unfortunately fail some concurrency tests
         | 
| 9 | 
            +
            	model=ThreadSpawn
         | 
| 10 | 
            +
            	t_info "model undefined, defaulting to $model"
         | 
| 28 11 | 
             
            fi
         | 
| 29 12 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 13 | 
            +
            set -e
         | 
| 14 | 
            +
            RUBY="${RUBY-ruby}"
         | 
| 15 | 
            +
            RUBY_VERSION=${RUBY_VERSION-$($RUBY -e 'puts RUBY_VERSION')}
         | 
| 16 | 
            +
            t_pfx=$PWD/trash/$model.$T-$RUBY_VERSION
         | 
| 33 17 | 
             
            set -u
         | 
| 34 18 |  | 
| 35 | 
            -
            # ensure a sane environment
         | 
| 36 | 
            -
            TZ=UTC LC_ALL=C LANG=C
         | 
| 37 | 
            -
            export LANG LC_ALL TZ
         | 
| 38 | 
            -
            unset CDPATH
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            die () {
         | 
| 41 | 
            -
            	echo >&2 "$@"
         | 
| 42 | 
            -
            	exit 1
         | 
| 43 | 
            -
            }
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            _test_on_exit () {
         | 
| 46 | 
            -
            	code=$?
         | 
| 47 | 
            -
            	case $code in
         | 
| 48 | 
            -
            	0)
         | 
| 49 | 
            -
            		echo "ok $T"
         | 
| 50 | 
            -
            		rm -f $_TEST_OK_RM_LIST
         | 
| 51 | 
            -
            	;;
         | 
| 52 | 
            -
            	*) echo "not ok $T" ;;
         | 
| 53 | 
            -
            	esac
         | 
| 54 | 
            -
            	rm -f $_TEST_RM_LIST
         | 
| 55 | 
            -
            	exit $code
         | 
| 56 | 
            -
            }
         | 
| 57 | 
            -
             | 
| 58 | 
            -
            _TEST_RM_LIST=
         | 
| 59 | 
            -
            _TEST_OK_RM_LIST=
         | 
| 60 | 
            -
            trap _test_on_exit EXIT
         | 
| 61 19 | 
             
            PATH=$PWD/bin:$PATH
         | 
| 62 20 | 
             
            export PATH
         | 
| 63 21 |  | 
| @@ -73,12 +31,13 @@ wait_for_pid () { | |
| 73 31 | 
             
            	done
         | 
| 74 32 | 
             
            }
         | 
| 75 33 |  | 
| 34 | 
            +
            # requires $1 and prints out the value of $2
         | 
| 76 35 | 
             
            require_check () {
         | 
| 77 36 | 
             
            	lib=$1
         | 
| 78 37 | 
             
            	const=$2
         | 
| 79 | 
            -
            	if ! $ | 
| 38 | 
            +
            	if ! $RUBY -r$lib -e "puts $const" >/dev/null 2>&1
         | 
| 80 39 | 
             
            	then
         | 
| 81 | 
            -
            		 | 
| 40 | 
            +
            		t_info "skipping $T since we don't have $lib"
         | 
| 82 41 | 
             
            		exit 0
         | 
| 83 42 | 
             
            	fi
         | 
| 84 43 | 
             
            }
         | 
| @@ -90,15 +49,21 @@ rtmpfiles () { | |
| 90 49 | 
             
            	do
         | 
| 91 50 | 
             
            		name=$id
         | 
| 92 51 | 
             
            		_tmp=$t_pfx.$id
         | 
| 93 | 
            -
            		> $_tmp
         | 
| 94 52 | 
             
            		eval "$id=$_tmp"
         | 
| 95 | 
            -
            		_TEST_OK_RM_LIST="$_TEST_OK_RM_LIST $_tmp"
         | 
| 96 53 |  | 
| 97 54 | 
             
            		case $name in
         | 
| 98 55 | 
             
            		*fifo)
         | 
| 99 56 | 
             
            			rm -f $_tmp
         | 
| 100 57 | 
             
            			mkfifo $_tmp
         | 
| 101 | 
            -
            			 | 
| 58 | 
            +
            			T_RM_LIST="$T_RM_LIST $_tmp"
         | 
| 59 | 
            +
            			;;
         | 
| 60 | 
            +
            		*socket)
         | 
| 61 | 
            +
            			rm -f $_tmp
         | 
| 62 | 
            +
            			T_RM_LIST="$T_RM_LIST $_tmp"
         | 
| 63 | 
            +
            			;;
         | 
| 64 | 
            +
            		*)
         | 
| 65 | 
            +
            			> $_tmp
         | 
| 66 | 
            +
            			T_OK_RM_LIST="$T_OK_RM_LIST $_tmp"
         | 
| 102 67 | 
             
            			;;
         | 
| 103 68 | 
             
            		esac
         | 
| 104 69 | 
             
            	done
         | 
| @@ -124,7 +89,53 @@ check_stderr () { | |
| 124 89 | 
             
            	fi
         | 
| 125 90 | 
             
            }
         | 
| 126 91 |  | 
| 92 | 
            +
            # rainbows_setup [ MODEL [ WORKER_CONNECTIONS ] ]
         | 
| 93 | 
            +
            rainbows_setup () {
         | 
| 94 | 
            +
            	eval $(unused_listen)
         | 
| 95 | 
            +
            	rtmpfiles unicorn_config pid r_err r_out fifo tmp ok
         | 
| 96 | 
            +
            	cat > $unicorn_config <<EOF
         | 
| 97 | 
            +
            listen "$listen"
         | 
| 98 | 
            +
            pid "$pid"
         | 
| 99 | 
            +
            stderr_path "$r_err"
         | 
| 100 | 
            +
            stdout_path "$r_out"
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            # close my-tap-lib.sh FDs
         | 
| 103 | 
            +
            unless ENV['UNICORN_FD']
         | 
| 104 | 
            +
              IO.for_fd(3).close rescue nil
         | 
| 105 | 
            +
              IO.for_fd(4).close rescue nil
         | 
| 106 | 
            +
            end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            before_fork do |server, worker|
         | 
| 109 | 
            +
              # test script will block while reading from $fifo,
         | 
| 110 | 
            +
              # so notify the script on the first worker we spawn
         | 
| 111 | 
            +
              # by opening the FIFO
         | 
| 112 | 
            +
              if worker.nr == 0
         | 
| 113 | 
            +
                File.open("$fifo", "wb").close
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
            end
         | 
| 116 | 
            +
            EOF
         | 
| 117 | 
            +
            	{
         | 
| 118 | 
            +
            		if test $# -ge 1
         | 
| 119 | 
            +
            		then
         | 
| 120 | 
            +
            			echo 'Rainbows! do'
         | 
| 121 | 
            +
            			echo "  use :$1"
         | 
| 122 | 
            +
            			test $# -eq 2 && echo "  worker_connections $2"
         | 
| 123 | 
            +
            			echo end
         | 
| 124 | 
            +
            		else
         | 
| 125 | 
            +
            			echo "Rainbows! { use :$model }"
         | 
| 126 | 
            +
            		fi
         | 
| 127 | 
            +
            	} >> $unicorn_config
         | 
| 128 | 
            +
            }
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            rainbows_wait_start () {
         | 
| 131 | 
            +
            	# "cat $fifo" will block until the before_fork hook is called in
         | 
| 132 | 
            +
            	# the Unicorn config file
         | 
| 133 | 
            +
            	test x = x"$(cat $fifo)"
         | 
| 134 | 
            +
            	rainbows_pid=$(cat $pid)
         | 
| 135 | 
            +
            }
         | 
| 136 | 
            +
             | 
| 127 137 | 
             
            case $model in
         | 
| 128 138 | 
             
            Rev) require_check rev Rev::VERSION ;;
         | 
| 129 139 | 
             
            Revactor) require_check revactor Revactor::VERSION ;;
         | 
| 140 | 
            +
            EventMachine) require_check eventmachine EventMachine::VERSION ;;
         | 
| 130 141 | 
             
            esac
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rainbows
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Rainbows! developers
         | 
| @@ -9,19 +9,9 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2009-10- | 
| 12 | 
            +
            date: 2009-10-27 00:00:00 -07:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 16 | 
            -
              name: rack
         | 
| 17 | 
            -
              type: :runtime
         | 
| 18 | 
            -
              version_requirement: 
         | 
| 19 | 
            -
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 20 | 
            -
                requirements: 
         | 
| 21 | 
            -
                - - ">="
         | 
| 22 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            -
                    version: "0"
         | 
| 24 | 
            -
                version: 
         | 
| 25 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 26 16 | 
             
              name: unicorn
         | 
| 27 17 | 
             
              type: :runtime
         | 
| @@ -30,7 +20,7 @@ dependencies: | |
| 30 20 | 
             
                requirements: 
         | 
| 31 21 | 
             
                - - ~>
         | 
| 32 22 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 33 | 
            -
                    version: 0.93. | 
| 23 | 
            +
                    version: 0.93.4
         | 
| 34 24 | 
             
                version: 
         | 
| 35 25 | 
             
            description: |-
         | 
| 36 26 | 
             
              Rainbows! is a HTTP server for sleepy Rack applications.  It is based on
         | 
| @@ -52,6 +42,8 @@ extra_rdoc_files: | |
| 52 42 | 
             
            - lib/rainbows/base.rb
         | 
| 53 43 | 
             
            - lib/rainbows/const.rb
         | 
| 54 44 | 
             
            - lib/rainbows/dev_fd_response.rb
         | 
| 45 | 
            +
            - lib/rainbows/ev_core.rb
         | 
| 46 | 
            +
            - lib/rainbows/event_machine.rb
         | 
| 55 47 | 
             
            - lib/rainbows/http_response.rb
         | 
| 56 48 | 
             
            - lib/rainbows/http_server.rb
         | 
| 57 49 | 
             
            - lib/rainbows/rev.rb
         | 
| @@ -93,6 +85,8 @@ files: | |
| 93 85 | 
             
            - lib/rainbows/base.rb
         | 
| 94 86 | 
             
            - lib/rainbows/const.rb
         | 
| 95 87 | 
             
            - lib/rainbows/dev_fd_response.rb
         | 
| 88 | 
            +
            - lib/rainbows/ev_core.rb
         | 
| 89 | 
            +
            - lib/rainbows/event_machine.rb
         | 
| 96 90 | 
             
            - lib/rainbows/http_response.rb
         | 
| 97 91 | 
             
            - lib/rainbows/http_server.rb
         | 
| 98 92 | 
             
            - lib/rainbows/rev.rb
         | 
| @@ -109,62 +103,38 @@ files: | |
| 109 103 | 
             
            - t/README
         | 
| 110 104 | 
             
            - t/async-response-no-autochunk.ru
         | 
| 111 105 | 
             
            - t/async-response.ru
         | 
| 106 | 
            +
            - t/async_sinatra.ru
         | 
| 112 107 | 
             
            - t/bin/content-md5-put
         | 
| 113 108 | 
             
            - t/bin/unused_listen
         | 
| 114 109 | 
             
            - t/bin/utee
         | 
| 115 110 | 
             
            - t/content-md5.ru
         | 
| 116 111 | 
             
            - t/env.ru
         | 
| 117 112 | 
             
            - t/large-file-response.ru
         | 
| 118 | 
            -
            - t/ | 
| 119 | 
            -
            - t/lib-async-response.sh
         | 
| 120 | 
            -
            - t/lib-graceful.sh
         | 
| 121 | 
            -
            - t/lib-input-trailer.sh
         | 
| 122 | 
            -
            - t/lib-large-file-response.sh
         | 
| 123 | 
            -
            - t/lib-parser-error.sh
         | 
| 124 | 
            -
            - t/lib-rack-input-hammer.sh
         | 
| 125 | 
            -
            - t/lib-reopen-logs.sh
         | 
| 126 | 
            -
            - t/lib-simple-http.sh
         | 
| 113 | 
            +
            - t/my-tap-lib.sh
         | 
| 127 114 | 
             
            - t/sha1.ru
         | 
| 115 | 
            +
            - t/simple-http_Base.ru
         | 
| 116 | 
            +
            - t/simple-http_EventMachine.ru
         | 
| 117 | 
            +
            - t/simple-http_Rev.ru
         | 
| 118 | 
            +
            - t/simple-http_Revactor.ru
         | 
| 119 | 
            +
            - t/simple-http_ThreadPool.ru
         | 
| 120 | 
            +
            - t/simple-http_ThreadSpawn.ru
         | 
| 128 121 | 
             
            - t/sleep.ru
         | 
| 129 | 
            -
            - t/t0000- | 
| 122 | 
            +
            - t/t0000-simple-http.sh
         | 
| 130 123 | 
             
            - t/t0000.ru
         | 
| 131 | 
            -
            - t/ | 
| 124 | 
            +
            - t/t0001-unix-http.sh
         | 
| 125 | 
            +
            - t/t0002-graceful.sh
         | 
| 126 | 
            +
            - t/t0002-parser-error.sh
         | 
| 127 | 
            +
            - t/t0003-reopen-logs.sh
         | 
| 128 | 
            +
            - t/t0005-large-file-response.sh
         | 
| 129 | 
            +
            - t/t0100-rack-input-hammer.sh
         | 
| 130 | 
            +
            - t/t0101-rack-input-trailer.sh
         | 
| 131 | 
            +
            - t/t0200-async-response.sh
         | 
| 132 | 
            +
            - t/t0201-async-response-no-autochunk.sh
         | 
| 133 | 
            +
            - t/t0300-async_sinatra.sh
         | 
| 132 134 | 
             
            - t/t1000.ru
         | 
| 133 | 
            -
            - t/t1002-thread-pool-graceful.sh
         | 
| 134 | 
            -
            - t/t1003-thread-pool-reopen-logs.sh
         | 
| 135 | 
            -
            - t/t1004-thread-pool-async-response.sh
         | 
| 136 | 
            -
            - t/t1005-thread-pool-large-file-response.sh
         | 
| 137 | 
            -
            - t/t1006-thread-pool-async-response-no-autochunk.sh
         | 
| 138 | 
            -
            - t/t1100-thread-pool-rack-input.sh
         | 
| 139 | 
            -
            - t/t1101-thread-pool-input-trailer.sh
         | 
| 140 | 
            -
            - t/t2000-thread-spawn-basic.sh
         | 
| 141 135 | 
             
            - t/t2000.ru
         | 
| 142 | 
            -
            - t/t2002-thread-spawn-graceful.sh
         | 
| 143 | 
            -
            - t/t2003-thread-spawn-reopen-logs.sh
         | 
| 144 | 
            -
            - t/t2004-thread-spawn-async-response.sh
         | 
| 145 | 
            -
            - t/t2005-thread-spawn-large-file-response.sh
         | 
| 146 | 
            -
            - t/t2006-thread-spawn-async-response-no-autochunk.sh
         | 
| 147 | 
            -
            - t/t2100-thread-spawn-rack-input.sh
         | 
| 148 | 
            -
            - t/t2101-thread-spawn-input-trailer.sh
         | 
| 149 | 
            -
            - t/t3000-revactor-basic.sh
         | 
| 150 136 | 
             
            - t/t3000.ru
         | 
| 151 | 
            -
            - t/t3002-revactor-graceful.sh
         | 
| 152 | 
            -
            - t/t3003-revactor-reopen-logs.sh
         | 
| 153 | 
            -
            - t/t3004-revactor-async-response.sh
         | 
| 154 | 
            -
            - t/t3005-revactor-large-file-response.sh
         | 
| 155 | 
            -
            - t/t3006-revactor-async-response-no-autochunk.sh
         | 
| 156 | 
            -
            - t/t3100-revactor-rack-input.sh
         | 
| 157 | 
            -
            - t/t3101-revactor-rack-input-trailer.sh
         | 
| 158 | 
            -
            - t/t4000-rev-basic.sh
         | 
| 159 137 | 
             
            - t/t4000.ru
         | 
| 160 | 
            -
            - t/t4002-rev-graceful.sh
         | 
| 161 | 
            -
            - t/t4003-rev-parser-error.sh
         | 
| 162 | 
            -
            - t/t4003-rev-reopen-logs.sh
         | 
| 163 | 
            -
            - t/t4004-rev-async-response.sh
         | 
| 164 | 
            -
            - t/t4005-rev-large-file-response.sh
         | 
| 165 | 
            -
            - t/t4006-rev-async-response-no-autochunk.sh
         | 
| 166 | 
            -
            - t/t4100-rev-rack-input.sh
         | 
| 167 | 
            -
            - t/t4101-rev-rack-input-trailer.sh
         | 
| 168 138 | 
             
            - t/t9000-rack-app-pool.sh
         | 
| 169 139 | 
             
            - t/t9000.ru
         | 
| 170 140 | 
             
            - t/test-lib.sh
         | 
    
        data/t/lib-async-response.sh
    DELETED
    
    | @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            CONFIG_RU=${CONFIG_RU-'async-response.ru'}
         | 
| 2 | 
            -
            . ./test-lib.sh
         | 
| 3 | 
            -
            echo "async response for model=$model"
         | 
| 4 | 
            -
            eval $(unused_listen)
         | 
| 5 | 
            -
            rtmpfiles unicorn_config a b c r_err r_out pid curl_err
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            cat > $unicorn_config <<EOF
         | 
| 8 | 
            -
            listen "$listen"
         | 
| 9 | 
            -
            stderr_path "$r_err"
         | 
| 10 | 
            -
            stdout_path "$r_out"
         | 
| 11 | 
            -
            pid "$pid"
         | 
| 12 | 
            -
            Rainbows! { use :$model }
         | 
| 13 | 
            -
            EOF
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            # can't load Rack::Lint here since it'll cause Rev to slurp
         | 
| 16 | 
            -
            rainbows -E none -D $CONFIG_RU -c $unicorn_config
         | 
| 17 | 
            -
            wait_for_pid $pid
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            t0=$(date +%s)
         | 
| 20 | 
            -
            ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $a) &
         | 
| 21 | 
            -
            ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $b) &
         | 
| 22 | 
            -
            ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $c) &
         | 
| 23 | 
            -
            wait
         | 
| 24 | 
            -
            t1=$(date +%s)
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            rainbows_pid=$(cat $pid)
         | 
| 27 | 
            -
            kill -QUIT $rainbows_pid
         | 
| 28 | 
            -
            elapsed=$(( $t1 - $t0 ))
         | 
| 29 | 
            -
            echo "elapsed=$elapsed < 30"
         | 
| 30 | 
            -
            test $elapsed -lt 30
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            dbgcat a
         | 
| 33 | 
            -
            dbgcat b
         | 
| 34 | 
            -
            dbgcat c
         | 
| 35 | 
            -
            dbgcat r_err
         | 
| 36 | 
            -
            dbgcat curl_err
         | 
| 37 | 
            -
            test ! -s $curl_err
         | 
| 38 | 
            -
            check_stderr
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            while kill -0 $rainbows_pid >/dev/null 2>&1
         | 
| 41 | 
            -
            do
         | 
| 42 | 
            -
            	sleep 1
         | 
| 43 | 
            -
            done
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            dbgcat r_err
         | 
    
        data/t/lib-graceful.sh
    DELETED
    
    | @@ -1,40 +0,0 @@ | |
| 1 | 
            -
            . ./test-lib.sh
         | 
| 2 | 
            -
            echo "graceful test for model=$model"
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            eval $(unused_listen)
         | 
| 5 | 
            -
            rtmpfiles unicorn_config curl_out pid r_err r_out fifo
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            cat > $unicorn_config <<EOF
         | 
| 8 | 
            -
            listen "$listen"
         | 
| 9 | 
            -
            stderr_path "$r_err"
         | 
| 10 | 
            -
            stdout_path "$r_out"
         | 
| 11 | 
            -
            pid "$pid"
         | 
| 12 | 
            -
            Rainbows! { use :$model }
         | 
| 13 | 
            -
            EOF
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            rainbows -D sleep.ru -c $unicorn_config
         | 
| 16 | 
            -
            wait_for_pid $pid
         | 
| 17 | 
            -
            rainbows_pid=$(cat $pid)
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            curl -sSfv -T- </dev/null http://$listen/5 > $curl_out 2> $fifo &
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            awk -v rainbows_pid=$rainbows_pid '
         | 
| 22 | 
            -
            { print $0 }
         | 
| 23 | 
            -
            /100 Continue/ {
         | 
| 24 | 
            -
            	print "awk: sending SIGQUIT to", rainbows_pid
         | 
| 25 | 
            -
            	system("kill -QUIT "rainbows_pid)
         | 
| 26 | 
            -
            }' $fifo
         | 
| 27 | 
            -
            wait
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            dbgcat r_err
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            test x"$(wc -l < $curl_out)" = x1
         | 
| 32 | 
            -
            nr=$(sort < $curl_out | uniq | wc -l)
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            test "$nr" -eq 1
         | 
| 35 | 
            -
            test x$(sort < $curl_out | uniq) = xHello
         | 
| 36 | 
            -
            check_stderr
         | 
| 37 | 
            -
            while kill -0 $rainbows_pid >/dev/null 2>&1
         | 
| 38 | 
            -
            do
         | 
| 39 | 
            -
            	sleep 1
         | 
| 40 | 
            -
            done
         |