forked from wolfSSL/wolfssl
		
	
		
			
				
	
	
		
			116 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 exisitng 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
 | 
						|
 | 
						|
 | 
						|
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
 |