#!/dev/null :: benchmark / server / http-fast / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-fast "${@}" --processes 1 --threads 1 :: benchmark / server / http-fast / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-fast "${@}" --processes 2 --threads 1 :: benchmark / server / http-fast / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-fast "${@}" --processes 1 --threads 2 :: benchmark / server / http-fast / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-fast "${@}" --processes 2 --threads 2 :: benchmark / server / http-go / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-go "${@}" --processes 1 --threads 1 :: benchmark / server / http-go / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-go "${@}" --processes 2 --threads 1 :: benchmark / server / http-go / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-go "${@}" --processes 1 --threads 2 :: benchmark / server / http-go / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-go "${@}" --processes 2 --threads 2 :: benchmark / server / https-fast / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-fast "${@}" --processes 1 --threads 1 :: benchmark / server / https-fast / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-fast "${@}" --processes 2 --threads 1 :: benchmark / server / https-fast / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-fast "${@}" --processes 1 --threads 2 :: benchmark / server / https-fast / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-fast "${@}" --processes 2 --threads 2 :: benchmark / server / https-go / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-go "${@}" --processes 1 --threads 1 :: benchmark / server / https-go / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-go "${@}" --processes 2 --threads 1 :: benchmark / server / https-go / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-go "${@}" --processes 1 --threads 2 :: benchmark / server / https-go / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-go "${@}" --processes 2 --threads 2 :: benchmark / server / http2-go / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-go "${@}" --processes 1 --threads 1 :: benchmark / server / http2-go / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-go "${@}" --processes 2 --threads 1 :: benchmark / server / http2-go / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-go "${@}" --processes 1 --threads 2 :: benchmark / server / http2-go / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-go "${@}" --processes 2 --threads 2 :: benchmark / server / https-split / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-split "${@}" --processes 1 --threads 1 :: benchmark / server / https-split / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-split "${@}" --processes 2 --threads 1 :: benchmark / server / https-split / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-split "${@}" --processes 1 --threads 2 :: benchmark / server / https-split / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' https-split "${@}" --processes 2 --threads 2 :: benchmark / server / http2-split / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-split "${@}" --processes 1 --threads 1 :: benchmark / server / http2-split / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-split "${@}" --processes 2 --threads 1 :: benchmark / server / http2-split / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-split "${@}" --processes 1 --threads 2 :: benchmark / server / http2-split / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http2-split "${@}" --processes 2 --threads 2 :: benchmark / server / http3-quic / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http3-quic "${@}" --processes 1 --threads 1 :: benchmark / server / http3-quic / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http3-quic "${@}" --processes 1 --threads 2 :: benchmark / server / http-all / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-all "${@}" --processes 1 --threads 1 :: benchmark / server / http-all / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / server' http-all "${@}" --processes 1 --threads 2 :: benchmark / wrk / http / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 16384 --timeout 6s :: benchmark / wrk / http / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 4096 :: benchmark / wrk / http / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 2048 :: benchmark / wrk / http / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 1024 :: benchmark / wrk / http / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 512 :: benchmark / wrk / http / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 256 :: benchmark / wrk / http / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 128 :: benchmark / wrk / http / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 64 :: benchmark / wrk / http / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 32 :: benchmark / wrk / http / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 2 --connections 16 :: benchmark / wrk / http / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 8 :: benchmark / wrk / http / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 4 :: benchmark / wrk / http / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 2 :: benchmark / wrk / http / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / http' "${@}" --threads 1 --connections 1 :: benchmark / wrk / https / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 16384 --timeout 6s :: benchmark / wrk / https / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 4096 :: benchmark / wrk / https / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 2048 :: benchmark / wrk / https / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 1024 :: benchmark / wrk / https / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 512 :: benchmark / wrk / https / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 256 :: benchmark / wrk / https / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 128 :: benchmark / wrk / https / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 64 :: benchmark / wrk / https / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 32 :: benchmark / wrk / https / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 2 --connections 16 :: benchmark / wrk / https / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 8 :: benchmark / wrk / https / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 4 :: benchmark / wrk / https / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 2 :: benchmark / wrk / https / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / wrk / https' "${@}" --threads 1 --connections 1 :: benchmark / h1load / http / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 16384 -w 6000 :: benchmark / h1load / http / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 4096 :: benchmark / h1load / http / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 2048 :: benchmark / h1load / http / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 1024 :: benchmark / h1load / http / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 512 :: benchmark / h1load / http / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 256 :: benchmark / h1load / http / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 128 :: benchmark / h1load / http / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 64 :: benchmark / h1load / http / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 32 :: benchmark / h1load / http / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 2 -c 16 :: benchmark / h1load / http / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 1 -c 8 :: benchmark / h1load / http / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 1 -c 4 :: benchmark / h1load / http / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 1 -c 2 :: benchmark / h1load / http / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / http' "${@}" -t 1 -c 1 :: benchmark / h1load / https / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 16384 -w 6000 :: benchmark / h1load / https / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 4096 :: benchmark / h1load / https / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 2048 :: benchmark / h1load / https / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 1024 :: benchmark / h1load / https / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 512 :: benchmark / h1load / https / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 256 :: benchmark / h1load / https / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 128 :: benchmark / h1load / https / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 64 :: benchmark / h1load / https / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 32 :: benchmark / h1load / https / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 2 -c 16 :: benchmark / h1load / https / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 1 -c 8 :: benchmark / h1load / https / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 1 -c 4 :: benchmark / h1load / https / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 1 -c 2 :: benchmark / h1load / https / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h1load / https' "${@}" -t 1 -c 1 :: benchmark / h2load / https / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16384 --h1 --connection-inactivity-timeout 6s :: benchmark / h2load / https / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 4096 --h1 :: benchmark / h2load / https / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 2048 --h1 :: benchmark / h2load / https / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 1024 --h1 :: benchmark / h2load / https / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 512 --h1 :: benchmark / h2load / https / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 256 --h1 :: benchmark / h2load / https / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 128 --h1 :: benchmark / h2load / https / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 64 --h1 :: benchmark / h2load / https / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 32 --h1 :: benchmark / h2load / https / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 2 --clients 16 --h1 :: benchmark / h2load / https / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 8 --h1 :: benchmark / h2load / https / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 4 --h1 :: benchmark / h2load / https / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 2 --h1 :: benchmark / h2load / https / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / https' "${@}" --threads 1 --clients 1 --h1 :: benchmark / h2load / http2 / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 16384 --connection-inactivity-timeout 6s :: benchmark / h2load / http2 / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 4096 :: benchmark / h2load / http2 / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 2048 :: benchmark / h2load / http2 / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 1024 :: benchmark / h2load / http2 / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 512 :: benchmark / h2load / http2 / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 256 :: benchmark / h2load / http2 / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 128 :: benchmark / h2load / http2 / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 64 :: benchmark / h2load / http2 / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 32 :: benchmark / h2load / http2 / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 2 --clients 16 :: benchmark / h2load / http2 / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 8 :: benchmark / h2load / http2 / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 4 :: benchmark / h2load / http2 / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 2 :: benchmark / h2load / http2 / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http2' "${@}" --threads 1 --clients 1 :: benchmark / h2load / http3 / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 16384 --connection-inactivity-timeout 6s :: benchmark / h2load / http3 / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 4096 :: benchmark / h2load / http3 / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 2048 :: benchmark / h2load / http3 / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 1024 :: benchmark / h2load / http3 / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 512 :: benchmark / h2load / http3 / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 256 :: benchmark / h2load / http3 / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 128 :: benchmark / h2load / http3 / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 64 :: benchmark / h2load / http3 / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 32 :: benchmark / h2load / http3 / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 2 --clients 16 :: benchmark / h2load / http3 / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 8 :: benchmark / h2load / http3 / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 4 :: benchmark / h2load / http3 / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 2 :: benchmark / h2load / http3 / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / h2load / http3' "${@}" --threads 1 --clients 1 :: benchmark / hey / http / 16384 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 16384 -t 6s :: benchmark / hey / http / 4096 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 4096 :: benchmark / hey / http / 2048 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 2048 :: benchmark / hey / http / 1024 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 1024 :: benchmark / hey / http / 512 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 512 :: benchmark / hey / http / 256 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 256 :: benchmark / hey / http / 128 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 128 :: benchmark / hey / http / 64 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 64 :: benchmark / hey / http / 32 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 32 :: benchmark / hey / http / 16 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 2 -c 16 :: benchmark / hey / http / 8 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 8 :: benchmark / hey / http / 4 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 4 :: benchmark / hey / http / 2 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 2 :: benchmark / hey / http / 1 :: exec -- "${ZRUN[@]}" ':: benchmark / hey / http' "${@}" -cpus 1 -c 1 --<< benchmark / server "${ZRUN[@]}" ':: go / build / server / release / quick' test "${#}" -ge 1 _mode="${1}" shift -- 1 _archive=./examples/hello-world.cdb _arguments=() case "${_mode}" in ( http-all ) _arguments+=( --bind 127.9.185.194:8080 --bind-2 127.9.185.194:8081 --bind-tls 127.9.185.194:8443 --bind-tls-2 127.9.185.194:8444 --bind-quic 127.9.185.194:8445 --http3-alt-svc 127.9.185.194:8445 ) ;; ( http-fast ) _arguments+=( --bind 127.9.185.194:8080 ) ;; ( http-go ) _arguments+=( --bind-2 127.9.185.194:8080 ) ;; ( https-fast ) _arguments+=( --bind-tls 127.9.185.194:8443 --http2-disable ) ;; ( https-go ) _arguments+=( --bind-tls-2 127.9.185.194:8443 --http2-disable ) ;; ( http2-go ) _arguments+=( --bind-tls-2 127.9.185.194:8444 --http1-disable ) ;; ( https-split ) _arguments+=( --bind-tls 127.9.185.194:8443 ) ;; ( http2-split ) _arguments+=( --bind-tls 127.9.185.194:8444 ) ;; ( http3-quic ) _arguments+=( --bind-quic 127.9.185.194:8445 --http3-alt-svc 127.9.185.194:8445 ) ;; ( * ) printf -- '[ee] invalid mode `%s`; aborting!\n' "${_mode}" >&2 ;; esac _arguments+=( --archive-mmap --archive-preload --index-paths --index-data-meta # --index-data-content --security-headers-disable # --timeout-disable ) exec -- \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.outputs/binaries/release/kawipiko-server \ --archive "${_archive}" \ "${_arguments[@]}" \ "${@}" \ # !! << benchmark / server / profile / cpu test "${#}" -ge 1 exec -- "${ZRUN[@]}" ':: benchmark / server' \ "${@}" \ --profile-cpu ./.outputs/server-cpu.txt \ # !! << benchmark / server / profile / mem test "${#}" -ge 1 exec -- "${ZRUN[@]}" ':: benchmark / server' \ "${@}" \ --profile-mem ./.outputs/server-mem.txt \ # !! << benchmark / server / profile / cpu / analyze export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server exec -- go tool pprof \ "${@}" \ -- ./.outputs/server-cpu.txt \ # !! << benchmark / server / profile / cpu / analyze / web export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server exec -- go tool pprof \ -http 127.108.221.132:8080 \ -no_browser \ -functions \ -nodefraction 0 \ "${@}" \ -- ./.outputs/server-cpu.txt \ # !! << benchmark / server / profile / cpu / analyze / web-open test "${#}" -eq 0 exec -- x-www 'guest:*' open http://127.108.221.132:8080/ !! << benchmark / server / profile / mem / analyze export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server exec -- go tool pprof \ "${@}" \ -- ./.outputs/server-mem.txt \ # !! << benchmark / server / profile / mem / analyze / web export -- PPROF_BINARY_PATH=./.outputs/binaries/release/kawipiko-server exec -- go tool pprof \ -http 127.226.119.8:8080 \ -no_browser \ -functions \ -nodefraction 0 \ "${@}" \ -- ./.outputs/server-mem.txt \ # !! << benchmark / server / profile / mem / analyze / web-open test "${#}" -eq 0 exec -- x-www 'guest:*' open http://127.226.119.8:8080/ !! :: benchmark / nginx / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / nginx' 1 "${@}" :: benchmark / nginx / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / nginx' 2 "${@}" << benchmark / nginx test "${#}" -ge 1 _count="${1}" shift -- 1 _archive=./examples/hello-world sed \ -r \ -e 's#@\{nginx_root\}#'"${_archive}"'#g' \ -e 's#@\{nginx_bind_http\}#127.9.185.194:8080#g' \ -e 's#@\{nginx_bind_https\}#127.9.185.194:8443#g' \ -e 's#@\{nginx_bind_http2\}#127.9.185.194:8444#g' \ -e 's#@\{nginx_tls_public\}#./tls-public.pem#g' \ -e 's#@\{nginx_tls_private\}#./tls-private.pem#g' \ -e 's#@\{nginx_empty\}#/var/lib/empty#g' \ -e 's#@\{nginx_pid\}#/tmp/nginx.pid#g' \ < ./examples/nginx/nginx.conf \ >| ./examples/nginx/nginx.conf.tmp \ # _arguments=( -c ./examples/nginx/nginx.conf.tmp -e /dev/stderr -p . ) exec -- \ "${ZRUN[@]}" ':: benchmark / execute / multiple' "${_count}" \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.bin/nginx \ "${_arguments[@]}" \ "${@}" \ # !! :: benchmark / dummy / fasthttp / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / fasthttp' 1 1 "${@}" :: benchmark / dummy / fasthttp / 1x2 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / fasthttp' 1 2 "${@}" :: benchmark / dummy / fasthttp / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / fasthttp' 2 1 "${@}" :: benchmark / dummy / fasthttp / 2x2 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / fasthttp' 2 2 "${@}" --<< benchmark / dummy / fasthttp "${ZRUN[@]}" ':: go / build / server-dummy / release / quick' test "${#}" -ge 2 _count="${1}" _threads="${2}" shift -- 2 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / multiple' "${_count}" \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.outputs/binaries/release/kawipiko-server-dummy \ "127.9.185.194:8080" \ "${_threads}" \ "${@}" \ # !! << benchmark / dummy / haproxy / 1x2 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.bin/haproxy \ -db \ -f ./examples/dummy/haproxy-dummy.conf \ "${@}" \ # !! :: benchmark / dummy / nginx / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / nginx' 1 "${@}" :: benchmark / dummy / nginx / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / nginx' 2 "${@}" --<< benchmark / dummy / nginx test "${#}" -ge 1 _count="${1}" shift -- 1 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / multiple' "${_count}" \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.bin/nginx \ -c ./examples/dummy/nginx-dummy.conf \ -e /dev/stderr \ -p . \ "${@}" \ # !! :: benchmark / dummy / nodejs / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / nodejs' 1 "${@}" --<< benchmark / dummy / nodejs test "${#}" -ge 1 _count="${1}" shift -- 1 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / multiple' "${_count}" \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.bin/node16 \ -- \ ./examples/dummy/nodejs-dummy.js \ 127.9.185.194 8080 \ "${@}" \ # !! :: benchmark / dummy / httpterm / 1x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / httpterm' 1 "${@}" :: benchmark / dummy / httpterm / 2x1 :: exec -- "${ZRUN[@]}" ':: benchmark / dummy / httpterm' 2 "${@}" --<< benchmark / dummy / httpterm test "${#}" -ge 1 _count="${1}" shift -- 1 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / multiple' "${_count}" \ "${ZRUN[@]}" ':: benchmark / execute / server' \ noenvironment \ ./.bin/httpterm \ -db \ -L 127.9.185.194:8080 \ "${@}" \ # !! << benchmark / wrk / http exec -- "${ZRUN[@]}" ':: benchmark / wrk' http 127.9.185.194:8080 "${@}" !! << benchmark / wrk / https exec -- "${ZRUN[@]}" ':: benchmark / wrk' https 127.9.185.194:8443 "${@}" !! --<< benchmark / wrk test "${#}" -ge 2 _url_base="${1}://${2}" shift -- 2 if test "${#}" -ge 1 ; then if test "${1:0:1}" != '-' ; then _path="${1}" _path="${_path#/}" shift -- 1 else _path='' fi else _path='' fi exec -- \ "${ZRUN[@]}" ':: benchmark / execute / client' \ "${ZRUN[@]}" ':: tools / wrk' \ "${@}" \ -- \ "${_url_base}/${_path}" \ # !! << benchmark / wrk / with-paths / http exec -- "${ZRUN[@]}" ':: benchmark / wrk / with-paths' http 127.9.185.194:8080 "${@}" !! << benchmark / wrk / with-paths / https exec -- "${ZRUN[@]}" ':: benchmark / wrk / with-paths' https 127.9.185.194:8443 "${@}" !! --<< benchmark / wrk / with-paths test "${#}" -ge 2 _url_base="${1}://${2}" shift -- 2 test "${#}" -ge 1 _paths="${1}" shift -- 1 exec -- \ "${ZRUN[@]}" ':: benchmark / execute / client' \ "${ZRUN[@]}" ':: tools / wrk' \ "${@}" \ --script ../kawipiko-examples/sources/wrk-paths-from-file.lua \ -- \ "${_url_base}" \ "${_paths}" \ # !! << benchmark / h1load / http exec -- "${ZRUN[@]}" ':: benchmark / h1load' http 127.9.185.194:8080 "${@}" !! << benchmark / h1load / https exec -- "${ZRUN[@]}" ':: benchmark / h1load' https 127.9.185.194:8443 "${@}" !! --<< benchmark / h1load test "${#}" -ge 2 _url_base="${1}://${2}" shift -- 2 if test "${#}" -ge 1 ; then if test "${1:0:1}" != '-' ; then _path="${1}" _path="${_path#/}" shift -- 1 else _path='' fi else _path='' fi exec -- \ "${ZRUN[@]}" ':: benchmark / execute / client' \ "${ZRUN[@]}" ':: tools / h1load' \ "${@}" \ "${_url_base}/${_path}" \ # !! << benchmark / h2load / https exec -- "${ZRUN[@]}" ':: benchmark / h2load' https 127.9.185.194:8443 "${@}" --npn-list=http/1.1 !! << benchmark / h2load / http2 exec -- "${ZRUN[@]}" ':: benchmark / h2load' https 127.9.185.194:8444 "${@}" --npn-list=h2 !! << benchmark / h2load / http3 exec -- "${ZRUN[@]}" ':: benchmark / h2load' https 127.9.185.194:8445 "${@}" --npn-list=h3 !! --<< benchmark / h2load test "${#}" -ge 2 _url_base="${1}://${2}" shift -- 2 if test "${#}" -ge 1 ; then if test "${1:0:1}" != '-' ; then _path="${1}" _path="${_path#/}" shift -- 1 else _path='' fi else _path='' fi exec -- \ "${ZRUN[@]}" ':: benchmark / execute / client' \ "${ZRUN[@]}" ':: tools / h2load' \ "${@}" \ -- \ "${_url_base}/${_path}" \ # !! << benchmark / hey / http exec -- "${ZRUN[@]}" ':: benchmark / hey' http 127.9.185.194:8080 "${@}" !! << benchmark / hey / https exec -- "${ZRUN[@]}" ':: benchmark / hey' https 127.9.185.194:8443 "${@}" !! --<< benchmark / hey test "${#}" -ge 2 _url_base="${1}://${2}" shift -- 2 if test "${#}" -ge 1 ; then if test "${1:0:1}" != '-' ; then _path="${1}" _path="${_path#/}" shift -- 1 else _path='' fi else _path='' fi exec -- \ "${ZRUN[@]}" ':: benchmark / execute / client' \ "${ZRUN[@]}" ':: tools / hey' \ "${@}" \ -- \ "${_url_base}/${_path}" \ # !! --<< benchmark / execute / server test "${#}" -ge 1 _nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )" if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then exec -- nodaemon "${ZRUN[@]}" ':: benchmark / execute / server' "${@}" fi _wrapper=() if test "${1}" == noenvironment ; then _wrapper+=( env -i -- ) shift -- 1 test "${#}" -ge 1 fi if test "${1}" == "${ZRUN_EXECUTABLE}" ; then test "${#}" -ge 1 _command=( "${@:2}" ) else _command=( "${@}" ) fi printf -- '\n[xx] >> %s\n\n' "${_command[*]@Q}" >&2 exec -- \ sudo -u root -n -E -P -- \ taskset -c 0,1 \ nice -n -19 -- \ ionice -c 2 -n 0 -- \ chrt -r 10 \ prlimit -n262144 -- \ sudo -u "${USER}" -n -E -P -- \ "${_wrapper[@]}" \ "${@}" \ # !! --<< benchmark / execute / client test "${#}" -ge 1 _nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )" if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then exec -- nodaemon "${ZRUN[@]}" ':: benchmark / execute / client' "${@}" fi _wrapper=() if test "${1}" == noenvironment ; then _wrapper+=( env -i -- ) shift -- 1 test "${#}" -ge 1 fi if test "${1}" == "${ZRUN_EXECUTABLE}" ; then test "${#}" -ge 1 _command=( "${@:2}" ) else _command=( "${@}" ) fi printf -- '\n[xx] >> %s\n\n' "${_command[*]@Q}" >&2 exec -- \ sudo -u root -n -E -P -- \ taskset -c 2,3 \ nice -n -19 -- \ ionice -c 2 -n 0 -- \ chrt -r 10 \ prlimit -n262144 -- \ sudo -u "${USER}" -n -E -P -- \ "${_wrapper[@]}" \ "${@}" \ # !! --<< benchmark / execute / multiple test "${#}" -ge 2 _nodaemon="$( exec -- readlink -e -- "$( type -P -- nodaemon )" )" if test ! "/proc/${PPID}/exe" -ef "${_nodaemon}" ; then exec -- nodaemon "${ZRUN[@]}" ':: benchmark / execute / multiple' "${@}" fi _count="$( printf -- '%d' "${1}" )" shift -- 1 if test "${_count}" -le 1 ; then exec -- "${@}" fi _pids=() for (( _index = 1 ; _index <= _count ; _index += 1 )) ; do ( sleep -- "$(( _index - 1 ))s" || true ; exec -- "${@}" ) & _pids+=( "${!}" ) done ( trap 'kill -- "${_pids[@]}" 2> /dev/null || true' SIGINT SIGTERM SIGQUIT if ! sleep -- "$(( _count ))s" ; then kill -- "${_pids[@]}" 2> /dev/null || true exit -- 0 fi printf -- '\n[--]\n\n' >&2 while true ; do if ! kill -s 0 -- "${_pids[@]}" 2> /dev/null ; then break fi if ! sleep -- 6s ; then break fi done kill -- "${_pids[@]}" 2> /dev/null || true ) & exit -- 0 !!