123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #!/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
|