IXWebSocket/ws/test_ws.sh

85 lines
2.2 KiB
Bash
Raw Normal View History

#!/bin/bash
2019-03-14 22:37:43 +01:00
2019-03-19 06:00:08 +01:00
# Handle Ctrl-C by killing all sub-processing AND exiting
trap cleanup_and_exit INT
2019-03-19 06:00:08 +01:00
function cleanup_and_exit {
local exit_code=${1:-1}
echo "cleaning up..."
echo
kill `cat /tmp/ws_test/pidfile.transfer` &>/dev/null
kill `cat /tmp/ws_test/pidfile.receive` &>/dev/null
kill `cat /tmp/ws_test/pidfile.send` &>/dev/null
exit ${exit_code}
2019-03-19 06:00:08 +01:00
}
WITH_TLS=${WITH_TLS:-0}
BLOCKS=${BLOCKS:-20000}
2019-03-14 22:37:43 +01:00
rm -rf /tmp/ws_test
mkdir -p /tmp/ws_test
client_tls=''
server_tls=''
protocol='ws://'
delay='--delay 10'
if [ "$WITH_TLS" == "1" ]; then
certs="/tmp/ws_test/certs"
./generate_certs.sh "${certs}"
client_tls="--cert-file ${certs}/trusted-client-crt.pem"
client_tls="${client_tls} --key-file ${certs}/trusted-client-key.pem"
client_tls="${client_tls} --ca-file ${certs}/trusted-ca-crt.pem"
server_tls="--cert-file ${certs}/trusted-server-crt.pem"
server_tls="${server_tls} --key-file ${certs}/trusted-server-key.pem"
server_tls="${server_tls} --ca-file ${certs}/trusted-ca-crt.pem"
server_tls="${server_tls} --tls"
protocol='wss://'
delay=''
fi
2019-03-14 22:37:43 +01:00
# Start a transport server
cd /tmp/ws_test
ws transfer --port 8090 ${server_tls} --pidfile /tmp/ws_test/pidfile.transfer &
2019-03-14 22:37:43 +01:00
# Wait until the transfer server is up
2019-03-14 22:37:43 +01:00
while true
do
nc -zv 127.0.0.1 8090 && {
echo "Transfer server up and running"
break
}
echo "sleep ... wait for transfer server"
2019-03-14 22:37:43 +01:00
sleep 0.1
done
# Start a receiver
mkdir -p /tmp/ws_test/receive
cd /tmp/ws_test/receive
ws receive "${protocol}127.0.0.1:8090" ${delay} --pidfile /tmp/ws_test/pidfile.receive ${client_tls} &
2019-03-14 22:37:43 +01:00
mkdir -p /tmp/ws_test/send
2019-03-14 22:37:43 +01:00
cd /tmp/ws_test/send
dd if=/dev/urandom of=/tmp/ws_test/send/20M_file count=$BLOCKS bs=1024
2019-03-14 22:37:43 +01:00
# Start the sender job
ws send ${client_tls} --pidfile /tmp/ws_test/pidfile.send "${protocol}127.0.0.1:8090" /tmp/ws_test/send/20M_file
2019-03-14 22:37:43 +01:00
# Wait until the file has been written to disk
while true
do
if test -f /tmp/ws_test/receive/20M_file ; then
2019-03-14 22:37:43 +01:00
echo "Received file does exists, exiting loop"
break
fi
echo "sleep ... wait for output file"
2019-03-14 22:37:43 +01:00
sleep 0.1
done
cksum /tmp/ws_test/send/20M_file
cksum /tmp/ws_test/receive/20M_file
2019-03-14 22:37:43 +01:00
# Give some time to ws receive to terminate
sleep 2
# Cleanup
cleanup_and_exit 0