mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-05 19:30:48 +02:00
5f755f6bd5
Correct the logic for checking if the client and server examples are compiled in the test scripts. The previous logic was inverted, causing the tests to always skip if the examples *were* compiled.
131 lines
3.3 KiB
Bash
Executable File
131 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#benchmark.test
|
|
|
|
[ ! -x ./examples/client/client ] && printf '\n\n%s\n' "Client doesn't exist" \
|
|
&& exit 1
|
|
|
|
if ./examples/client/client -? 2>&1 | grep "Client not compiled in!" ; then
|
|
echo 'skipping benchmark.test because client not compiled in.' 1>&2
|
|
exit 77
|
|
fi
|
|
|
|
if ./examples/server/server -? 2>&1 | grep "Server not compiled in!" ; then
|
|
echo 'skipping benchmark.test because server not compiled in.' 1>&2
|
|
exit 77
|
|
fi
|
|
|
|
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
|