mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-29 23:51:01 +01:00 
			
		
		
		
	When calling the 'basename' command, the argument ${0} is enclosed in
quotation marks.  This is necessary if the path of the executable script
(contained in that argument) has "non-standard" elements, such as space
and the like.
Also, in the script 'test-speed.sh' the function sh_exit() has been added
for easier printing of messages at the end of execution.
This patch must be backported as far as 2.4.
		
	
			
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
|       _ARG_CFG="${1}"
 | |
|       _ARG_DIR="${2:-${1}}"
 | |
|       _LOG_DIR="_logs"
 | |
| _HTTPD_PIDFILE="${_LOG_DIR}/thttpd.pid"
 | |
|     _USAGE_MSG="usage: $(basename "${0}") cfg [dir]"
 | |
| 
 | |
| 
 | |
| sh_exit ()
 | |
| {
 | |
| 	test -z "${2}" && {
 | |
| 		echo
 | |
| 		echo "Script killed!"
 | |
| 	}
 | |
| 
 | |
| 	test -n "${1}" && {
 | |
| 		echo
 | |
| 		echo "${1}"
 | |
| 		echo
 | |
| 	}
 | |
| 
 | |
| 	exit ${2:-64}
 | |
| }
 | |
| 
 | |
| httpd_run ()
 | |
| {
 | |
| 
 | |
| 	test -e "${_HTTPD_PIDFILE}" && return
 | |
| 
 | |
| 	thttpd -p 8000 -d . -nos -nov -l /dev/null -i "${_HTTPD_PIDFILE}"
 | |
| }
 | |
| 
 | |
| httpd_stop ()
 | |
| {
 | |
| 	test -e "${_HTTPD_PIDFILE}" || return
 | |
| 
 | |
| 	kill -TERM "$(cat ${_HTTPD_PIDFILE})"
 | |
| 	rm "${_HTTPD_PIDFILE}"
 | |
| }
 | |
| 
 | |
| haproxy_run ()
 | |
| {
 | |
| 	_arg_ratio="${1}"
 | |
| 	_var_sed_ot=
 | |
| 	_var_sed_haproxy=
 | |
| 
 | |
| 	if test "${_arg_ratio}" = "disabled"; then
 | |
| 		_var_sed_ot="s/no \(option disabled\)/\1/"
 | |
| 	elif test "${_arg_ratio}" = "off"; then
 | |
| 		_var_sed_haproxy="s/^\(.* filter opentracing .*\)/#\1/g; s/^\(.* ot-group .*\)/#\1/g"
 | |
| 	else
 | |
| 		_var_sed_ot="s/\(rate-limit\) 100.0/\1 ${_arg_ratio}/"
 | |
| 	fi
 | |
| 
 | |
| 	sed "${_var_sed_haproxy}" "${_ARG_DIR}/haproxy.cfg.in" > "${_ARG_DIR}/haproxy.cfg"
 | |
| 	sed "${_var_sed_ot}"      "${_ARG_DIR}/ot.cfg.in" > "${_ARG_DIR}/ot.cfg"
 | |
| 
 | |
| 	if test "${_ARG_DIR}" = "fe"; then
 | |
| 		if test "${_arg_ratio}" = "disabled" -o "${_arg_ratio}" = "off"; then
 | |
| 			sed "${_var_sed_haproxy}" "be/haproxy.cfg.in" > "be/haproxy.cfg"
 | |
| 			sed "${_var_sed_ot}"      "be/ot.cfg.in" > "be/ot.cfg"
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	./run-${_ARG_CFG}.sh &
 | |
| 	sleep 5
 | |
| }
 | |
| 
 | |
| wrk_run ()
 | |
| {
 | |
| 	_arg_ratio="${1}"
 | |
| 
 | |
| 	echo "--- rate-limit ${_arg_ratio} --------------------------------------------------"
 | |
| 	wrk -c8 -d300 -t8 --latency http://localhost:10080/index.html
 | |
| 	echo "----------------------------------------------------------------------"
 | |
| 	echo
 | |
| 
 | |
| 	sleep 10
 | |
| }
 | |
| 
 | |
| 
 | |
| command -v thttpd >/dev/null 2>&1 || sh_exit "thttpd: command not found" 5
 | |
| command -v wrk >/dev/null 2>&1    || sh_exit "wrk: command not found" 6
 | |
| 
 | |
| mkdir -p "${_LOG_DIR}" || sh_exit "${_LOG_DIR}: Cannot create log directory" 1
 | |
| 
 | |
| if test "${_ARG_CFG}" = "all"; then
 | |
| 	"${0}" fe-be fe > "${_LOG_DIR}/README-speed-fe-be"
 | |
| 	"${0}" sa sa    > "${_LOG_DIR}/README-speed-sa"
 | |
| 	"${0}" cmp cmp  > "${_LOG_DIR}/README-speed-cmp"
 | |
| 	"${0}" ctx ctx  > "${_LOG_DIR}/README-speed-ctx"
 | |
| 	exit 0
 | |
| fi
 | |
| 
 | |
| test -z "${_ARG_CFG}" -o -z "${_ARG_DIR}" && sh_exit "${_USAGE_MSG}" 4
 | |
| test -f "run-${_ARG_CFG}.sh"              || sh_exit "run-${_ARG_CFG}.sh: No such configuration script" 2
 | |
| test -d "${_ARG_DIR}"                     || sh_exit "${_ARG_DIR}: No such directory" 3
 | |
| 
 | |
| test -e "${_ARG_DIR}/haproxy.cfg.in" || cp -af "${_ARG_DIR}/haproxy.cfg" "${_ARG_DIR}/haproxy.cfg.in"
 | |
| test -e "${_ARG_DIR}/ot.cfg.in"      || cp -af "${_ARG_DIR}/ot.cfg" "${_ARG_DIR}/ot.cfg.in"
 | |
| if test "${_ARG_DIR}" = "fe"; then
 | |
| 	test -e "be/haproxy.cfg.in" || cp -af "be/haproxy.cfg" "be/haproxy.cfg.in"
 | |
| 	test -e "be/ot.cfg.in"      || cp -af "be/ot.cfg" "be/ot.cfg.in"
 | |
| fi
 | |
| 
 | |
| httpd_run
 | |
| 
 | |
| for _var_ratio in 100.0 50.0 10.0 2.5 0.0 disabled off; do
 | |
| 	haproxy_run "${_var_ratio}"
 | |
| 	wrk_run "${_var_ratio}"
 | |
| 
 | |
| 	pkill --signal SIGUSR1 haproxy
 | |
| 	wait
 | |
| done
 | |
| 
 | |
| httpd_stop
 |