From 6271ca3705999811b57100ee8b4b9b7b4f461552 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux <raphael.defosseux@eurecom.fr> Date: Wed, 27 Mar 2019 17:37:10 +0100 Subject: [PATCH] CI: Improvement to 4 users -- EPC lists are expended to 16 users -- UE .u* files are regenerated on demand -- ping still one UE from EPC CI: pipeline improvement -- L2-Sim is no more a build variant One VM less to be created Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr> --- ci-scripts/add_user_to_conf_file.awk | 33 ++++++ ci-scripts/add_user_to_subscriber_list.awk | 27 +++++ ci-scripts/oai-ci-vm-tool | 30 ++++-- ci-scripts/runTestOnVM.sh | 112 +++++++++++++++++++-- 4 files changed, 185 insertions(+), 17 deletions(-) create mode 100644 ci-scripts/add_user_to_conf_file.awk create mode 100644 ci-scripts/add_user_to_subscriber_list.awk diff --git a/ci-scripts/add_user_to_conf_file.awk b/ci-scripts/add_user_to_conf_file.awk new file mode 100644 index 00000000000..b338d5e7ac0 --- /dev/null +++ b/ci-scripts/add_user_to_conf_file.awk @@ -0,0 +1,33 @@ +BEGIN{lineIdx=0;captureUEDesc=0} +{ + if ($0 ~/UE0/) { + captureUEDesc = 1 + } + if (captureUEDesc == 1) { + captureLine[lineIdx] = $0 + lineIdx = lineIdx + 1 + } + print $0 +} +END { + for (ueIdx = 1; ueIdx < num_ues; ueIdx++) { + print "" + for (k = 0; k < lineIdx; k++) { + if (captureLine[k] ~/UE0/) { + mLine = captureLine[k] + gsub("UE0", "UE"ueIdx, mLine) + print mLine + } else { + if (captureLine[k] ~/MSIN=/) { + mLine = captureLine[k] + MSIN=sprintf("%08d", 1111+int(ueIdx)) + gsub("00001111", MSIN, mLine) + print mLine + } else { + print captureLine[k] + } + } + + } + } +} diff --git a/ci-scripts/add_user_to_subscriber_list.awk b/ci-scripts/add_user_to_subscriber_list.awk new file mode 100644 index 00000000000..1e25990f59f --- /dev/null +++ b/ci-scripts/add_user_to_subscriber_list.awk @@ -0,0 +1,27 @@ +BEGIN{lineIdx=0} +{ + captureLine[lineIdx] = $0 + lineIdx = lineIdx + 1 + print $0 +} +END{ + for (ueIdx = 1; ueIdx < num_ues; ueIdx++) { + for (k = 0; k < lineIdx; k++) { + if (captureLine[k] ~/UserName=/) { + mLine = captureLine[k] + MSIN=sprintf("%08d", 1111+int(ueIdx)) + gsub("00001111", MSIN, mLine) + print mLine + } else { + if (captureLine[k] ~/SubscriptionIndex/) { + mLine = captureLine[k] + MSIN=sprintf("%d", 111+int(ueIdx)) + gsub("111", MSIN, mLine) + print mLine + } else { + print captureLine[k] + } + } + } + } +} diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool index 909975d0606..364e70d714d 100755 --- a/ci-scripts/oai-ci-vm-tool +++ b/ci-scripts/oai-ci-vm-tool @@ -293,9 +293,6 @@ case $key in -v9) VM_NAME=ci-l2-sim ARCHIVES_LOC=l2_sim - LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET" RUN_OPTIONS="complex" NBARGS=$[$NBARGS+256] shift @@ -372,9 +369,6 @@ case $key in l2-sim) VM_NAME=ci-l2-sim ARCHIVES_LOC=l2_sim - LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET" RUN_OPTIONS="complex" NBARGS=$[$NBARGS+256] ;; @@ -540,11 +534,23 @@ ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC} STATUS=0 if [ $CREATE_CMD -eq 1 ] then - create_vm + if [[ $VM_NAME =~ .*-l2-sim.* ]] + then + echo "Selected variant is no more a build variant" + exit 0 + else + create_vm + fi fi if [ $BUILD_CMD -eq 1 ] then - build_on_vm + if [[ $VM_NAME =~ .*-l2-sim.* ]] + then + echo "Selected variant is no more a build variant" + exit 0 + else + build_on_vm + fi if [ $DAEMON -eq 0 ] && [ $STATUS -eq 0 ] then check_on_vm_build @@ -552,7 +558,13 @@ then fi if [ $WAIT_CMD -eq 1 ] then - wait_on_vm_build + if [[ $VM_NAME =~ .*-l2-sim.* ]] + then + echo "Selected variant is no more a build variant" + exit 0 + else + wait_on_vm_build + fi if [ $STATUS -eq 0 ] then check_on_vm_build diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 05464560d87..be3e592dbe6 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -405,6 +405,26 @@ function install_epc_on_vm { fi } +function add_user_to_epc_lists { + local LOC_EPC_VM_CMDS=$1 + local LOC_EPC_VM_IP_ADDR=$2 + local LOC_NB_USERS=$3 + if [ $LTEBOX -eq 1 ] + then + scp -o StrictHostKeyChecking=no $JENKINS_WKSP/ci-scripts/add_user_to_subscriber_list.awk ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu/ + echo "cd /opt/hss_sim0609" > $LOC_EPC_VM_CMDS + echo "sudo cp subscriber.data subscriber.data.orig" >> $LOC_EPC_VM_CMDS + echo "sudo cp profile.data profile.data.orig" >> $LOC_EPC_VM_CMDS + echo "sudo awk -v num_ues=$LOC_NB_USERS -f /home/ubuntu/add_user_to_subscriber_list.awk subscriber.data.orig > /tmp/subscriber.data" >> $LOC_EPC_VM_CMDS + echo "sudo awk -v num_ues=$LOC_NB_USERS -f /home/ubuntu/add_user_to_subscriber_list.awk profile.data.orig > /tmp/profile.data" >> $LOC_EPC_VM_CMDS + echo "sudo cp /tmp/subscriber.data subscriber.data" >> $LOC_EPC_VM_CMDS + echo "sudo cp /tmp/profile.data profile.data" >> $LOC_EPC_VM_CMDS + + ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS + rm -f $LOC_EPC_VM_CMDS + fi +} + function start_epc { local LOC_EPC_VM_NAME=$1 local LOC_EPC_VM_CMDS=$2 @@ -589,11 +609,30 @@ function start_l2_sim_enb { sleep 10 } +function add_ue_l2_sim_ue { + local LOC_UE_VM_IP_ADDR=$2 + local LOC_NB_UES=$3 + echo "cd /home/ubuntu/tmp/" > $1 + echo "source oaienv" >> $1 + echo "echo \"cd openair3/NAS/TOOLS/\"" >> $1 + echo "cd openair3/NAS/TOOLS/" >> $1 + echo "echo \"awk -v num_ues=$LOC_NB_UES -f /home/ubuntu/tmp/ci-scripts/add_user_to_conf_file.awk ue_eurecom_test_sfr.conf > ue_eurecom_test_sfr_multi_ues.conf\"" >> $1 + echo "awk -v num_ues=$LOC_NB_UES -f /home/ubuntu/tmp/ci-scripts/add_user_to_conf_file.awk ue_eurecom_test_sfr.conf > ue_eurecom_test_sfr_multi_ues.conf" >> $1 + echo "echo \"cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/\"" >> $1 + echo "cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1 + echo "echo \"sudo ../../../targets/bin/conf2uedata -c ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr_multi_ues.conf -o .\"" >> $1 + echo "sudo ../../../targets/bin/conf2uedata -c ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr_multi_ues.conf -o . > /home/ubuntu/tmp/cmake_targets/log/ue_adapt.txt 2>&1" >> $1 + + ssh -o StrictHostKeyChecking=no ubuntu@$LOC_UE_VM_IP_ADDR < $1 + rm $1 +} + function start_l2_sim_ue { local LOC_UE_VM_IP_ADDR=$2 local LOC_ENB_VM_IP_ADDR=$3 local LOC_LOG_FILE=$4 local LOC_CONF_FILE=$5 + local LOC_NB_UES=$6 echo "echo \"sudo apt-get --yes --quiet install daemon \"" > $1 echo "sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1" >> $1 echo "cd /home/ubuntu/tmp/ci-scripts/conf_files/" >> $1 @@ -602,7 +641,7 @@ function start_l2_sim_ue { echo "echo \"cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/\"" >> $1 echo "sudo chmod 777 /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1 echo "cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1 - echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues 1\" > ./my-lte-softmodem-run.sh " >> $1 + echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues $LOC_NB_UES\" > ./my-lte-softmodem-run.sh " >> $1 echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1 echo "cat ./my-lte-softmodem-run.sh" >> $1 echo "if [ -e /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ]; then sudo sudo rm -f /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE; fi" >> $1 @@ -672,8 +711,8 @@ function run_test_on_vm { echo "ENB_VM_CMD_FILE = $ENB_VM_CMDS" UE_VM_NAME=`echo $VM_NAME | sed -e "s#l2-sim#ue-ethernet#"` UE_VM_CMDS=${UE_VM_NAME}_cmds.txt - echo "ENB_VM_NAME = $ENB_VM_NAME" - echo "ENB_VM_CMD_FILE = $ENB_VM_CMDS" + echo "UE_VM_NAME = $UE_VM_NAME" + echo "UE_VM_CMD_FILE = $UE_VM_CMDS" else echo "VM_NAME = $VM_NAME" echo "VM_CMD_FILE = $VM_CMDS" @@ -1317,6 +1356,9 @@ function run_test_on_vm { install_epc_on_vm $EPC_VM_NAME $EPC_VM_CMDS EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME` + # adding 16 users to EPC subscriber lists + add_user_to_epc_lists $EPC_VM_CMDS $EPC_VM_IP_ADDR 16 + # Starting EPC start_epc $EPC_VM_NAME $EPC_VM_CMDS $EPC_VM_IP_ADDR @@ -1326,14 +1368,68 @@ function run_test_on_vm { echo "############################################################" echo "Starting the eNB in FDD-5MHz mode" echo "############################################################" - CURRENT_ENB_LOG_FILE=fdd_05MHz_enb.log + CURRENT_ENB_LOG_FILE=fdd_05MHz_01users_enb.log start_l2_sim_enb $ENB_VM_CMDS $ENB_VM_IP_ADDR $EPC_VM_IP_ADDR $UE_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 rcc.band7.tm1.nfapi.conf echo "############################################################" - echo "Starting the UEs" + echo "Starting the UE (1 user)" echo "############################################################" - CURRENT_UE_LOG_FILE=fdd_05MHz_ue.log - start_l2_sim_ue $UE_VM_CMDS $UE_VM_IP_ADDR $ENB_VM_IP_ADDR $CURRENT_UE_LOG_FILE ue.nfapi.conf + CURRENT_UE_LOG_FILE=fdd_05MHz_01users_ue.log + start_l2_sim_ue $UE_VM_CMDS $UE_VM_IP_ADDR $ENB_VM_IP_ADDR $CURRENT_UE_LOG_FILE ue.nfapi.conf 1 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $ENB_VM_CMDS $ENB_VM_IP_ADDR + terminate_enb_ue_basic_sim $UE_VM_CMDS $UE_VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log + STATUS=-1 + return + fi + + echo "############################################################" + echo "Pinging the EPC from UE" + echo "############################################################" + PING_LOG_FILE=fdd_05MHz_01users_ping_epc.txt + ping_epc_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $REAL_EPC_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Pinging the UE from EPC" + echo "############################################################" + PING_LOG_FILE=fdd_05MHz_01users_ping_ue.txt + get_ue_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $ENB_VM_CMDS $ENB_VM_IP_ADDR + terminate_enb_ue_basic_sim $UE_VM_CMDS $UE_VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + + echo "############################################################" + echo "Adding UE to conf file and recompile" + echo "############################################################" + add_ue_l2_sim_ue $UE_VM_CMDS $UE_VM_IP_ADDR 4 + + echo "############################################################" + echo "Starting the eNB in FDD-5MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_05MHz_04users_enb.log + start_l2_sim_enb $ENB_VM_CMDS $ENB_VM_IP_ADDR $EPC_VM_IP_ADDR $UE_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 rcc.band7.tm1.nfapi.conf + + echo "############################################################" + echo "Starting the UE (4 users)" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_05MHz_04users_ue.log + start_l2_sim_ue $UE_VM_CMDS $UE_VM_IP_ADDR $ENB_VM_IP_ADDR $CURRENT_UE_LOG_FILE ue.nfapi.conf 4 if [ $UE_SYNC -eq 0 ] then echo "Problem w/ eNB and UE not syncing" @@ -1350,7 +1446,7 @@ function run_test_on_vm { echo "############################################################" echo "Pinging the EPC from UE" echo "############################################################" - PING_LOG_FILE=fdd_05MHz_ping_epc.txt + PING_LOG_FILE=fdd_05MHz_04users_ping_epc.txt ping_epc_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR $REAL_EPC_IP_ADDR $PING_LOG_FILE scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -- GitLab