CI: improving 5G-NR framework
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
+37
-11
@@ -56,6 +56,7 @@ OAI_UE_PROCESS_COULD_NOT_SYNC = -21
|
|||||||
OAI_UE_PROCESS_ASSERTION = -22
|
OAI_UE_PROCESS_ASSERTION = -22
|
||||||
OAI_UE_PROCESS_FAILED = -23
|
OAI_UE_PROCESS_FAILED = -23
|
||||||
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE = -24
|
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE = -24
|
||||||
|
OAI_UE_PROCESS_SEG_FAULT = -25
|
||||||
OAI_UE_PROCESS_OK = +6
|
OAI_UE_PROCESS_OK = +6
|
||||||
|
|
||||||
UE_STATUS_DETACHED = 0
|
UE_STATUS_DETACHED = 0
|
||||||
@@ -987,14 +988,20 @@ class SSHConnection():
|
|||||||
tunnelInterfaceStatus = False
|
tunnelInterfaceStatus = False
|
||||||
else:
|
else:
|
||||||
tunnelInterfaceStatus = True
|
tunnelInterfaceStatus = True
|
||||||
|
else:
|
||||||
|
tunnelInterfaceStatus = True
|
||||||
|
|
||||||
self.close()
|
self.close()
|
||||||
if fullSyncStatus and gotSyncStatus and tunnelInterfaceStatus:
|
if fullSyncStatus and gotSyncStatus and tunnelInterfaceStatus:
|
||||||
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'OK', ALL_PROCESSES_OK, 'OAI UE')
|
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('\u001B[1m Initialize OAI UE Completed\u001B[0m')
|
||||||
else:
|
else:
|
||||||
self.htmlUEFailureMsg = 'oaitun_ue1 interface is either NOT mounted or NOT configured'
|
if self.air_interface == 'lte':
|
||||||
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE')
|
self.htmlUEFailureMsg = 'oaitun_ue1 interface is either NOT mounted or NOT configured'
|
||||||
|
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE')
|
||||||
|
else:
|
||||||
|
self.htmlUEFailureMsg = 'nr-uesoftmodem did NOT synced'
|
||||||
|
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', OAI_UE_PROCESS_COULD_NOT_SYNC, 'OAI UE')
|
||||||
logging.error('\033[91mInitialize OAI UE Failed! \033[0m')
|
logging.error('\033[91mInitialize OAI UE Failed! \033[0m')
|
||||||
self.AutoTerminateUEandeNB()
|
self.AutoTerminateUEandeNB()
|
||||||
|
|
||||||
@@ -3134,6 +3141,10 @@ class SSHConnection():
|
|||||||
statMsg = 'UE showed ' + str(nrCRCOK) + ' PDSCH decoding message(s)'
|
statMsg = 'UE showed ' + str(nrCRCOK) + ' PDSCH decoding message(s)'
|
||||||
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
||||||
self.htmlUEFailureMsg += statMsg + '\n'
|
self.htmlUEFailureMsg += statMsg + '\n'
|
||||||
|
if not frequency_found:
|
||||||
|
statMsg = 'NR-UE could NOT synch!'
|
||||||
|
logging.error('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
||||||
|
self.htmlUEFailureMsg += statMsg + '\n'
|
||||||
if uciStatMsgCount > 0:
|
if uciStatMsgCount > 0:
|
||||||
statMsg = 'UE showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)'
|
statMsg = 'UE 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')
|
||||||
@@ -3148,20 +3159,32 @@ class SSHConnection():
|
|||||||
self.htmlUEFailureMsg += statMsg + '\n'
|
self.htmlUEFailureMsg += statMsg + '\n'
|
||||||
if foundSegFault:
|
if foundSegFault:
|
||||||
logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m')
|
logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m')
|
||||||
return ENB_PROCESS_SEG_FAULT
|
if not nrUEFlag:
|
||||||
|
return OAI_UE_PROCESS_SEG_FAULT
|
||||||
|
else:
|
||||||
|
if not frequency_found:
|
||||||
|
return OAI_UE_PROCESS_SEG_FAULT
|
||||||
if foundAssertion:
|
if foundAssertion:
|
||||||
logging.debug('\u001B[1;30;43m UE showed an assertion! \u001B[0m')
|
logging.debug('\u001B[1;30;43m UE showed an assertion! \u001B[0m')
|
||||||
self.htmlUEFailureMsg += 'UE showed an assertion!\n'
|
self.htmlUEFailureMsg += 'UE showed an assertion!\n'
|
||||||
if not mib_found or not frequency_found:
|
if not nrUEFlag:
|
||||||
return OAI_UE_PROCESS_ASSERTION
|
if not mib_found or not frequency_found:
|
||||||
|
return OAI_UE_PROCESS_ASSERTION
|
||||||
|
else:
|
||||||
|
if not frequency_found:
|
||||||
|
return OAI_UE_PROCESS_ASSERTION
|
||||||
if foundRealTimeIssue:
|
if foundRealTimeIssue:
|
||||||
logging.debug('\u001B[1;37;41m UE faced real time issues! \u001B[0m')
|
logging.debug('\u001B[1;37;41m UE faced real time issues! \u001B[0m')
|
||||||
self.htmlUEFailureMsg += 'UE faced real time issues!\n'
|
self.htmlUEFailureMsg += 'UE faced real time issues!\n'
|
||||||
#return ENB_PROCESS_REALTIME_ISSUE
|
#return ENB_PROCESS_REALTIME_ISSUE
|
||||||
if no_cell_sync_found and not mib_found:
|
if nrUEFlag:
|
||||||
logging.debug('\u001B[1;37;41m UE could not synchronize ! \u001B[0m')
|
if not frequency_found:
|
||||||
self.htmlUEFailureMsg += 'UE could not synchronize!\n'
|
return OAI_UE_PROCESS_COULD_NOT_SYNC
|
||||||
return OAI_UE_PROCESS_COULD_NOT_SYNC
|
else:
|
||||||
|
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 OAI_UE_PROCESS_COULD_NOT_SYNC
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def TerminateeNB(self):
|
def TerminateeNB(self):
|
||||||
@@ -3384,13 +3407,16 @@ class SSHConnection():
|
|||||||
logging.debug('\u001B[1m' + ueAction + ' Failed \u001B[0m')
|
logging.debug('\u001B[1m' + ueAction + ' Failed \u001B[0m')
|
||||||
self.htmlUEFailureMsg = '<b>' + ueAction + ' Failed</b>\n' + self.htmlUEFailureMsg
|
self.htmlUEFailureMsg = '<b>' + ueAction + ' Failed</b>\n' + self.htmlUEFailureMsg
|
||||||
self.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE')
|
self.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE')
|
||||||
# for NR-UE at the moment keep running
|
|
||||||
if self.air_interface == 'lte':
|
if self.air_interface == 'lte':
|
||||||
# In case of sniffing on commercial eNBs we have random results
|
# In case of sniffing on commercial eNBs we have random results
|
||||||
# Not an error then
|
# Not an error then
|
||||||
if (logStatus != OAI_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.Initialize_OAI_UE_args = ''
|
||||||
self.AutoTerminateUEandeNB()
|
self.AutoTerminateUEandeNB()
|
||||||
|
else:
|
||||||
|
if (logStatus == OAI_UE_PROCESS_COULD_NOT_SYNC):
|
||||||
|
self.Initialize_OAI_UE_args = ''
|
||||||
|
self.AutoTerminateUEandeNB()
|
||||||
else:
|
else:
|
||||||
logging.debug('\u001B[1m' + ueAction + ' Completed \u001B[0m')
|
logging.debug('\u001B[1m' + ueAction + ' Completed \u001B[0m')
|
||||||
self.htmlUEFailureMsg = '<b>' + ueAction + ' Completed</b>\n' + self.htmlUEFailureMsg
|
self.htmlUEFailureMsg = '<b>' + ueAction + ' Completed</b>\n' + self.htmlUEFailureMsg
|
||||||
@@ -3943,7 +3969,7 @@ class SSHConnection():
|
|||||||
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - eNB process not found</td>\n')
|
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - eNB process not found</td>\n')
|
||||||
elif (processesStatus == OAI_UE_PROCESS_FAILED):
|
elif (processesStatus == OAI_UE_PROCESS_FAILED):
|
||||||
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>\n')
|
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>\n')
|
||||||
elif (processesStatus == ENB_PROCESS_SEG_FAULT):
|
elif (processesStatus == ENB_PROCESS_SEG_FAULT) or (processesStatus == OAI_UE_PROCESS_SEG_FAULT):
|
||||||
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process ended in Segmentation Fault</td>\n')
|
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process ended in Segmentation Fault</td>\n')
|
||||||
elif (processesStatus == ENB_PROCESS_ASSERTION) or (processesStatus == OAI_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')
|
self.htmlFile.write(' <td bgcolor = "lightcoral" >KO - ' + machine + ' process ended in Assertion</td>\n')
|
||||||
|
|||||||
@@ -24,8 +24,9 @@
|
|||||||
<htmlTabRef>run-OAI-gNB-NR-UE-USRP</htmlTabRef>
|
<htmlTabRef>run-OAI-gNB-NR-UE-USRP</htmlTabRef>
|
||||||
<htmlTabName>run OAI gNB and OAI NR UE USRP</htmlTabName>
|
<htmlTabName>run OAI gNB and OAI NR UE USRP</htmlTabName>
|
||||||
<htmlTabIcon>tasks</htmlTabIcon>
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>4</repeatCount>
|
||||||
<TestCaseRequestedList>
|
<TestCaseRequestedList>
|
||||||
090101
|
090101 000001 090102 000002 090108 090109
|
||||||
</TestCaseRequestedList>
|
</TestCaseRequestedList>
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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>run-OAI-gNB-NR-UE-USRP</htmlTabRef>
|
||||||
|
<htmlTabName>run OAI gNB and OAI NR UE USRP</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
090108 090109
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="090108">
|
||||||
|
<class>Terminate_OAI_UE</class>
|
||||||
|
<desc>Terminate NR UE</desc>
|
||||||
|
<air_interface>NR</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="090109">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate gNB</desc>
|
||||||
|
<air_interface>NR</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
Reference in New Issue
Block a user