From 95a71eeef66d6d1cd179cbd6ee02272fd40a4bf7 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux <raphael.defosseux@eurecom.fr> Date: Wed, 10 Apr 2019 16:41:39 +0200 Subject: [PATCH] CI: adding iperf tests to L2-nFAPI sim Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr> --- ci-scripts/runTestOnVM.sh | 165 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 157 insertions(+), 8 deletions(-) diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 34ee1f36f7a..2d51c9a83e6 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -154,7 +154,7 @@ function ping_ue_ip_addr { echo "echo \"ping -c 20 $3\"" >> $1 if [ $LOC_FG_OR_BG -eq 0 ] then - echo "ping -c 20 $UE_IP_ADDR >> $4" >> $1 + echo "ping -c 20 $UE_IP_ADDR >> $4 2>&1" >> $1 echo "tail -3 $4" >> $1 else echo "nohup ping -c 20 $UE_IP_ADDR >> $4 &" >> $1 @@ -170,7 +170,7 @@ function ping_epc_ip_addr { echo "echo \"ping -I oaitun_ue${LOC_IF_ID} -c 20 $3\"" >> $1 if [ $LOC_FG_OR_BG -eq 0 ] then - echo "ping -I oaitun_ue${LOC_IF_ID} -c 20 $3 >> $4" >> $1 + echo "ping -I oaitun_ue${LOC_IF_ID} -c 20 $3 >> $4 2>&1" >> $1 echo "tail -3 $4" >> $1 else echo "nohup ping -I oaitun_ue${LOC_IF_ID} -c 20 $3 >> $4 &" >> $1 @@ -185,7 +185,7 @@ function ping_enb_ip_addr { echo "echo \"ping -I oaitun_enb1 -c 20 $3\"" >> $1 if [ $LOC_FG_OR_BG -eq 0 ] then - echo "ping -I oaitun_enb1 -c 20 $3 >> $4" >> $1 + echo "ping -I oaitun_enb1 -c 20 $3 >> $4 2>&1" >> $1 echo "tail -3 $4" >> $1 else echo "nohup ping -I oaitun_enb1 -c 20 $3 >> $4 &" >> $1 @@ -238,7 +238,8 @@ function iperf_dl { echo "echo \"iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\"" > $3 echo "echo \"COMMAND IS: iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\" > ${BASE_LOG_FILE}_client.txt" > $3 - echo "iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 | tee -a ${BASE_LOG_FILE}_client.txt" >> $3 + echo "iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 >> ${BASE_LOG_FILE}_client.txt" >> $3 + echo "tail -3 ${BASE_LOG_FILE}_client.txt | grep -v grams" >> $3 ssh -T -o StrictHostKeyChecking=no ubuntu@$4 < $3 rm -f $3 @@ -258,7 +259,8 @@ function iperf_ul { echo "echo \"iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\"" > $1 echo "echo \"COMMAND IS: iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\" > /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt" > $1 - echo "iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 | tee -a /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt" >> $1 + echo "iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 >> /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt" >> $1 + echo "tail -3 /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt | grep -v grams" >> $1 ssh -T -o StrictHostKeyChecking=no ubuntu@$2 < $1 rm -f $1 @@ -267,6 +269,54 @@ function iperf_ul { rm $3 } +# In DL: iperf server should be on UE side +# -B oaitun_ue{j}-IP-Addr +# iperf client should be on EPC (S1) or eNB (noS1) side +# -c oaitun_ue{j}-IP-Addr -B oaitun_enb1-IP-Addr (in noS1) +# In UL: iperf server should be on EPC (S1) or eNB (noS1) side +# -B oaitun_enb1-IP-Addr +# iperf client should be on UE side +# -c oaitun_enb1-IP-Addr -B oaitun_ue{j}-IP-Addr (in noS1) +function generic_iperf { + local LOC_ISERVER_CMD=$1 + local LOC_ISERVER_IP=$2 + local LOC_ISERVER_BOND_IP=$3 + local LOC_ICLIENT_CMD=$4 + local LOC_ICLIENT_IP=$5 + local LOC_ICLIENT_BOND_IP=$6 + local LOC_REQ_BANDWIDTH=$7 + local LOC_BASE_LOG_FILE=$8 + local LOC_PORT_ID=$[$9+5001] + local LOC_FG_OR_BG=${10} + # Starting Iperf Server + echo "iperf -B ${LOC_ISERVER_BOND_IP} -u -s -i 1 -fm -p ${LOC_PORT_ID}" + echo "nohup iperf -B ${LOC_ISERVER_BOND_IP} -u -s -i 1 -fm -p ${LOC_PORT_ID} > ${LOC_BASE_LOG_FILE}_server.txt 2>&1 &" > ${LOC_ISERVER_CMD} + ssh -T -o StrictHostKeyChecking=no ubuntu@${LOC_ISERVER_IP} < ${LOC_ISERVER_CMD} + rm ${LOC_ISERVER_CMD} + + # Starting Iperf Client + echo "iperf -c ${LOC_ISERVER_BOND_IP} -u -t 30 -b ${LOC_REQ_BANDWIDTH}M -i 1 -fm -B ${LOC_ICLIENT_BOND_IP} -p ${LOC_PORT_ID}" + echo "echo \"COMMAND IS: iperf -c ${LOC_ISERVER_BOND_IP} -u -t 30 -b ${LOC_REQ_BANDWIDTH}M -i 1 -fm -B ${LOC_ICLIENT_BOND_IP} -p ${LOC_PORT_ID}\" > ${LOC_BASE_LOG_FILE}_client.txt" > ${LOC_ICLIENT_CMD} + if [ $LOC_FG_OR_BG -eq 0 ] + then + echo "iperf -c ${LOC_ISERVER_BOND_IP} -u -t 30 -b ${LOC_REQ_BANDWIDTH}M -i 1 -fm -B ${LOC_ICLIENT_BOND_IP} -p ${LOC_PORT_ID} >> ${LOC_BASE_LOG_FILE}_client.txt 2>&1" >> ${LOC_ICLIENT_CMD} + echo "tail -3 ${LOC_BASE_LOG_FILE}_client.txt | grep -v datagram" >> ${LOC_ICLIENT_CMD} + else + echo "nohup iperf -c ${LOC_ISERVER_BOND_IP} -u -t 30 -b ${LOC_REQ_BANDWIDTH}M -i 1 -fm -B ${LOC_ICLIENT_BOND_IP} -p ${LOC_PORT_ID} >> ${LOC_BASE_LOG_FILE}_client.txt 2>&1 &" >> ${LOC_ICLIENT_CMD} + fi + ssh -T -o StrictHostKeyChecking=no ubuntu@${LOC_ICLIENT_IP} < ${LOC_ICLIENT_CMD} + rm -f ${LOC_ICLIENT_CMD} + + # Stopping Iperf Server + if [ $LOC_FG_OR_BG -eq 0 ] + then + echo "killall --signal SIGKILL iperf" + echo "killall --signal SIGKILL iperf" > ${LOC_ISERVER_CMD} + ssh -T -o StrictHostKeyChecking=no ubuntu@${LOC_ISERVER_IP} < ${LOC_ISERVER_CMD} + rm ${LOC_ISERVER_CMD} + fi +} + function check_iperf { local LOC_BASE_LOG=$1 local LOC_REQ_BW=$2 @@ -281,6 +331,7 @@ function check_iperf { if [ $FILE_COMPLETE -eq 0 ] then IPERF_STATUS=-1 + echo "File Report not found" else local EFFECTIVE_BANDWIDTH=`tail -n3 ${LOC_BASE_LOG}_client.txt | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"` if [ $LOC_IS_DL -eq 1 ] && [ $LOC_IS_BASIC_SIM -eq 1 ] @@ -289,6 +340,7 @@ function check_iperf { then echo "got requested DL bandwidth: $EFFECTIVE_BANDWIDTH" else + echo "got LESS than requested DL bandwidth: $EFFECTIVE_BANDWIDTH" IPERF_STATUS=-1 fi else @@ -301,12 +353,14 @@ function check_iperf { echo "got requested UL bandwidth: $EFFECTIVE_BANDWIDTH" fi else + echo "not basic-sim got LESS than requested DL bandwidth: $EFFECTIVE_BANDWIDTH" IPERF_STATUS=-1 fi fi fi else IPERF_STATUS=-1 + echo "File not found" fi } @@ -1585,7 +1639,7 @@ function run_test_on_vm { get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR 1 echo "############################################################" - echo "${CN_CONFIG} : Pinging the EPC from UE" + echo "${CN_CONFIG} : Pinging the EPC from UE(s)" echo "############################################################" PING_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_ping_epc.log ping_epc_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $REAL_EPC_IP_ADDR $PING_LOG_FILE 1 0 @@ -1595,7 +1649,7 @@ function run_test_on_vm { get_enb_noS1_ip_addr $ENB_VM_CMDS $ENB_VM_IP_ADDR echo "############################################################" - echo "${CN_CONFIG} : Pinging the eNB from UE" + echo "${CN_CONFIG} : Pinging the eNB from UE(s)" echo "############################################################" echo " --- Sequentially ---" local j="1" @@ -1669,7 +1723,7 @@ function run_test_on_vm { j="1" while [ $j -le $INT_NB_UES ] do - PING_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_ping_ue${j}.log + PING_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_ping_from_enb_para_ue${j}.log scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC tail -3 $ARCHIVES_LOC/$PING_LOG_FILE check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 @@ -1678,6 +1732,100 @@ function run_test_on_vm { fi fi + if [ $S1_NOS1_CFG -eq 0 ] + then + get_enb_noS1_ip_addr $ENB_VM_CMDS $ENB_VM_IP_ADDR + echo "############################################################" + echo "${CN_CONFIG} : iperf DL -- UE is server and eNB is client" + echo "############################################################" + echo " --- Sequentially ---" + local j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_dl_seq_ue${j} + get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $j + THROUGHPUT=3 + generic_iperf $UE_VM_CMDS $UE_VM_IP_ADDR $UE_IP_ADDR $ENB_VM_CMDS $ENB_VM_IP_ADDR $ENB_IP_ADDR $THROUGHPUT $IPERF_LOG_FILE $j 0 + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_client.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$IPERF_LOG_FILE $THROUGHPUT + j=$[$j+1] + done + if [ $INT_NB_UES -gt 1 ] + then + echo " --- In parallel ---" + j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_dl_para_ue${j} + THROUGHPUT=1 + get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $j + generic_iperf $UE_VM_CMDS $UE_VM_IP_ADDR $UE_IP_ADDR $ENB_VM_CMDS $ENB_VM_IP_ADDR $ENB_IP_ADDR $THROUGHPUT $IPERF_LOG_FILE $j 1 + j=$[$j+1] + done + sleep 35 + echo "killall --signal SIGKILL iperf" + echo "killall --signal SIGKILL iperf" > $UE_VM_CMDS + ssh -T -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR < $UE_VM_CMDS + rm $UE_VM_CMDS + j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_dl_para_ue${j} + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_client.txt $ARCHIVES_LOC + tail -3 $ARCHIVES_LOC/${IPERF_LOG_FILE}_client.txt | grep -v datagram + check_iperf $ARCHIVES_LOC/$IPERF_LOG_FILE $THROUGHPUT + j=$[$j+1] + done + fi + + echo "############################################################" + echo "${CN_CONFIG} : iperf UL -- eNB is server and UE is client" + echo "############################################################" + echo " --- Sequentially ---" + local j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_ul_seq_ue${j} + THROUGHPUT=2 + get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $j + generic_iperf $ENB_VM_CMDS $ENB_VM_IP_ADDR $ENB_IP_ADDR $UE_VM_CMDS $UE_VM_IP_ADDR $UE_IP_ADDR $THROUGHPUT $IPERF_LOG_FILE $j 0 + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_client.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$IPERF_LOG_FILE $THROUGHPUT + j=$[$j+1] + done + if [ $INT_NB_UES -gt 1 ] + then + echo " --- In parallel ---" + j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_ul_para_ue${j} + THROUGHPUT=1 + get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $j + generic_iperf $ENB_VM_CMDS $ENB_VM_IP_ADDR $ENB_IP_ADDR $UE_VM_CMDS $UE_VM_IP_ADDR $UE_IP_ADDR $THROUGHPUT $IPERF_LOG_FILE $j 1 + j=$[$j+1] + done + sleep 35 + echo "killall --signal SIGKILL iperf" + echo "killall --signal SIGKILL iperf" > $UE_VM_CMDS + ssh -T -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR < $UE_VM_CMDS + rm $UE_VM_CMDS + j="1" + while [ $j -le $INT_NB_UES ] + do + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_iperf_ul_para_ue${j} + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_client.txt $ARCHIVES_LOC + tail -3 $ARCHIVES_LOC/${IPERF_LOG_FILE}_client.txt | grep -v datagram + check_iperf $ARCHIVES_LOC/$IPERF_LOG_FILE $THROUGHPUT + j=$[$j+1] + done + fi + fi + echo "############################################################" echo "${CN_CONFIG} : Terminate enb/ue simulators" echo "############################################################" @@ -1698,6 +1846,7 @@ function run_test_on_vm { echo "############################################################" if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi + if [ $IPERF_STATUS -ne 0 ]; then STATUS=-1; fi if [ $STATUS -eq 0 ] then echo "TEST_OK" > $ARCHIVES_LOC/test_final_status.log -- GitLab