EVOLUTION-MANAGER
Edit File: network_test.sh
#!/bin/bash # ############################################# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ############################################# LOCAL_HOST=$1 SSH_LOGIN=$2 TESTING_HOST=$3 if [ -z "$3" ];then echo "Usage: $0 LOCAL_HOST_IP REMOTE_SSH_LOGIN REMOTE_HOST_IP" echo "Script requare installed 'iperf' on both local and remote hosts." echo "Also need setting up ssh login without requiring a password. Use for this purpose ssl certificates." exit 0; fi TEST_LOCAL_IPERF=`iperf 2>&1 | grep "Usage: iperf" |wc -l` if [ "1" != "$TEST_LOCAL_IPERF" ];then echo "Script requare installed 'iperf' on local host." exit 0; fi TEST_REMOTE_IPERF=`ssh $SSH_LOGIN@$TESTING_HOST "iperf 2>&1 | grep \"Usage: iperf\" |wc -l"` if [ "1" != "$TEST_REMOTE_IPERF" ];then echo "Script requare installed 'iperf' on remote host." exit 0; fi test_jitter_with_ping (){ ## $1 - size of packets in bites ## $2 - count of send packets COUNT_PACKETS=1000 if [ -z "$1" ]; then ping -c 1000 -f -s $1 $TESTING_HOST 2>&1 >${1}b.out.txt else ping -c $2 -f -s $1 $TESTING_HOST 2>&1 >${1}b.out.txt COUNT_PACKETS=$2 fi MIN=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f1 | cut -d "." -f1` AVG=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f2 | cut -d "." -f1` MAX=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f3 | cut -d "." -f1` let "JITTER=($MAX-$AVG)-($AVG-$MIN)" if [ "$JITTER" -lt "0" ];then let "JITTER=-$JITTER" fi echo "Jitter = $JITTER for $COUNT_PACKETS packets with size $1 bites (ping)" echo "Max latency is $MAX" if [ "$AVG" != "0" ]; then let "JITTERPS=$JITTER*100/$AVG" echo "Jitter = $JITTERPS % from $AVG ms" fi } test_opened_ports_with_iperf (){ ## Test opened ports echo "Start testing opened ports" echo "========================================" PORTS=$1 #"5080 1935 8088" AVAIL_PORTS="" rm server_port_log.txt for i in $PORTS; do #echo "ssh $SSH_LOGIN@$TESTING_HOST \"iperf -s -p $i\"" ssh $SSH_LOGIN@$TESTING_HOST "iperf -s -p $i" >>server_port_log.txt 2>&1 & sleep 2 #echo "telnet -e q $TESTING_HOST $i <telnet_commands.txt" TELNET_OUT=`echo -e "q\nquit"|telnet -e q $TESTING_HOST $i` #echo "ssh $SSH_LOGIN@$TESTING_HOST \"ps -C iperf|cut -d \" \" -f1 | xargs kill -9\"" ssh $SSH_LOGIN@$TESTING_HOST "ps -C iperf|cut -d \" \" -f1 | xargs kill -9" >>server_port_log.txt 2>&1 & PORT_IS_AVAILABLE=`echo "$TELNET_OUT" | grep "Connected to"` if [ "$PORT_IS_AVAILABLE" != "" ];then echo "Port $i available" AVAIL_PORTS="$AVAIL_PORTS $i" else echo "Port $i not available" fi sleep 2 done } test_bandwidth_with_iperf (){ ## Test bandwidth of server echo "Start testing bandwidth of server" echo "========================================" PORT=$1 TIME_TO_TEST=30 NUM_THREADS=10 REPORT_INTERVAL=5 #Download test echo "Start outbound test" #setup server #echo "Starting server..." ssh $SSH_LOGIN@$TESTING_HOST "iperf -s -p $PORT" >server_log.txt 2>&1 & #wait when server started sleep 2 #start test #echo "Start test" iperf -c $TESTING_HOST -p $PORT -i $REPORT_INTERVAL -P $NUM_THREADS -t $TIME_TO_TEST | tee client_log.txt | grep "SUM" #stop server echo "Stop server" ssh $SSH_LOGIN@$TESTING_HOST "ps -C iperf|cut -d \" \" -f1 | xargs kill -9" >>server_log.txt 2>&1 & echo "End outbound test" sleep 2 echo #Upload test #Comment: This we can use any port for testing, I use 12100 PORT=12100 echo "Start inbound test" #setup server #echo "Starting server..." iperf -s -p $PORT >local_server_log.txt 2>&1 & #wait when server started sleep 2 #start test #echo "Start test" ssh $SSH_LOGIN@$TESTING_HOST "iperf -c $LOCAL_HOST -p $PORT -i $REPORT_INTERVAL -P $NUM_THREADS -t $TIME_TO_TEST" | tee remote_client_log.txt | grep "SUM" #stop server echo "Stop server" ps -C iperf | cut -d " " -f1 | xargs kill -9 >local_server_log.txt 2>&1 & echo "End inbound test" } echo "Start testing latency and jitter" echo "========================================" test_jitter_with_ping 1000 100 test_jitter_with_ping 1000 1000 test_jitter_with_ping 10000 1000 #Hard test #test_jitter_with_ping 1024 100000 echo test_opened_ports_with_iperf "5080 1935 8088" #echo "$AVAIL_PORTS" echo test_bandwidth_with_iperf 1935 ## generate file with random content and size 1Mb #dd if=/dev/urandom of=test.log bs=1k count=1024