shellinabox/stresstest.sh

45 lines
1.2 KiB
Bash
Raw Normal View History

#!/bin/bash -e
PORT=4201
PIDFILE=stresstest.pid
rm -f "${PIDFILE}"
trap '[ -r "${PIDFILE}" ] && kill "$(cat "${PIDFILE}")"; rm -f "${PIDFILE}"' \
EXIT INT TERM QUIT HUP
./shellinaboxd -p "${PORT}" -s "/:$(id -u):$(id -g):${PWD}:/bin/bash -c \
'while read i; do [ -z "${i}" ] && break; echo \" $i\"; done'" \
--background="${PIDFILE}"
session() {
local data="$(wget -O- --post-data='' --quiet "http://localhost:${PORT}/")"
local session="${data##*\"session\":\"}"
session="${session%%\"*}"
while read -r i; do
local keys="$(echo -n "${i}" | od -tx1 -An -w1000)"
wget -O/dev/null --post-data="session=${session}&keys=${keys// /}" \
--quiet "http://localhost:${PORT}/"
kill -0 "$(cat "${PIDFILE}")" || break
[ -z "$i" ] && break
data="$(wget -O- --post-data="session=${session}" \
--quiet "http://localhost:${PORT}/")"
data=${data##*\"data\":\"}
data=${data%%\"*}
echo "${data}"
done <<'EOF'
Hello world
This is a test
OK, that's it for now
EOF
}
pids=""
for i in `seq 100`; do
session &
pids="${pids} $!"
sleep 0.02
kill -0 "$(cat "${PIDFILE}")" || break
done
wait $pids >&/dev/null