From 4c69e52c992b045b6df69cf112c782684ac224c6 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux <raphael.defosseux@eurecom.fr> Date: Wed, 22 May 2019 11:25:24 +0200 Subject: [PATCH] CI: proper merge on ci scripts. Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr> --- ci-scripts/main.py | 344 +++++++++--------- ci-scripts/oai-ci-vm-tool | 12 +- ci-scripts/reportBuildLocally.sh | 37 +- ci-scripts/reportTestLocally.sh | 1 - ci-scripts/runTestOnVM.sh | 25 +- ..._usrp210_band40_test_20mhz_tm1_not_run.xml | 119 ------ ...f4p5_usrp210_band40_test_20mhz_not_run.xml | 110 ------ 7 files changed, 198 insertions(+), 450 deletions(-) delete mode 100644 ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml delete mode 100644 ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 707ffa1b5d4..1ecccd0d687 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -1,4 +1,3 @@ -# dummy commit #/* # * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more # * contributor license agreements. See the NOTICE file distributed with @@ -44,9 +43,6 @@ ENB_PROCESS_SEG_FAULT = -11 ENB_PROCESS_ASSERTION = -12 ENB_PROCESS_REALTIME_ISSUE = -13 ENB_PROCESS_NOLOGFILE_TO_ANALYZE = -14 -UE_PROCESS_NOLOGFILE_TO_ANALYZE = -20 -UE_PROCESS_COULD_NOT_SYNC = -21 -UE_PROCESS_ASSERTION = -22 HSS_PROCESS_FAILED = -2 HSS_PROCESS_OK = +2 MME_PROCESS_FAILED = -3 @@ -54,8 +50,11 @@ MME_PROCESS_OK = +3 SPGW_PROCESS_FAILED = -4 SPGW_PROCESS_OK = +4 UE_IP_ADDRESS_ISSUE = -5 -UE_PROCESS_FAILED = -6 -UE_PROCESS_OK = +6 +OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE = -20 +OAI_UE_PROCESS_COULD_NOT_SYNC = -21 +OAI_UE_PROCESS_ASSERTION = -22 +OAI_UE_PROCESS_FAILED = -6 +OAI_UE_PROCESS_OK = +6 #----------------------------------------------------------- # Import @@ -70,7 +69,6 @@ import xml.etree.ElementTree as ET import logging import datetime import signal -#import platform from multiprocessing import Process, Lock, SimpleQueue logging.basicConfig( level=logging.DEBUG, @@ -144,14 +142,13 @@ class SSHConnection(): self.UEUserName = '' self.UEPassword = '' self.UE_instance = '' - self.UELogFile = '' self.UESourceCodePath = '' + self.UELogFile = '' self.Build_OAI_UE_args = '' self.Initialize_OAI_UE_args = '' self.Initialize_OAI_eNB_args = '' self.clean_repository = True - self.eNBOsVersion = '' - + def open(self, ipaddress, username, password): count = 0 connect_status = False @@ -342,7 +339,7 @@ class SSHConnection(): self.command('mkdir -p log', '\$', 5) self.command('chmod 777 log', '\$', 5) # no need to remove in log (git clean did the trick) - self.command('stdbuf -o0 ./build_oai ' + self.Build_eNB_args + ' 2>&1 | stdbuf -o0 tee -a compile_oai_enb.log', 'Bypassing the Tests', 600) + self.command('stdbuf -o0 ./build_oai ' + self.Build_eNB_args + ' 2>&1 | stdbuf -o0 tee compile_oai_enb.log', 'Bypassing the Tests', 600) self.command('mkdir -p build_log_' + self.testCase_id, '\$', 5) self.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5) self.command('mv compile_oai_enb.log ' + 'build_log_' + self.testCase_id, '\$', 5) @@ -380,7 +377,7 @@ class SSHConnection(): self.command('mkdir -p log', '\$', 5) self.command('chmod 777 log', '\$', 5) # no need to remove in log (git clean did the trick) - self.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee -a compile_oai_ue.log', 'Bypassing the Tests', 600) + self.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests', 600) self.command('mkdir -p build_log_' + self.testCase_id, '\$', 5) self.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5) self.command('mv compile_oai_ue.log ' + 'build_log_' + self.testCase_id, '\$', 5) @@ -503,7 +500,7 @@ class SSHConnection(): result = re.search('type: b200', str(self.ssh.before)) if result is not None: logging.debug('Found a B2xx device --> resetting it') - self.command('echo ' + self.eNBPassword + ' | sudo -S b2xx_fx3_utils --reset-device', '\$', 5) + self.command('echo ' + self.eNBPassword + ' | sudo -S b2xx_fx3_utils --reset-device', '\$', 10) # Reloading FGPA bin firmware self.command('echo ' + self.eNBPassword + ' | sudo -S uhd_find_devices', '\$', 30) # Make a copy and adapt to EPC / eNB IP addresses @@ -514,15 +511,11 @@ class SSHConnection(): self.command('source oaienv', '\$', 5) self.command('cd cmake_targets', '\$', 5) self.command('echo "ulimit -c unlimited && ./ran_build/build/' + self.air_interface + '-softmodem -O ' + self.eNBSourceCodePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh ', '\$', 5) - self.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh ', '\$', 5) - self.command('echo ' + self.eNBPassword + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5) - #to use daemon on CentOS we need to source the function - #linux_distro = platform.linux_distribution()[0] - #if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE): - #self.command('source /etc/init.d/functions', '\$', 5) + self.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) + self.command('echo ' + self.eNBPassword + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5) #use nohup instead of daemon #self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) - self.command('echo $USER; nohup sudo ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh' + ' > ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log' + ' 2>&1 &', self.eNBUserName, 5) + self.command('echo $USER; nohup sudo ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh' + ' > ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log' + ' 2>&1 &', self.eNBUserName, 5) if not rruCheck: self.eNBLogFile = 'enb_' + self.testCase_id + '.log' if extra_options != '': @@ -613,24 +606,27 @@ class SSHConnection(): if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': Usage() sys.exit('Insufficient Parameter') - #initialize_OAI_UE_flag = True - #pStatus = self.CheckOAIUEProcessExist(initialize_OAI_UE_flag) - #if (pStatus < 0): - # self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', pStatus) - # self.CreateHtmlTabFooter(False) - # sys.exit(1) + result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) + if result is None: + check_eNB = True + check_OAI_UE = False + pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE) + if (pStatus < 0): + self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', pStatus) + self.CreateHtmlTabFooter(False) + sys.exit(1) self.open(self.UEIPAddress, self.UEUserName, self.UEPassword) # b2xx_fx3_utils reset procedure self.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 30) - result = re.search('type: n3xx', str(self.ssh.before)) + result = re.search('type: b200', str(self.ssh.before)) if result is not None: - pass logging.debug('Found a B2xx device --> resetting it') - self.command('echo ' + self.UEPassword + ' | sudo -S sudo b2xx_fx3_utils --reset-device', '\$', 5) + self.command('echo ' + self.UEPassword + ' | sudo -S b2xx_fx3_utils --reset-device', '\$', 10) # Reloading FGPA bin firmware self.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 30) - else: - logging.debug('Did not find any B2xx device') + result = re.search('type: n3xx', str(self.ssh.before)) + if result is not None: + logging.debug('Found a N3xx device --> resetting it') self.command('cd ' + self.UESourceCodePath, '\$', 5) # Initialize_OAI_UE_args usually start with -C and followed by the location in repository self.command('source oaienv', '\$', 5) @@ -638,29 +634,34 @@ class SSHConnection(): self.command('echo "ulimit -c unlimited && ./'+ self.air_interface +'-uesoftmodem ' + self.Initialize_OAI_UE_args + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) self.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) self.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5) - #to use daemon on CentOS we need to source the function - #linux_distro = platform.linux_distribution()[0] - #if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE): - #self.command('source /etc/init.d/functions', '\$', 5) - #use nohup instead of daemon - self.command('echo $USER; nohup sudo ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5) - #self.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/ran_build/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) self.UELogFile = 'ue_' + self.testCase_id + '.log' - time.sleep(6) - self.command('cd ../..', '\$', 5) - doLoop = True - loopCounter = 10 - while (doLoop): - loopCounter = loopCounter - 1 - if (loopCounter == 0): - self.close() - doLoop = False - logging.error('\u001B[1;37;41m UE logging system did not show got sync! \u001B[0m') - self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', ALL_PROCESSES_OK, 'OAI UE') - self.CreateHtmlTabFooter(False) - sys.exit(1) - else: - self.command('stdbuf -o0 cat ' + self.UELogFile + ' | egrep --text --color=never -i "wait|sync"', '\$', 4) + + # We are now looping several times to hope we really sync w/ an eNB + doOutterLoop = True + outterLoopCounter = 5 + gotSyncStatus = True + fullSyncStatus = True + while (doOutterLoop): + self.command('cd ' + self.UESourceCodePath + '/cmake_targets/ran_build/build', '\$', 5) + self.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5) + #use nohup instead of daemon + #self.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/lte_build_oai/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) + self.command('echo $USER; nohup sudo ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5) + time.sleep(6) + self.command('cd ../..', '\$', 5) + doLoop = True + loopCounter = 10 + gotSyncStatus = True + # the 'got sync' message is for the UE threads synchronization + while (doLoop): + loopCounter = loopCounter - 1 + if (loopCounter == 0): + # Here should never occur + logging.error('"got sync" message never showed!') + gotSyncStatus = False + doLoop = False + continue + self.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync"', '\$', 4) if self.air_interface == 'nr': result = re.search('Starting sync detection', str(self.ssh.before)) else: @@ -669,57 +670,76 @@ class SSHConnection(): time.sleep(10) else: doLoop = False - self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'OK', ALL_PROCESSES_OK, 'OAI UE') - logging.debug('\u001B[1m Initialize OAI UE Completed\u001B[0m') + logging.debug('Found "got sync" message!') + if gotSyncStatus == False: + # we certainly need to stop the lte-uesoftmodem process if it is still running! + self.command('ps -aux | grep --text --color=never softmodem | grep -v grep', '\$', 4) + result = re.search('-uesoftmodem', str(self.ssh.before)) + if result is not None: + self.command('echo ' + self.UEPassword + ' | sudo -S killall --signal=SIGINT -r *-uesoftmodem', '\$', 4) + time.sleep(3) + continue + if self.air_interface == 'nr': + fullSyncStatus = True + doOutterLoop = False + else: + # We are now checking if sync w/ eNB DOES NOT OCCUR + # Usually during the cell synchronization stage, the UE returns with No cell synchronization message + doLoop = True + loopCounter = 10 + while (doLoop): + loopCounter = loopCounter - 1 + if (loopCounter == 0): + # Here we do have a great chance that the UE did cell-sync w/ eNB + doLoop = False + doOutterLoop = False + fullSyncStatus = True + continue + self.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync"', '\$', 4) + result = re.search('No cell synchronization found', str(self.ssh.before)) + if result is None: + time.sleep(6) + else: + doLoop = False + fullSyncStatus = False + logging.debug('Found: "No cell synchronization" message! --> try again') + time.sleep(6) + self.command('ps -aux | grep --text --color=never softmodem | grep -v grep', '\$', 4) + result = re.search('lte-uesoftmodem', str(self.ssh.before)) + if result is not None: + self.command('echo ' + self.UEPassword + ' | sudo -S killall --signal=SIGINT lte-uesoftmodem', '\$', 4) + outterLoopCounter = outterLoopCounter - 1 + if (outterLoopCounter == 0): + doOutterLoop = False + + if fullSyncStatus and gotSyncStatus and self.air_interface == 'lte': + result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) + if result is None: + self.command('ifconfig oaitun_ue1', '\$', 4) + result = re.search('inet addr', str(self.ssh.before)) + if result is not None: + logging.debug('\u001B[1m oaitun_ue1 interface is mounted and configured\u001B[0m') + else: + logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m') + self.close() + # For the moment we are always OK!!! + self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'OK', ALL_PROCESSES_OK, 'OAI UE') + logging.debug('\u001B[1m Initialize OAI UE Completed\u001B[0m') def InitializeOAIeNB(self): if self.eNBIPAddress == '' or self.eNBUserName == '' or self.eNBPassword == '' or self.eNBSourceCodePath == '': Usage() sys.exit('Insufficient Parameter') - #initialize_OAI_eNB_flag = True - #pStatus = self.CheckOAIeNBProcessExist(initialize_OAI_eNB_flag) - #if (pStatus < 0): - # self.CreateHtmlTestRow(self.Initialize_OAI_eNB_args, 'KO', pStatus) - # self.CreateHtmlTabFooter(False) - # sys.exit(1) self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword) self.command('cd ' + self.eNBSourceCodePath, '\$', 5) - # Initialize_OAI_eNB_args usually start with -C and followed by the location in repository - #full_config_file = self.Initialize_OAI_eNB_args.replace('-O ','') - #extIdx = full_config_file.find('.conf') - #if (extIdx > 0): - # extra_options = full_config_file[extIdx + 5:] - # # if tracer options is on, compiling and running T Tracer - # result = re.search('T_stdout', str(extra_options)) - ## if result is not None: - # logging.debug('\u001B[1m Compiling and launching T Tracer\u001B[0m') - # self.command('cd common/utils/T/tracer', '\$', 5) - # self.command('make', '\$', 10) - # self.command('echo $USER; nohup ./record -d ../T_messages.txt -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '_record.raw -ON -off VCD -off HEAVY -off LEGACY_GROUP_TRACE -off LEGACY_GROUP_DEBUG > ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '_record.log 2>&1 &', self.eNBUserName, 5) - # self.command('cd ' + self.eNBSourceCodePath, '\$', 5) - # full_config_file = full_config_file[:extIdx + 5] - # config_path, config_file = os.path.split(full_config_file) - #ci_full_config_file = config_path + '/ci-' + config_file - #rruCheck = False - #result = re.search('rru', str(config_file)) - #if result is not None: - # rruCheck = True - ## Make a copy and adapt to EPC / eNB IP addresses - #self.command('cp ' + full_config_file + ' ' + ci_full_config_file, '\$', 5) - #self.command('sed -i -e \'s/CI_eNB_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2); # Launch eNB with the modified config file self.command('source oaienv', '\$', 5) self.command('cd cmake_targets/ran_build/build', '\$', 5) - #self.command('echo "ulimit -c unlimited && ./' + self.air_interface + '-softmodem ' + self.Initialize_OAI_eNB_args + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) self.eNBLogFile = 'enb_' + self.testCase_id + '.log' self.command('echo "ulimit -c unlimited && ./' + self.air_interface + '-softmodem ' + self.Initialize_OAI_eNB_args + '|& tee ' + self.eNBSourceCodePath + '/cmake_targets/' + self.eNBLogFile + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) self.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) self.command('echo ' + self.eNBPassword + ' | sudo -S rm -Rf ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log', '\$', 5) - #to use daemon on CentOS we need to source the function - #linux_distro = platform.linux_distribution()[0] - #if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE): - #self.command('source /etc/init.d/functions', '\$', 5) #use nohup instead of daemon self.command('echo $USER; nohup sudo ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh' + ' > ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log' + ' 2>&1 &', self.eNBUserName, 5) #self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) @@ -727,38 +747,17 @@ class SSHConnection(): self.command('cd ../..', '\$', 5) doLoop = True loopCounter = 10 - print('gNB log file: ' + self.eNBLogFile) while (doLoop): loopCounter = loopCounter - 1 if (loopCounter == 0): - # In case of T tracer recording, we may need to kill it - #result = re.search('T_stdout', str(self.Initialize_OAI_eNB_args)) - #if result is not None: - # self.command('killall --signal SIGKILL record', '\$', 5) self.close() doLoop = False logging.error('\u001B[1;37;41m eNB logging system did not show got sync! \u001B[0m') self.CreateHtmlTestRow(self.Initialize_OAI_eNB_args, 'KO', ALL_PROCESSES_OK, 'OAI eNB') self.CreateHtmlTabFooter(False) - ## In case of T tracer recording, we need to kill tshark on EPC side - #result = re.search('T_stdout', str(self.Initialize_OAI_eNB_args)) - #if result is not None: - # self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword) - # logging.debug('\u001B[1m Stopping tshark \u001B[0m') - # self.command('echo ' + self.EPCPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5) - # self.close() - # time.sleep(1) - # pcap_log_file = 'enb_' + self.testCase_id + '_s1log.pcap' - # copyin_res = self.copyin(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, '/tmp/' + pcap_log_file, '.') - # if (copyin_res == 0): - # self.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, pcap_log_file, self.eNBSourceCodePath + '/cmake_targets/.') sys.exit(1) else: - #print('current directory: ' + os.getcwd()) - #self.command('pwd', '\$', 4) - #print('self.command pwd: ' + str(self.ssh.before)) self.command('stdbuf -o0 cat ' + self.eNBLogFile + ' | egrep --text --color=never -i "wait|sync"', '\$', 30) - #print(self.ssh.before) result = re.search('got sync', str(self.ssh.before)) if result is None: time.sleep(11) @@ -939,7 +938,7 @@ class SSHConnection(): return ping_time = re.findall("-c (\d+)",str(self.ping_args)) device_id = 'catm' - ping_status = self.command('stdbuf -o0 ping ' + self.ping_args + ' ' + str(moduleIPAddr) + ' 2>&1 | stdbuf -o0 tee -a ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5) + ping_status = self.command('stdbuf -o0 ping ' + self.ping_args + ' ' + str(moduleIPAddr) + ' 2>&1 | stdbuf -o0 tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5) # TIMEOUT CASE if ping_status < 0: message = 'Ping with UE (' + str(moduleIPAddr) + ') crashed due to TIMEOUT!' @@ -1288,7 +1287,7 @@ class SSHConnection(): self.command('cd ' + self.EPCSourceCodePath, '\$', 5) self.command('cd scripts', '\$', 5) ping_time = re.findall("-c (\d+)",str(self.ping_args)) - ping_status = self.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee -a ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5) + ping_status = self.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5) # TIMEOUT CASE if ping_status < 0: message = 'Ping with UE (' + str(UE_IPAddress) + ') crashed due to TIMEOUT!' @@ -1823,9 +1822,9 @@ class SSHConnection(): self.command('rm -f iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) if (device_id == 'OAI-UE'): - iperf_status = self.command('iperf -c ' + EPC_Iperf_UE_IPAddress + ' ' + modified_options + ' -p ' + str(port) + ' -B ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee -a iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) + iperf_status = self.command('iperf -c ' + EPC_Iperf_UE_IPAddress + ' ' + modified_options + ' -p ' + str(port) + ' -B ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) else: - iperf_status = self.command('stdbuf -o0 adb -s ' + device_id + ' shell "/data/local/tmp/iperf -c ' + EPC_Iperf_UE_IPAddress + ' ' + modified_options + ' -p ' + str(port) + '" 2>&1 | stdbuf -o0 tee -a iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) + iperf_status = self.command('stdbuf -o0 adb -s ' + device_id + ' shell "/data/local/tmp/iperf -c ' + EPC_Iperf_UE_IPAddress + ' ' + modified_options + ' -p ' + str(port) + '" 2>&1 | stdbuf -o0 tee iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) # TIMEOUT Case if iperf_status < 0: self.close() @@ -1927,13 +1926,12 @@ class SSHConnection(): self.command('rm -f iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) if (useIperf3): - self.command('stdbuf -o0 iperf3 -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee -a iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) + self.command('stdbuf -o0 iperf3 -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) clientStatus = 0 self.Iperf_analyzeV3Output(lock, UE_IPAddress, device_id, statusQueue) else: - iperf_status = self.command('stdbuf -o0 iperf -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee -a iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) - + iperf_status = self.command('stdbuf -o0 iperf -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0) if iperf_status < 0: self.close() message = 'iperf on UE (' + str(UE_IPAddress) + ') crashed due to TIMEOUT !' @@ -2218,7 +2216,7 @@ class SSHConnection(): status = status_queue.get() if (status < 0): result = status - if result == UE_PROCESS_FAILED: + if result == OAI_UE_PROCESS_FAILED: fileCheck = re.search('ue_', str(self.UELogFile)) if fileCheck is not None: self.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/' + self.UELogFile, '.') @@ -2230,13 +2228,13 @@ class SSHConnection(): def CheckOAIUEProcess(self, status_queue): try: self.open(self.UEIPAddress, self.UEUserName, self.UEPassword) - self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never ' + self.air_interface + '-uesoftmodem', '\$', 5) + self.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + '-uesoftmodem | grep -v grep', '\$', 5) result = re.search(self.air_interface + '-uesoftmodem', str(self.ssh.before)) if result is None: logging.debug('\u001B[1;37;41m OAI UE Process Not Found! \u001B[0m') - status_queue.put(UE_PROCESS_FAILED) + status_queue.put(OAI_UE_PROCESS_FAILED) else: - status_queue.put(UE_PROCESS_OK) + status_queue.put(OAI_UE_PROCESS_OK) self.close() except: os.kill(os.getppid(),signal.SIGUSR1) @@ -2244,7 +2242,7 @@ class SSHConnection(): def CheckeNBProcess(self, status_queue): try: self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword) - self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never ' + self.air_interface + '-softmodem', '\$', 5) + self.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + '-softmodem | grep -v grep', '\$', 5) result = re.search(self.air_interface + '-softmodem', str(self.ssh.before)) if result is None: logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m') @@ -2360,28 +2358,25 @@ class SSHConnection(): if foundAssertion and (msgLine < 3): msgLine += 1 msgAssertion += str(line) - result = re.search('Generating LTE_RRCConnectionSetup|Generating RRCConnectionSetup', str(line)) - if result is not None: - rrcSetupRequest += 1 - result = re.search('LTE_RRCConnectionSetupComplete from UE|RRCConnectionSetupComplete from UE', str(line)) + result = re.search('LTE_RRCConnectionSetupComplete from UE', str(line)) if result is not None: rrcSetupComplete += 1 - result = re.search('Generate LTE_RRCConnectionRelease|Generate RRCConnectionRelease', str(line)) + result = re.search('Generate LTE_RRCConnectionRelease', str(line)) if result is not None: rrcReleaseRequest += 1 - result = re.search('Generate LTE_RRCConnectionReconfiguration|Generate RRCConnectionReconfiguration', str(line)) + result = re.search('Generate LTE_RRCConnectionReconfiguration', str(line)) if result is not None: rrcReconfigRequest += 1 - result = re.search('LTE_RRCConnectionReconfigurationComplete from UE rnti|RRCConnectionReconfigurationComplete from UE rnti', str(line)) + result = re.search('LTE_RRCConnectionReconfigurationComplete from UE rnti', str(line)) if result is not None: rrcReconfigComplete += 1 - result = re.search('LTE_RRCConnectionReestablishmentRequest|RRCConnectionReestablishmentRequest', str(line)) + result = re.search('LTE_RRCConnectionReestablishmentRequest', str(line)) if result is not None: rrcReestablishRequest += 1 - result = re.search('LTE_RRCConnectionReestablishmentComplete|RRCConnectionReestablishmentComplete', str(line)) + result = re.search('LTE_RRCConnectionReestablishmentComplete', str(line)) if result is not None: rrcReestablishComplete += 1 - result = re.search('LTE_RRCConnectionReestablishmentReject|RRCConnectionReestablishmentReject', str(line)) + result = re.search('LTE_RRCConnectionReestablishmentReject', str(line)) if result is not None: rrcReestablishReject += 1 result = re.search('CDRX configuration activated after RRC Connection', str(line)) @@ -2479,6 +2474,7 @@ class SSHConnection(): foundRealTimeIssue = False uciStatMsgCount = 0 pdcpDataReqFailedCount = 0 + badDciCount = 0 rrcConnectionRecfgComplete = 0 no_cell_sync_found = False mib_found = False @@ -2617,12 +2613,10 @@ class SSHConnection(): logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m') return ENB_PROCESS_SEG_FAULT if foundAssertion: - logging.debug('\u001B[1;37;43m UE ended with an assertion! \u001B[0m') - # removed for esthetics - #self.htmlUEFailureMsg += msgAssertion - self.htmlUEFailureMsg += 'UE ended with an assertion!\n' + logging.debug('\u001B[1;30;43m UE showed an assertion! \u001B[0m') + self.htmlUEFailureMsg += 'UE showed an assertion!\n' if not mib_found or not frequency_found: - return UE_PROCESS_ASSERTION + return OAI_UE_PROCESS_ASSERTION if foundRealTimeIssue: logging.debug('\u001B[1;37;41m UE faced real time issues! \u001B[0m') self.htmlUEFailureMsg += 'UE faced real time issues!\n' @@ -2630,7 +2624,7 @@ class SSHConnection(): if no_cell_sync_found and not mib_found: logging.debug('\u001B[1;37;41m UE could not synchronize ! \u001B[0m') self.htmlUEFailureMsg += 'UE could not synchronize!\n' - return UE_PROCESS_COULD_NOT_SYNC + return OAI_UE_PROCESS_COULD_NOT_SYNC return 0 def TerminateeNB(self): @@ -2642,7 +2636,7 @@ class SSHConnection(): self.command('echo ' + self.eNBPassword + ' | sudo -S daemon --name=enb' + str(self.eNB_instance) + '_daemon --stop', '\$', 5) self.command('echo ' + self.eNBPassword + ' | sudo -S killall --signal SIGINT -r .*-softmodem || true', '\$', 5) time.sleep(5) - self.command('stdbuf -o0 ps -aux | grep softmodem | grep -v grep', '\$', 5) + self.command('stdbuf -o0 ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) result = re.search('-softmodem', str(self.ssh.before)) if result is not None: self.command('echo ' + self.eNBPassword + ' | sudo -S killall --signal SIGKILL -r .*-softmodem || true', '\$', 5) @@ -2720,10 +2714,6 @@ class SSHConnection(): self.command('cd ' + self.EPCSourceCodePath, '\$', 5) self.command('cd scripts', '\$', 5) self.command('rm -f ./kill_hss.sh', '\$', 5) - #to use daemon on CentOS we need to source the function - #linux_distro = platform.linux_distribution()[0] - #if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE): - #self.command('source /etc/init.d/functions', '\$', 5) self.command('echo ' + self.EPCPassword + ' | sudo -S daemon --name=simulated_hss --stop', '\$', 5) time.sleep(1) self.command('echo ' + self.EPCPassword + ' | sudo -S killall --signal SIGKILL hss_sim', '\$', 5) @@ -2796,7 +2786,7 @@ class SSHConnection(): if result is not None: self.command('echo ' + self.UEPassword + ' | sudo -S killall --signal SIGINT -r .*-uesoftmodem || true', '\$', 5) time.sleep(5) - self.command('stdbuf -o0 ps -aux | grep uesoftmodem | grep -v grep', '\$', 5) + self.command('ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) result = re.search('-uesoftmodem', str(self.ssh.before)) if result is not None: self.command('echo ' + self.UEPassword + ' | sudo -S killall --signal SIGKILL -r .*-uesoftmodem || true', '\$', 5) @@ -2809,7 +2799,7 @@ class SSHConnection(): if (copyin_res == -1): logging.debug('\u001B[1;37;41m Could not copy UE logfile to analyze it! \u001B[0m') self.htmlUEFailureMsg = 'Could not copy UE logfile to analyze it!' - self.CreateHtmlTestRow('N/A', 'KO', UE_PROCESS_NOLOGFILE_TO_ANALYZE, 'UE') + self.CreateHtmlTestRow('N/A', 'KO', OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE, 'UE') self.UELogFile = '' return logging.debug('\u001B[1m Analyzing UE logfile \u001B[0m') @@ -2825,7 +2815,7 @@ class SSHConnection(): self.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE') # In case of sniffing on commercial eNBs we have random results # Not an error then - if (logStatus != UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'): + if (logStatus != OAI_UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'): self.Initialize_OAI_UE_args = '' self.AutoTerminateUEandeNB() self.CreateHtmlTabFooter(False) @@ -2861,10 +2851,6 @@ class SSHConnection(): time.sleep(self.idle_sleep_time) self.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', ALL_PROCESSES_OK) - def IdleSleep(self): - time.sleep(self.idle_sleep_time) - self.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', ALL_PROCESSES_OK) - def LogCollectBuild(self): if (self.eNBIPAddress != '' and self.eNBUserName != '' and self.eNBPassword != ''): IPAddress = self.eNBIPAddress @@ -2895,7 +2881,6 @@ class SSHConnection(): self.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap enb_*txt', '\$', 5) self.close() - def LogCollectPing(self): self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword) self.command('cd ' + self.EPCSourceCodePath, '\$', 5) @@ -2971,21 +2956,22 @@ class SSHConnection(): self.CpuNb = '4' self.CpuModel = 'Intel(R) Core(TM) i5-6200U' self.CpuMHz = '2399.996 MHz' - return - machine = None - if self.eNBIPAddress != '' and self.eNBUserName != '' and self.eNBPassword != '': - machine = 'eNB' - IPAddress = self.eNBIPAddress - UserName = self.eNBUserName - Password = self.eNBPassword - elif self.UEIPAddress != '' and self.UEUserName != '' and self.UEPassword != '': - machine = 'UE' - IPAddress = self.UEIPAddress - UserName = self.UEUserName - Password = self.UEPassword - if machine is None: - Usage() - sys.exit('Insufficient Parameter') + return 0 + if machine == 'eNB': + if self.eNBIPAddress != '' and self.eNBUserName != '' and self.eNBPassword != '': + IPAddress = self.eNBIPAddress + UserName = self.eNBUserName + Password = self.eNBPassword + else: + return -1 + if machine == 'UE': + if self.UEIPAddress != '' and self.UEUserName != '' and self.UEPassword != '': + IPAddress = self.UEIPAddress + UserName = self.UEUserName + Password = self.UEPassword + else: + return -1 + self.open(IPAddress, UserName, Password) self.command('lsb_release -a', '\$', 5) result = re.search('Description:\\\\t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)', str(self.ssh.before)) @@ -3002,7 +2988,7 @@ class SSHConnection(): if result is not None: self.UhdVersion = result.group('uhd_version') logging.debug('UHD Version is: ' + self.UhdVersion) - self.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 12) + self.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 15) result = re.search('product: (?P<usrp_board>[0-9A-Za-z]+)\\\\r\\\\n', str(self.ssh.before)) if result is not None: self.UsrpBoard = result.group('usrp_board') @@ -3240,17 +3226,19 @@ class SSHConnection(): elif (str(status) == 'KO'): if (processesStatus == 0): self.htmlFile.write(' <td bgcolor = "lightcoral" >' + str(status) + '</td>\n') - elif (processesStatus == ENB_PROCESS_FAILED) or (processesStatus == UE_PROCESS_FAILED): - self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process not found</td>\n') + elif (processesStatus == ENB_PROCESS_FAILED): + self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - eNB process not found</td>\n') + elif (processesStatus == OAI_UE_PROCESS_FAILED): + self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>\n') elif (processesStatus == ENB_PROCESS_SEG_FAULT): self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process ended in Segmentation Fault</td>\n') - elif (processesStatus == ENB_PROCESS_ASSERTION) or (processesStatus == UE_PROCESS_ASSERTION): + elif (processesStatus == ENB_PROCESS_ASSERTION) or (processesStatus == OAI_UE_PROCESS_ASSERTION): self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process ended in Assertion</td>\n') elif (processesStatus == ENB_PROCESS_REALTIME_ISSUE): self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process faced Real Time issue(s)</td>\n') - elif (processesStatus == ENB_PROCESS_NOLOGFILE_TO_ANALYZE) or (processesStatus == UE_PROCESS_NOLOGFILE_TO_ANALYZE): + elif (processesStatus == ENB_PROCESS_NOLOGFILE_TO_ANALYZE) or (processesStatus == OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE): self.htmlFile.write(' <td bgcolor = "orange" >OK?</td>\n') - elif (processesStatus == UE_PROCESS_COULD_NOT_SYNC): + elif (processesStatus == OAI_UE_PROCESS_COULD_NOT_SYNC): self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - UE could not sync</td>\n') elif (processesStatus == HSS_PROCESS_FAILED): self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - HSS process not found</td>\n') @@ -3365,9 +3353,6 @@ def Usage(): print(' --XMLTestFile=[XML Test File to be run]') print('------------------------------------------------------------') -#def GetModeFromXML(): -# SSH.mode = test.findtext('mode') - def CheckClassValidity(action,id): if action != 'Build_eNB' and action != 'Initialize_eNB' and action != 'Terminate_eNB' and action != 'Initialize_UE' and action != 'Terminate_UE' and action != 'Attach_UE' and action != 'Detach_UE' and action != 'Build_OAI_UE' and action != 'Initialize_OAI_UE' and action != 'Terminate_OAI_UE' and action != 'Initialize_OAI_eNB' and action != 'Ping' and action != 'Iperf' and action != 'Reboot_UE' and action != 'Initialize_HSS' and action != 'Terminate_HSS' and action != 'Initialize_MME' and action != 'Terminate_MME' and action != 'Initialize_SPGW' and action != 'Terminate_SPGW' and action != 'Initialize_CatM_module' and action != 'Terminate_CatM_module' and action != 'Attach_CatM_module' and action != 'Detach_CatM_module' and action != 'Ping_CatM_module' and action != 'IdleSleep': logging.debug('ERROR: test-case ' + id + ' has wrong class ' + action) @@ -3388,7 +3373,7 @@ def GetParametersFromXML(action): SSH.air_interface = 'lte' else: SSH.air_interface = SSH.air_interface.lower() - + if action == 'Terminate_eNB': SSH.eNB_instance = test.findtext('eNB_instance') if (SSH.eNB_instance is None): @@ -3492,9 +3477,6 @@ while len(argvs) > 1: sys.exit(0) elif re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE): matchReg = re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE) - #if matchReg and mode is not None: - #print('Warning: the mode is defined in both xml file and command line') - #print('ignoring the mode defined in the xml file') mode = matchReg.group(1) elif re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE): matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE) @@ -3678,7 +3660,7 @@ elif re.match('^FinalizeHtml$', mode, re.IGNORECASE): SSH.CreateHtmlFooter(SSH.finalStatus) elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re.IGNORECASE): if re.match('^TesteNB$', mode, re.IGNORECASE): - if (SSH.eNBRepository == '' or SSH.eNBBranch == '' or SSH.eNBSourceCodePath == ''): + if SSH.eNBIPAddress == '' or SSH.eNBRepository == '' or SSH.eNBBranch == '' or SSH.eNBUserName == '' or SSH.eNBPassword == '' or SSH.eNBSourceCodePath == '' or SSH.EPCIPAddress == '' or SSH.EPCUserName == '' or SSH.EPCPassword == '' or SSH.EPCType == '' or SSH.EPCSourceCodePath == '' or SSH.ADBIPAddress == '' or SSH.ADBUserName == '' or SSH.ADBPassword == '': Usage() sys.exit('Insufficient Parameter') if (SSH.eNBIPAddress == '' or SSH.eNBUserName == '' or SSH.eNBPassword == '') and (SSH.UEIPAddress == '' or SSH.UEUserName == '' or SSH.UEPassword == ''): @@ -3698,7 +3680,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re sys.exit('UE: Insufficient Parameter') #read test_case_list.xml file - # if no parameters for XML file, use default value + # if no parameters for XML file, use default value if (SSH.nbTestXMLfiles != 1): xml_test_file = cwd + "/test_case_list.xml" else: diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool index 7ce6becf865..60b6d5c5f8a 100755 --- a/ci-scripts/oai-ci-vm-tool +++ b/ci-scripts/oai-ci-vm-tool @@ -301,7 +301,7 @@ case $key in ARCHIVES_LOC=enb_eth LOG_PATTERN=.Rel15.txt NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" + BUILD_OPTIONS="--eNB -t ETHERNET" NBARGS=$[$NBARGS+256] shift ;; @@ -312,7 +312,7 @@ case $key in ARCHIVES_LOC=ue_eth LOG_PATTERN=.Rel15.txt NB_PATTERN_FILES=10 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" + BUILD_OPTIONS="--UE -t ETHERNET" NBARGS=$[$NBARGS+256] shift ;; @@ -374,7 +374,7 @@ case $key in LOG_PATTERN=.Rel15.txt NB_PATTERN_FILES=10 BUILD_OPTIONS="--phy_simulators" - VM_MEMORY=8192 + VM_MEMORY=8192 RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" NBARGS=$[$NBARGS+256] ;; @@ -410,7 +410,7 @@ case $key in ARCHIVES_LOC=enb_eth LOG_PATTERN=.Rel15.txt NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" + BUILD_OPTIONS="--eNB -t ETHERNET" NBARGS=$[$NBARGS+256] ;; ue-ethernet) @@ -420,7 +420,7 @@ case $key in ARCHIVES_LOC=ue_eth LOG_PATTERN=.Rel15.txt NB_PATTERN_FILES=10 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" + BUILD_OPTIONS="--UE -t ETHERNET" NBARGS=$[$NBARGS+256] ;; flexran-rtc) @@ -649,8 +649,6 @@ then echo "STATUS seems OK" exit $STATUS fi - # end to comment out for L1-simulator - # Comment out or delete the following lines if you want to run RF-simulator in your branch and/or merge request if [[ $VM_NAME =~ .*-rf-sim.* ]] then diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh index 8706d000e60..ee1a5ca43f2 100755 --- a/ci-scripts/reportBuildLocally.sh +++ b/ci-scripts/reportBuildLocally.sh @@ -557,20 +557,21 @@ function report_build { sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Expression depends on order of evaluation of side effects" unknownEvaluationOrder sca_summary_table_footer ./archives/cppcheck/cppcheck.xml - summary_table_header "OAI Build eNB -- USRP option" + summary_table_header "OAI Build eNB -- USRP option" ./archives/enb_usrp summary_table_row "LTE SoftModem - Release 15" ./archives/enb_usrp/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_row1.html summary_table_row "Coding - Release 15" ./archives/enb_usrp/coding.Rel15.txt "Built target coding" ./enb_usrp_row2.html summary_table_row "OAI USRP device if - Release 15" ./archives/enb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_row3.html - summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_row4.html + summary_table_row "OAI ETHERNET transport - Release 15" ./archives/enb_usrp/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./enb_usrp_row4.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_row5.html summary_table_footer - summary_table_header "OAI Build basic simulator option" + summary_table_header "OAI Build basic simulator option" ./archives/basic_sim summary_table_row "Basic Simulator eNb - Release 15" ./archives/basic_sim/basic_simulator_enb.txt "Built target lte-softmodem" ./basic_sim_row1.html summary_table_row "Basic Simulator UE - Release 15" ./archives/basic_sim/basic_simulator_ue.txt "Built target lte-uesoftmodem" ./basic_sim_row2.html summary_table_row "Conf 2 UE data - Release 15" ./archives/basic_sim/conf2uedata.Rel15.txt "Built target conf2uedata" ./basic_sim_row3.html summary_table_footer - summary_table_header "OAI Build Physical simulators option" + summary_table_header "OAI Build Physical simulators option" ./archives/phy_sim summary_table_row "DL Simulator - Release 15" ./archives/phy_sim/dlsim.Rel15.txt "Built target dlsim" ./phy_sim_row1.html summary_table_row "UL Simulator - Release 15" ./archives/phy_sim/ulsim.Rel15.txt "Built target ulsim" ./phy_sim_row2.html summary_table_row "Coding - Release 15" ./archives/phy_sim/coding.Rel15.txt "Built target coding" ./phy_sim_row3.html @@ -595,7 +596,7 @@ function report_build { if [ -f archives/gnb_usrp/nr-softmodem.Rel15.txt ] then - summary_table_header "OAI Build gNB -- USRP option" + summary_table_header "OAI Build gNB -- USRP option" ./archives/gnb_usrp summary_table_row "LTE SoftModem - Release 15" ./archives/gnb_usrp/nr-softmodem.Rel15.txt "Built target nr-softmodem" ./gnb_usrp_row1.html summary_table_row "Coding - Release 15" ./archives/gnb_usrp/coding.Rel15.txt "Built target coding" ./gnb_usrp_row2.html summary_table_row "OAI USRP device if - Release 15" ./archives/gnb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./gnb_usrp_row3.html @@ -605,7 +606,7 @@ function report_build { if [ -f archives/nrue_usrp/nr-uesoftmodem.Rel15.txt ] then - summary_table_header "OAI Build 5G NR UE -- USRP option" + summary_table_header "OAI Build 5G NR UE -- USRP option" ./archives/nrue_usrp summary_table_row "UE SoftModem - Release 15" ./archives/nrue_usrp/nr-uesoftmodem.Rel15.txt "Built target nr-uesoftmodem" ./nrue_usrp_row1.html summary_table_row "Coding - Release 15" ./archives/nrue_usrp/coding.Rel15.txt "Built target coding" ./nrue_usrp_row2.html summary_table_row "OAI USRP device if - Release 15" ./archives/nrue_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./nrue_usrp_row3.html @@ -613,29 +614,33 @@ function report_build { summary_table_footer fi - summary_table_header "OAI Build eNB -- ETHERNET transport option" - summary_table_row "LTE SoftModem w/o S1 - Release 15" ./archives/enb_eth/lte-softmodem-nos1.Rel15.txt "Built target lte-softmodem" ./enb_eth_row1.html + summary_table_header "OAI Build eNB -- ETHERNET transport option" ./archives/enb_eth + summary_table_row "LTE SoftModem - Release 15" ./archives/enb_eth/lte-softmodem-nos1.Rel15.txt "Built target lte-softmodem" ./enb_eth_row1.html summary_table_row "Coding - Release 15" ./archives/enb_eth/coding.Rel15.txt "Built target coding" ./enb_eth_row2.html summary_table_row "OAI ETHERNET transport - Release 15" ./archives/enb_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./enb_eth_row3.html summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_eth_row4.html - summary_table_row "RB Tools - Release 15" ./archives/enb_eth/rb_tool.Rel15.txt "Built target rb_tool" ./enb_eth_row5.html - summary_table_row "NAS Mesh - Release 15" ./archives/enb_eth/nasmesh.Rel15.txt "Built target nasmesh" ./enb_eth_row6.html + summary_table_row "RF Simulator - Release 15" ./archives/enb_eth/rfsimulator.Rel15.txt "Built target rfsimulator" ./enb_eth_row5.html + summary_table_row "TCP OAI Bridge - Release 15" ./archives/enb_eth/tcp_bridge_oai.Rel15.txt "Built target tcp_bridge_oai" ./enb_eth_row6.html summary_table_footer - summary_table_header "OAI Build UE -- ETHERNET transport option" - summary_table_row "LTE UE SoftModem w/o S1 - Release 15" ./archives/ue_eth/lte-uesoftmodem-nos1.Rel15.txt "Built target lte-uesoftmodem" ./ue_eth_row1.html + summary_table_header "OAI Build UE -- ETHERNET transport option" ./archives/ue_eth + summary_table_row "LTE UE SoftModem - Release 15" ./archives/ue_eth/lte-uesoftmodem.Rel15.txt "Built target lte-uesoftmodem" ./ue_eth_row1.html summary_table_row "Coding - Release 15" ./archives/ue_eth/coding.Rel15.txt "Built target coding" ./ue_eth_row2.html summary_table_row "OAI ETHERNET transport - Release 15" ./archives/ue_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./ue_eth_row3.html summary_table_row "Parameters Lib Config - Release 15" ./archives/ue_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./ue_eth_row4.html - summary_table_row "RB Tools - Release 15" ./archives/ue_eth/rb_tool.Rel15.txt "Built target rb_tool" ./ue_eth_row5.html - summary_table_row "NAS Mesh - Release 15" ./archives/ue_eth/nasmesh.Rel15.txt "Built target nasmesh" ./ue_eth_row6.html + summary_table_row "RF Simulator - Release 15" ./archives/ue_eth/rfsimulator.Rel15.txt "Built target rfsimulator" ./ue_eth_row5.html + summary_table_row "TCP OAI Bridge - Release 15" ./archives/ue_eth/tcp_bridge_oai.Rel15.txt "Built target tcp_bridge_oai" ./ue_eth_row6.html + summary_table_row "Conf 2 UE Data - Release 15" ./archives/ue_eth/conf2uedata.Rel15.txt "Built target conf2uedata" ./ue_eth_row7.html + summary_table_row "NVRAM - Release 15" ./archives/ue_eth/nvram.Rel15.txt "Built target nvram" ./ue_eth_row8.html + summary_table_row "UE IP - Release 15" ./archives/ue_eth/ue_ip.Rel15.txt "Built target ue_ip" ./ue_eth_row9.html + summary_table_row "USIM - Release 15" ./archives/ue_eth/usim.Rel15.txt "Built target usim" ./ue_eth_row9a.html summary_table_footer if [ -e ./archives/red_hat ] then - echo " <h2>Red Hat (CentOS Linux release 7.4.1708) -- Summary</h2>" >> ./build_results.html + echo " <h2>Red Hat Enterprise Linux Server release 7.6) -- Summary</h2>" >> ./build_results.html - summary_table_header "Red Hat -- OAI Build eNB -- USRP option" + summary_table_header "Red Hat -- OAI Build eNB -- USRP option" ./archives/red_hat summary_table_row "LTE SoftModem - Release 15" ./archives/red_hat/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_rh_row1.html summary_table_row "Coding - Release 15" ./archives/red_hat/coding.Rel15.txt "Built target coding" ./enb_usrp_rh_row2.html summary_table_row "OAI USRP device if - Release 15" ./archives/red_hat/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_rh_row3.html diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh index 9b4b8008aa1..e4195edde06 100755 --- a/ci-scripts/reportTestLocally.sh +++ b/ci-scripts/reportTestLocally.sh @@ -402,7 +402,6 @@ function report_test { echo " </pre></td>" >> ./test_simulator_results.html echo " </tr>" >> ./test_simulator_results.html fi - PING_LOGS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_ping_ue.txt 2> /dev/null` analyzePingFiles diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index f8958b9d1d1..95e712c2c44 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -467,12 +467,12 @@ function install_epc_on_vm { if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim-develop.zip ] then echo "############################################################" - echo "Destroying VM" + echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox" echo "############################################################" - uvt-kvm destroy $VM_NAME - ssh-keygen -R $VM_IP_ADDR + LTEBOX=1 fi - rm -f $VM_CMDS + fi + # Here we could have other types of EPC detection # Do we need to start the EPC VM echo "EPC_VM_CMD_FILE = $LOC_EPC_VM_CMDS" @@ -606,10 +606,9 @@ function start_epc { CONNECTED=`ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS` if [ $CONNECTED -eq 1 ] then - echo "############################################################" - echo "Doing some adaptation on UE side" - echo "############################################################" - ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt + i="100" + else + i=$[$i+1] fi done rm $LOC_EPC_VM_CMDS @@ -619,15 +618,9 @@ function start_epc { echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log exit -1 fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + fi - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=fdd_05MHz_ping_ue.txt - 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 + # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC } diff --git a/ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml b/ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml deleted file mode 100644 index 9a96baac3fd..00000000000 --- a/ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml +++ /dev/null @@ -1,119 +0,0 @@ -<!-- - - Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The OpenAirInterface Software Alliance licenses this file to You under - the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698 - - 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. - - For more information about the OpenAirInterface (OAI) Software Alliance: - contact@openairinterface.org - ---> -<testCaseList> - <htmlTabRef>test-20-tm1</htmlTabRef> - <htmlTabName>Test-20MHz-TM1</htmlTabName> - <htmlTabIcon>tasks</htmlTabIcon> - <TestCaseRequestedList> - 040101 - 030124 040301 040521 040622 040621 040623 040662 040661 040663 040401 040201 030201 - </TestCaseRequestedList> - <TestCaseExclusionList></TestCaseExclusionList> - - <testCase id="030124"> - <class>Initialize_eNB</class> - <desc>Initialize eNB (TDD/Band40/20MHz/info)</desc> - <Initialize_eNB_args>-O ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf</Initialize_eNB_args> - </testCase> - - <testCase id="030201"> - <class>Terminate_eNB</class> - <desc>Terminate eNB</desc> - </testCase> - - <testCase id="040101"> - <class>Initialize_UE</class> - <desc>Initialize UE</desc> - </testCase> - - <testCase id="040201"> - <class>Terminate_UE</class> - <desc>Terminate UE</desc> - </testCase> - - <testCase id="040301"> - <class>Attach_UE</class> - <desc>Attach UE</desc> - </testCase> - - <testCase id="040401"> - <class>Detach_UE</class> - <desc>Detach UE</desc> - </testCase> - - <testCase id="040521"> - <class>Ping</class> - <desc>ping (20MHz - 20 sec)</desc> - <ping_args>-c 20</ping_args> - <ping_packetloss_threshold>25</ping_packetloss_threshold> - </testCase> - - <testCase id="040621"> - <class>Iperf</class> - <desc>iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)</desc> - <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>balanced</iperf_profile> - </testCase> - - <testCase id="040622"> - <class>Iperf</class> - <desc>iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)</desc> - <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>single-ue</iperf_profile> - </testCase> - - <testCase id="040623"> - <class>Iperf</class> - <desc>iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced)</desc> - <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>unbalanced</iperf_profile> - </testCase> - - <testCase id="040661"> - <class>Iperf</class> - <desc>iperf (20MHz - UL/2Mbps/UDP)(30 sec)(balanced)</desc> - <iperf_args>-u -b 2M -t 30 -i 1 -R</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>balanced</iperf_profile> - </testCase> - - <testCase id="040662"> - <class>Iperf</class> - <desc>iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)</desc> - <iperf_args>-u -b 2M -t 30 -i 1 -R</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>single-ue</iperf_profile> - </testCase> - - <testCase id="040663"> - <class>Iperf</class> - <desc>iperf (20MHz - UL/2Mbps/UDP)(30 sec)(unbalanced)</desc> - <iperf_args>-u -b 2M -t 30 -i 1 -R</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>unbalanced</iperf_profile> - </testCase> - -</testCaseList> diff --git a/ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml b/ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml deleted file mode 100644 index 150515757f9..00000000000 --- a/ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml +++ /dev/null @@ -1,110 +0,0 @@ -<!-- - - Licensed to the OpenAirInterface (OAI) Software Alliance under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The OpenAirInterface Software Alliance licenses this file to You under - the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698 - - 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. - - For more information about the OpenAirInterface (OAI) Software Alliance: - contact@openairinterface.org - ---> -<testCaseList> - <htmlTabRef>test-20</htmlTabRef> - <htmlTabName>Test-20MHz</htmlTabName> - <htmlTabIcon>tasks</htmlTabIcon> - <TestCaseRequestedList> - 000001 - </TestCaseRequestedList> - <TestCaseExclusionList> - 040101 - 030124 030125 040301 040521 040622 040662 040401 040201 030201 030202 - </TestCaseExclusionList> - - <testCase id="000001"> - <class>IdleSleep</class> - <desc>No Test in IF4.5 for FDD-20MHz</desc> - <idle_sleep_time_in_sec>10</idle_sleep_time_in_sec> - </testCase> - - <testCase id="030124"> - <class>Initialize_eNB</class> - <desc>Initialize RRU (TDD/Band40)</desc> - <Initialize_eNB_args>-O ci-scripts/conf_files/rru.tdd.band40.conf</Initialize_eNB_args> - <eNB_instance>0</eNB_instance> - </testCase> - - <testCase id="030125"> - <class>Initialize_eNB</class> - <desc>Initialize RCC (TDD/Band40/20MHz/info)</desc> - <Initialize_eNB_args>-O ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf</Initialize_eNB_args> - <eNB_instance>1</eNB_instance> - </testCase> - - <testCase id="030201"> - <class>Terminate_eNB</class> - <desc>Terminate RCC</desc> - <eNB_instance>1</eNB_instance> - </testCase> - - <testCase id="030202"> - <class>Terminate_eNB</class> - <desc>Terminate RRU</desc> - <eNB_instance>0</eNB_instance> - </testCase> - - <testCase id="040101"> - <class>Initialize_UE</class> - <desc>Initialize UE</desc> - </testCase> - - <testCase id="040201"> - <class>Terminate_UE</class> - <desc>Terminate UE</desc> - </testCase> - - <testCase id="040301"> - <class>Attach_UE</class> - <desc>Attach UE</desc> - </testCase> - - <testCase id="040401"> - <class>Detach_UE</class> - <desc>Detach UE</desc> - </testCase> - - <testCase id="040521"> - <class>Ping</class> - <desc>ping (20MHz - 20 sec)</desc> - <ping_args>-c 20</ping_args> - <ping_packetloss_threshold>25</ping_packetloss_threshold> - </testCase> - - <testCase id="040622"> - <class>Iperf</class> - <desc>iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)</desc> - <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>single-ue</iperf_profile> - </testCase> - - <testCase id="040662"> - <class>Iperf</class> - <desc>iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)</desc> - <iperf_args>-u -b 2M -t 30 -i 1 -R</iperf_args> - <iperf_packetloss_threshold>50</iperf_packetloss_threshold> - <iperf_profile>single-ue</iperf_profile> - </testCase> - -</testCaseList> -- GitLab