118 lines
2.9 KiB
Text
118 lines
2.9 KiB
Text
|
#!/bin/sh
|
||
|
|
||
|
#benchmark.test
|
||
|
|
||
|
if [ "$#" -lt 2 ]; then
|
||
|
echo "Usage: $0 [mode] [num] [clientargs] [serverargs]" >&2
|
||
|
echo " [mode]: 1=Connection Rate (TPS), 2=Throughput Bytes" >&2
|
||
|
echo " [num]: Mode 1=Connection Count, Mode 2=Bytes to TX/RX" >&2
|
||
|
echo " [clientargs]: Passed to client (see \"./example/client/client -?\" for help)" >&2
|
||
|
echo " Example: Use different cipher suite: \"-l DHE-RSA-AES256-SHA\"" >&2
|
||
|
echo " [serverargs]: Passed to server (see \"./example/server/server -?\" for help)" >&2
|
||
|
echo " Example: Disable client certificate check: \"-d\"" >&2
|
||
|
echo "Note: If additional client or server args contains spaces wrap with double quotes" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Use unique benchmark port so it won't conflict with any other tests
|
||
|
bench_port=11113
|
||
|
no_pid=-1
|
||
|
server_pid=$no_pid
|
||
|
counter=0
|
||
|
client_result=-1
|
||
|
|
||
|
remove_ready_file() {
|
||
|
if test -e /tmp/wolfssl_server_ready; then
|
||
|
echo "removing existing server_ready file"
|
||
|
rm /tmp/wolfssl_server_ready
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
do_cleanup() {
|
||
|
echo "in cleanup"
|
||
|
|
||
|
if [ $server_pid != $no_pid ]
|
||
|
then
|
||
|
echo "killing server"
|
||
|
kill -9 $server_pid
|
||
|
fi
|
||
|
remove_ready_file
|
||
|
}
|
||
|
|
||
|
do_trap() {
|
||
|
echo "got trap"
|
||
|
do_cleanup
|
||
|
exit -1
|
||
|
}
|
||
|
|
||
|
trap do_trap INT TERM
|
||
|
|
||
|
# Start server in loop continuous mode (-L) with echo data (-e) enabled and non-blocking (-N)
|
||
|
echo "\nStarting example server for benchmark test"
|
||
|
remove_ready_file
|
||
|
# benchmark connections
|
||
|
if [ $1 -eq 1 ]
|
||
|
then
|
||
|
# start server in loop mode with port
|
||
|
./examples/server/server -i -p $bench_port $4 &
|
||
|
server_pid=$!
|
||
|
fi
|
||
|
|
||
|
# benchmark throughput
|
||
|
if [ $1 -eq 2 ]
|
||
|
then
|
||
|
# start server in loop mode, non-blocking, benchmark throughput with port
|
||
|
./examples/server/server -i -N -B $2 -p $bench_port $4 &
|
||
|
server_pid=$!
|
||
|
fi
|
||
|
|
||
|
# NOTE: We sleep for 2 seconds below. If timing the execution of this script
|
||
|
# with "time", bear in mind that those 2 seconds will be reflected in
|
||
|
# the "real" time.
|
||
|
echo "Waiting for server_ready file..."
|
||
|
while [ ! -s /tmp/wolfssl_server_ready -a "$counter" -lt 20 ]; do
|
||
|
sleep 0.1
|
||
|
counter=$((counter+ 1))
|
||
|
done
|
||
|
|
||
|
# benchmark connections
|
||
|
if [ $1 -eq 1 ]
|
||
|
then
|
||
|
echo "Starting example client to benchmark connection average time"
|
||
|
# start client to benchmark average time for each connection using port
|
||
|
./examples/client/client -b $2 -p $bench_port $3
|
||
|
client_result=$?
|
||
|
fi
|
||
|
|
||
|
# benchmark throughput
|
||
|
if [ $1 -eq 2 ]
|
||
|
then
|
||
|
echo "Starting example client to benchmark throughput"
|
||
|
# start client in non-blocking mode, benchmark throughput using port
|
||
|
./examples/client/client -N -B $2 -p $bench_port $3
|
||
|
client_result=$?
|
||
|
fi
|
||
|
|
||
|
if [ $client_result != 0 ]
|
||
|
then
|
||
|
echo "Client failed!"
|
||
|
do_cleanup
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# End server
|
||
|
kill -6 $server_pid
|
||
|
server_result=$?
|
||
|
remove_ready_file
|
||
|
|
||
|
if [ $server_result != 0 ]
|
||
|
then
|
||
|
echo "Server failed!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "\nSuccess!\n"
|
||
|
|
||
|
exit 0
|