Commit 6eb5d8c9 authored by Raphael Defosseux's avatar Raphael Defosseux

CI: fix a few more things

Signed-off-by: default avatarRaphael Defosseux <raphael.defosseux@eurecom.fr>
parent 39a5ddf5
...@@ -369,6 +369,8 @@ class HTMLManagement(): ...@@ -369,6 +369,8 @@ class HTMLManagement():
self.htmlFile.close() self.htmlFile.close()
def CreateHtmlTestRow(self, options, status, processesStatus, machine='eNB'): def CreateHtmlTestRow(self, options, status, processesStatus, machine='eNB'):
if (self.htmlFooterCreated or (not self.htmlHeaderCreated)):
return
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
currentTime = int(round(time.time() * 1000)) - self.startTime currentTime = int(round(time.time() * 1000)) - self.startTime
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
......
...@@ -353,7 +353,7 @@ class OaiCiTest(): ...@@ -353,7 +353,7 @@ class OaiCiTest():
SSH.command('sed -e "s#93#92#" -e "s#8baf473f2f8fd09487cccbd7097c6862#fec86ba6eb707ed08905757b1bb44b8f#" -e "s#e734f8734007d6c5ce7a0508809e7e9c#C42449363BBAD02B66D16BC975D77CC1#" ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf > ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf', '\$', 5) SSH.command('sed -e "s#93#92#" -e "s#8baf473f2f8fd09487cccbd7097c6862#fec86ba6eb707ed08905757b1bb44b8f#" -e "s#e734f8734007d6c5ce7a0508809e7e9c#C42449363BBAD02B66D16BC975D77CC1#" ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf > ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf', '\$', 5)
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf .u*', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf .u*', '\$', 5)
SSH.command('echo ' + self.UEPassword + ' | sudo -S ../../../targets/bin/conf2uedata -c ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf -o .', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S ../../../targets/bin/conf2uedata -c ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf -o .', '\$', 5)
SSH.command('echo "ulimit -c unlimited && ./'+ RAN.Getair_interface() +'-uesoftmodem ' + self.Initialize_OAI_UE_args + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) SSH.command('echo "ulimit -c unlimited && ./'+ RAN.Getair_interface() +'-uesoftmodem ' + modifiedUeOptions + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
SSH.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) SSH.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5)
self.UELogFile = 'ue_' + self.testCase_id + '.log' self.UELogFile = 'ue_' + self.testCase_id + '.log'
...@@ -451,7 +451,7 @@ class OaiCiTest(): ...@@ -451,7 +451,7 @@ class OaiCiTest():
logging.debug(SSH.getBefore()) logging.debug(SSH.getBefore())
logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m') logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m')
tunnelInterfaceStatus = False tunnelInterfaceStatus = False
if RAN.GeteNBmbmsEnables[0]: if RAN.GeteNBmbmsEnable(0):
self.command('ifconfig oaitun_uem1', '\$', 4) self.command('ifconfig oaitun_uem1', '\$', 4)
result = re.search('inet addr', SSH.getBefore()) result = re.search('inet addr', SSH.getBefore())
if result is not None: if result is not None:
...@@ -476,7 +476,7 @@ class OaiCiTest(): ...@@ -476,7 +476,7 @@ class OaiCiTest():
self.UEDevicesStatus.append(CONST.UE_STATUS_DETACHED) self.UEDevicesStatus.append(CONST.UE_STATUS_DETACHED)
else: else:
if RAN.Getair_interface() == 'lte': if RAN.Getair_interface() == 'lte':
if RAN.GeteNBmbmsEnables[0]: if RAN.GeteNBmbmsEnable(0):
HTML.SethtmlUEFailureMsg('oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured') HTML.SethtmlUEFailureMsg('oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured')
else: else:
HTML.SethtmlUEFailureMsg('oaitun_ue1 interface is either NOT mounted or NOT configured') HTML.SethtmlUEFailureMsg('oaitun_ue1 interface is either NOT mounted or NOT configured')
...@@ -2316,13 +2316,13 @@ class OaiCiTest(): ...@@ -2316,13 +2316,13 @@ class OaiCiTest():
if (status < 0): if (status < 0):
result = status result = status
if result == CONST.ENB_PROCESS_FAILED: if result == CONST.ENB_PROCESS_FAILED:
fileCheck = re.search('enb_', str(RAN.GeteNBLogFiles[0])) fileCheck = re.search('enb_', str(RAN.GeteNBLogFile(0)))
if fileCheck is not None: if fileCheck is not None:
SSH.copyin(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword(), RAN.GeteNBSourceCodePath() + '/cmake_targets/' + RAN.GeteNBLogFiles[0], '.') SSH.copyin(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword(), RAN.GeteNBSourceCodePath() + '/cmake_targets/' + RAN.GeteNBLogFile(0), '.')
logStatus = self.AnalyzeLogFile_eNB(RAN.GeteNBLogFiles[0]) logStatus = RAN.AnalyzeLogFile_eNB(RAN.GeteNBLogFile[0])
if logStatus < 0: if logStatus < 0:
result = logStatus result = logStatus
RAN.SeteNBLogFiles[0] = '' RAN.SeteNBLogFile('', 0)
if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted(): if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted():
self.TerminateFlexranCtrl() self.TerminateFlexranCtrl()
return result return result
...@@ -2457,7 +2457,7 @@ class OaiCiTest(): ...@@ -2457,7 +2457,7 @@ class OaiCiTest():
result = re.search('No cell synchronization found, abandoning', str(line)) result = re.search('No cell synchronization found, abandoning', str(line))
if result is not None: if result is not None:
no_cell_sync_found = True no_cell_sync_found = True
if RAN.GeteNBmbmsEnables[0]: if RAN.GeteNBmbmsEnable(0):
result = re.search('TRIED TO PUSH MBMS DATA', str(line)) result = re.search('TRIED TO PUSH MBMS DATA', str(line))
if result is not None: if result is not None:
mbms_messages += 1 mbms_messages += 1
...@@ -2583,7 +2583,7 @@ class OaiCiTest(): ...@@ -2583,7 +2583,7 @@ class OaiCiTest():
statMsg = 'UE showed ' + str(fatalErrorCount) + ' "MAC BSR Triggered ReTxBSR Timer expiry" message(s)' statMsg = 'UE showed ' + str(fatalErrorCount) + ' "MAC BSR Triggered ReTxBSR Timer expiry" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n')
if RAN.GeteNBmbmsEnables[0]: if RAN.GeteNBmbmsEnable(0):
if mbms_messages > 0: if mbms_messages > 0:
statMsg = 'UE showed ' + str(mbms_messages) + ' "TRIED TO PUSH MBMS DATA" message(s)' statMsg = 'UE showed ' + str(mbms_messages) + ' "TRIED TO PUSH MBMS DATA" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
...@@ -3075,6 +3075,7 @@ def GetParametersFromXML(action): ...@@ -3075,6 +3075,7 @@ def GetParametersFromXML(action):
CiTestObj.air_interface = 'lte' CiTestObj.air_interface = 'lte'
else: else:
CiTestObj.air_interface = CiTestObj.air_interface.lower() CiTestObj.air_interface = CiTestObj.air_interface.lower()
RAN.Setair_interface(CiTestObj.air_interface)
if action == 'Terminate_eNB': if action == 'Terminate_eNB':
RAN.SeteNB_instance(test.findtext('eNB_instance')) RAN.SeteNB_instance(test.findtext('eNB_instance'))
...@@ -3088,6 +3089,7 @@ def GetParametersFromXML(action): ...@@ -3088,6 +3089,7 @@ def GetParametersFromXML(action):
CiTestObj.air_interface = 'lte' CiTestObj.air_interface = 'lte'
else: else:
CiTestObj.air_interface = CiTestObj.air_interface.lower() CiTestObj.air_interface = CiTestObj.air_interface.lower()
RAN.Setair_interface(CiTestObj.air_interface)
if action == 'Attach_UE': if action == 'Attach_UE':
nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach') nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach')
...@@ -3120,7 +3122,7 @@ def GetParametersFromXML(action): ...@@ -3120,7 +3122,7 @@ def GetParametersFromXML(action):
if (CiTestObj.air_interface is None): if (CiTestObj.air_interface is None):
CiTestObj.air_interface = 'lte' CiTestObj.air_interface = 'lte'
else: else:
CiTestObj.air_interface = SSH.air_interface.lower() CiTestObj.air_interface = CiTestObj.air_interface.lower()
if action == 'Terminate_OAI_UE': if action == 'Terminate_OAI_UE':
RAN.SeteNB_instance(test.findtext('UE_instance')) RAN.SeteNB_instance(test.findtext('UE_instance'))
...@@ -3378,17 +3380,17 @@ elif re.match('^TerminateHSS$', mode, re.IGNORECASE): ...@@ -3378,17 +3380,17 @@ elif re.match('^TerminateHSS$', mode, re.IGNORECASE):
if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '':
GenericHelp(Version) GenericHelp(Version)
sys.exit('Insufficient Parameter') sys.exit('Insufficient Parameter')
CiTestObj.TerminateHSS() EPC.TerminateHSS()
elif re.match('^TerminateMME$', mode, re.IGNORECASE): elif re.match('^TerminateMME$', mode, re.IGNORECASE):
if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '':
GenericHelp(Version) GenericHelp(Version)
sys.exit('Insufficient Parameter') sys.exit('Insufficient Parameter')
CiTestObj.TerminateMME() EPC.TerminateMME()
elif re.match('^TerminateSPGW$', mode, re.IGNORECASE): elif re.match('^TerminateSPGW$', mode, re.IGNORECASE):
if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '':
GenericHelp(Version) GenericHelp(Version)
sys.exit('Insufficient Parameter') sys.exit('Insufficient Parameter')
CiTestObj.TerminateSPGW() EPC.TerminateSPGW()
elif re.match('^LogCollectBuild$', mode, re.IGNORECASE): elif re.match('^LogCollectBuild$', mode, re.IGNORECASE):
if (RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '') and (CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '' or CiTestObj.UESourceCodePath == ''): if (RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '') and (CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '' or CiTestObj.UESourceCodePath == ''):
GenericHelp(Version) GenericHelp(Version)
...@@ -3398,7 +3400,7 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE): ...@@ -3398,7 +3400,7 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE):
if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '': if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '':
GenericHelp(Version) GenericHelp(Version)
sys.exit('Insufficient Parameter') sys.exit('Insufficient Parameter')
CiTestObj.LogCollecteNB() RAN.LogCollecteNB()
elif re.match('^LogCollectHSS$', mode, re.IGNORECASE): elif re.match('^LogCollectHSS$', mode, re.IGNORECASE):
if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '':
GenericHelp(Version) GenericHelp(Version)
...@@ -3555,7 +3557,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re ...@@ -3555,7 +3557,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
CiTestObj.FailReportCnt = 0 CiTestObj.FailReportCnt = 0
RAN.SetprematureExit(True) RAN.SetprematureExit(True)
HTML.SetstartTime(int(round(time.time() * 1000)) HTML.SetstartTime(int(round(time.time() * 1000)))
while CiTestObj.FailReportCnt < CiTestObj.repeatCounts[0] and RAN.GetprematureExit(): while CiTestObj.FailReportCnt < CiTestObj.repeatCounts[0] and RAN.GetprematureExit():
RAN.SetprematureExit(False) RAN.SetprematureExit(False)
# At every iteratin of the retry loop, a separator will be added # At every iteratin of the retry loop, a separator will be added
......
...@@ -179,15 +179,13 @@ class RANManagement(): ...@@ -179,15 +179,13 @@ class RANManagement():
def GeteNB_instance(self): def GeteNB_instance(self):
return self.eNB_instance return self.eNB_instance
def SeteNBLogFiles(self, enblogs): def SeteNBLogFile(self, enblog, idx):
self.eNBLogFiles = enblogs self.eNBLogFiles[idx] = enblog
def GeteNBLogFiles(self): def GeteNBLogFile(self, idx):
return self.eNBLogFiles return self.eNBLogFiles[idx]
def SeteNBmbmsEnables(self, enbmbms): def GeteNBmbmsEnable(self, idx):
self.eNBmbmsEnables = enbmbms return self.eNBmbmsEnables[idx]
def GeteNBmbmsEnables(self):
return self.eNBmbmsEnables
def SeteNB1IPAddress(self,enb1ip): def SeteNB1IPAddress(self,enb1ip):
self.eNB1IPAddress = enb1ip self.eNB1IPAddress = enb1ip
...@@ -802,6 +800,7 @@ class RANManagement(): ...@@ -802,6 +800,7 @@ class RANManagement():
uciStatMsgCount = 0 uciStatMsgCount = 0
pdcpFailure = 0 pdcpFailure = 0
ulschFailure = 0 ulschFailure = 0
ulschReceiveOK = 0
cdrxActivationMessageCount = 0 cdrxActivationMessageCount = 0
dropNotEnoughRBs = 0 dropNotEnoughRBs = 0
mbmsRequestMsg = 0 mbmsRequestMsg = 0
...@@ -914,6 +913,9 @@ class RANManagement(): ...@@ -914,6 +913,9 @@ class RANManagement():
result = re.search('ULSCH in error in round', str(line)) result = re.search('ULSCH in error in round', str(line))
if result is not None: if result is not None:
ulschFailure += 1 ulschFailure += 1
result = re.search('ULSCH received ok', str(line))
if result is not None:
ulschReceiveOK += 1
result = re.search('BAD all_segments_received', str(line)) result = re.search('BAD all_segments_received', str(line))
if result is not None: if result is not None:
rlcDiscardBuffer += 1 rlcDiscardBuffer += 1
...@@ -933,6 +935,11 @@ class RANManagement(): ...@@ -933,6 +935,11 @@ class RANManagement():
nodeB_prefix = 'e' nodeB_prefix = 'e'
else: else:
nodeB_prefix = 'g' nodeB_prefix = 'g'
if self.air_interface == 'nr':
if ulschReceiveOK > 0:
statMsg = nodeB_prefix + 'NB showed ' + str(ulschReceiveOK) + ' "ULSCH received ok" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
htmleNBFailureMsg += statMsg + '\n'
if uciStatMsgCount > 0: if uciStatMsgCount > 0:
statMsg = nodeB_prefix + 'NB showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)' statMsg = nodeB_prefix + 'NB showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment