feat(ci): adding support for 5G Core (sabox only for the moment)
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
+56
-8
@@ -62,6 +62,7 @@ class EPCManagement():
|
|||||||
self.PcapFileName = ''
|
self.PcapFileName = ''
|
||||||
self.testCase_id = ''
|
self.testCase_id = ''
|
||||||
self.MmeIPAddress = ''
|
self.MmeIPAddress = ''
|
||||||
|
self.AmfIPAddress = ''
|
||||||
self.containerPrefix = 'prod'
|
self.containerPrefix = 'prod'
|
||||||
self.mmeConfFile = 'mme.conf'
|
self.mmeConfFile = 'mme.conf'
|
||||||
self.yamlPath = ''
|
self.yamlPath = ''
|
||||||
@@ -211,6 +212,37 @@ class EPCManagement():
|
|||||||
mySSH.close()
|
mySSH.close()
|
||||||
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
|
def Initialize5GCN(self, HTML):
|
||||||
|
if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.SourceCodePath == '' or self.Type == '':
|
||||||
|
HELP.GenericHelp(CONST.Version)
|
||||||
|
HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type)
|
||||||
|
sys.exit('Insufficient EPC Parameters')
|
||||||
|
mySSH = SSH.SSHConnection()
|
||||||
|
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||||
|
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
|
logging.debug('Using the sabox simulated HSS')
|
||||||
|
mySSH.command('if [ -d ' + self.SourceCodePath + '/scripts ]; then echo ' + self.Password + ' | sudo -S rm -Rf ' + self.SourceCodePath + '/scripts ; fi', '\$', 5)
|
||||||
|
mySSH.command('mkdir -p ' + self.SourceCodePath + '/scripts', '\$', 5)
|
||||||
|
mySSH.command('cd /opt/hss_sim0609', '\$', 5)
|
||||||
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm -f hss.log', '\$', 5)
|
||||||
|
mySSH.command('echo ' + self.Password + ' | sudo -S echo "Starting sudo session" && sudo su -c "screen -dm -S simulated_5g_hss ./start_5g_hss"', '\$', 5)
|
||||||
|
logging.debug('Using the sabox')
|
||||||
|
mySSH.command('cd /opt/ltebox/tools', '\$', 5)
|
||||||
|
mySSH.command('echo ' + self.Password + ' | sudo -S ./start_sabox', '\$', 5)
|
||||||
|
else:
|
||||||
|
logging.error('This option should not occur!')
|
||||||
|
mySSH.close()
|
||||||
|
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
|
def SetAmfIPAddress(self):
|
||||||
|
# Not an error if we don't need an 5GCN
|
||||||
|
if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.SourceCodePath == '' or self.Type == '':
|
||||||
|
return
|
||||||
|
if self.IPAddress == 'none':
|
||||||
|
return
|
||||||
|
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
|
self.MmeIPAddress = self.IPAddress
|
||||||
|
|
||||||
def CheckHSSProcess(self, status_queue):
|
def CheckHSSProcess(self, status_queue):
|
||||||
try:
|
try:
|
||||||
mySSH = SSH.SSHConnection()
|
mySSH = SSH.SSHConnection()
|
||||||
@@ -251,11 +283,11 @@ class EPCManagement():
|
|||||||
elif re.match('OAI', self.Type, re.IGNORECASE):
|
elif re.match('OAI', self.Type, re.IGNORECASE):
|
||||||
result = re.search('\/bin\/bash .\/run_', mySSH.getBefore())
|
result = re.search('\/bin\/bash .\/run_', mySSH.getBefore())
|
||||||
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
result = re.search('mme', mySSH.getBefore())
|
result = re.search('mme|amf', mySSH.getBefore())
|
||||||
else:
|
else:
|
||||||
logging.error('This should not happen!')
|
logging.error('This should not happen!')
|
||||||
if result is None:
|
if result is None:
|
||||||
logging.debug('\u001B[1;37;41m MME Process Not Found! \u001B[0m')
|
logging.debug('\u001B[1;37;41m MME|AMF Process Not Found! \u001B[0m')
|
||||||
status_queue.put(CONST.MME_PROCESS_FAILED)
|
status_queue.put(CONST.MME_PROCESS_FAILED)
|
||||||
else:
|
else:
|
||||||
status_queue.put(CONST.MME_PROCESS_OK)
|
status_queue.put(CONST.MME_PROCESS_OK)
|
||||||
@@ -281,11 +313,11 @@ class EPCManagement():
|
|||||||
result = re.search('\/bin\/bash .\/run_', mySSH.getBefore())
|
result = re.search('\/bin\/bash .\/run_', mySSH.getBefore())
|
||||||
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('stdbuf -o0 ps -aux | grep --color=never xGw | grep -v grep', '\$', 5)
|
mySSH.command('stdbuf -o0 ps -aux | grep --color=never xGw | grep -v grep', '\$', 5)
|
||||||
result = re.search('xGw', mySSH.getBefore())
|
result = re.search('xGw|upf', mySSH.getBefore())
|
||||||
else:
|
else:
|
||||||
logging.error('This should not happen!')
|
logging.error('This should not happen!')
|
||||||
if result is None:
|
if result is None:
|
||||||
logging.debug('\u001B[1;37;41m SPGW Process Not Found! \u001B[0m')
|
logging.debug('\u001B[1;37;41m SPGW|UPF Process Not Found! \u001B[0m')
|
||||||
status_queue.put(CONST.SPGW_PROCESS_FAILED)
|
status_queue.put(CONST.SPGW_PROCESS_FAILED)
|
||||||
else:
|
else:
|
||||||
status_queue.put(CONST.SPGW_PROCESS_OK)
|
status_queue.put(CONST.SPGW_PROCESS_OK)
|
||||||
@@ -322,7 +354,7 @@ class EPCManagement():
|
|||||||
mySSH.command('cd ' + self.SourceCodePath, '\$', 5)
|
mySSH.command('cd ' + self.SourceCodePath, '\$', 5)
|
||||||
mySSH.command('cd scripts', '\$', 5)
|
mySSH.command('cd scripts', '\$', 5)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
mySSH.command('echo ' + self.Password + ' | sudo -S killall --signal SIGKILL hss_sim', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S screen -S simulated_hss -X quit', '\$', 5)
|
||||||
else:
|
else:
|
||||||
logging.error('This should not happen!')
|
logging.error('This should not happen!')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
@@ -397,6 +429,22 @@ class EPCManagement():
|
|||||||
mySSH.close()
|
mySSH.close()
|
||||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
|
def Terminate5GCN(self, HTML):
|
||||||
|
mySSH = SSH.SSHConnection()
|
||||||
|
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||||
|
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
|
mySSH.command('cd /opt/ltebox/tools', '\$', 5)
|
||||||
|
mySSH.command('echo ' + self.Password + ' | sudo -S ./stop_sabox', '\$', 5)
|
||||||
|
time.sleep(1)
|
||||||
|
mySSH.command('cd ' + self.SourceCodePath, '\$', 5)
|
||||||
|
mySSH.command('cd scripts', '\$', 5)
|
||||||
|
time.sleep(1)
|
||||||
|
mySSH.command('echo ' + self.Password + ' | sudo -S screen -S simulated_5g_hss -X quit', '\$', 5)
|
||||||
|
else:
|
||||||
|
logging.error('This should not happen!')
|
||||||
|
mySSH.close()
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
def DeployEpc(self, HTML):
|
def DeployEpc(self, HTML):
|
||||||
logging.debug('Trying to deploy')
|
logging.debug('Trying to deploy')
|
||||||
if not re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
|
if not re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
|
||||||
@@ -597,7 +645,7 @@ class EPCManagement():
|
|||||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm mme*.log', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm mme*.log', '\$', 5)
|
||||||
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('cp /opt/ltebox/var/log/*Log.0 .', '\$', 5)
|
mySSH.command('cp /opt/ltebox/var/log/*Log.0 .', '\$', 5)
|
||||||
mySSH.command('zip mme.log.zip mmeLog.0 s1apcLog.0 s1apsLog.0 s11cLog.0 libLog.0 s1apCodecLog.0', '\$', 60)
|
mySSH.command('zip mme.log.zip mmeLog.0 s1apcLog.0 s1apsLog.0 s11cLog.0 libLog.0 s1apCodecLog.0 amfLog.0 ngapcLog.0 ngapcommonLog.0 ngapsLog.0', '\$', 60)
|
||||||
else:
|
else:
|
||||||
logging.error('This option should not occur!')
|
logging.error('This option should not occur!')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
@@ -625,8 +673,8 @@ class EPCManagement():
|
|||||||
mySSH.command('zip spgw.log.zip spgw*.log', '\$', 60)
|
mySSH.command('zip spgw.log.zip spgw*.log', '\$', 60)
|
||||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm spgw*.log', '\$', 5)
|
mySSH.command('echo ' + self.Password + ' | sudo -S rm spgw*.log', '\$', 5)
|
||||||
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
elif re.match('ltebox', self.Type, re.IGNORECASE):
|
||||||
mySSH.command('cp /opt/ltebox/var/log/xGwLog.0 .', '\$', 5)
|
mySSH.command('cp /opt/ltebox/var/log/*Log.0 .', '\$', 5)
|
||||||
mySSH.command('zip spgw.log.zip xGwLog.0', '\$', 60)
|
mySSH.command('zip spgw.log.zip xGwLog.0 upfLog.0', '\$', 60)
|
||||||
else:
|
else:
|
||||||
logging.error('This option should not occur!')
|
logging.error('This option should not occur!')
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
|
|||||||
@@ -659,6 +659,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
if (EPC.IPAddress != '') and (EPC.IPAddress != 'none'):
|
if (EPC.IPAddress != '') and (EPC.IPAddress != 'none'):
|
||||||
CiTestObj.CheckFlexranCtrlInstallation(RAN,EPC,CONTAINERS)
|
CiTestObj.CheckFlexranCtrlInstallation(RAN,EPC,CONTAINERS)
|
||||||
EPC.SetMmeIPAddress()
|
EPC.SetMmeIPAddress()
|
||||||
|
EPC.SetAmfIPAddress()
|
||||||
|
|
||||||
#get the list of tests to be done
|
#get the list of tests to be done
|
||||||
todo_tests=[]
|
todo_tests=[]
|
||||||
@@ -775,6 +776,10 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
EPC.InitializeSPGW(HTML)
|
EPC.InitializeSPGW(HTML)
|
||||||
elif action == 'Terminate_SPGW':
|
elif action == 'Terminate_SPGW':
|
||||||
EPC.TerminateSPGW(HTML)
|
EPC.TerminateSPGW(HTML)
|
||||||
|
elif action == 'Initialize_5GCN':
|
||||||
|
EPC.Initialize5GCN(HTML)
|
||||||
|
elif action == 'Terminate_5GCN':
|
||||||
|
EPC.Terminate5GCN(HTML)
|
||||||
elif action == 'Deploy_EPC':
|
elif action == 'Deploy_EPC':
|
||||||
EPC.DeployEpc(HTML)
|
EPC.DeployEpc(HTML)
|
||||||
elif action == 'Undeploy_EPC':
|
elif action == 'Undeploy_EPC':
|
||||||
|
|||||||
@@ -27,6 +27,8 @@
|
|||||||
- Terminate_MME
|
- Terminate_MME
|
||||||
- Initialize_SPGW
|
- Initialize_SPGW
|
||||||
- Terminate_SPGW
|
- Terminate_SPGW
|
||||||
|
- Initialize_5GCN
|
||||||
|
- Terminate_5GCN
|
||||||
- Initialize_CatM_module
|
- Initialize_CatM_module
|
||||||
- Terminate_CatM_module
|
- Terminate_CatM_module
|
||||||
- Attach_CatM_module
|
- Attach_CatM_module
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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>cn5g-closure</htmlTabRef>
|
||||||
|
<htmlTabName>CN5G-Closure</htmlTabName>
|
||||||
|
<htmlTabIcon>log-out</htmlTabIcon>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
060000
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="060000">
|
||||||
|
<class>Terminate_5GCN</class>
|
||||||
|
<desc>Terminate 5G Core</desc>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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>cn5g-start-tab</htmlTabRef>
|
||||||
|
<htmlTabName>CN5G-Start</htmlTabName>
|
||||||
|
<htmlTabIcon>log-in</htmlTabIcon>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
000100
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList>
|
||||||
|
</TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="000100">
|
||||||
|
<class>Initialize_5GCN</class>
|
||||||
|
<desc>Initialize 5G Core</desc>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
Reference in New Issue
Block a user