feat(ci): adding ip route check on the ci bench server for container-based tests
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
@@ -832,3 +832,114 @@ class Containerize():
|
||||
else:
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', 1, html_queue)
|
||||
|
||||
def CheckAndAddRoute(self, svrName, ipAddr, userName, password):
|
||||
logging.debug('Checking IP routing on ' + svrName)
|
||||
mySSH = SSH.SSHConnection()
|
||||
if svrName == 'porcepix':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if route to asterix gnb exists
|
||||
mySSH.command('ip route | grep "192.168.68.64/26"', '\$', 10)
|
||||
result = re.search('192.168.18.194', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.64/26 via 192.168.18.194 dev eno1', '\$', 10)
|
||||
# Check if route to obelix enb exists
|
||||
mySSH.command('ip route | grep "192.168.68.128/26"', '\$', 10)
|
||||
result = re.search('192.168.18.193', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 192.168.18.193 dev eno1', '\$', 10)
|
||||
# Check if route to nepes gnb exists
|
||||
mySSH.command('ip route | grep "192.168.68.192/26"', '\$', 10)
|
||||
result = re.search('192.168.18.209', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.192/26 via 192.168.18.209 dev eno1', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S sysctl net.ipv4.conf.all.forwarding=1', '\$', 10)
|
||||
# Check if iptables forwarding is accepted
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -L', '\$', 10)
|
||||
result = re.search('Chain FORWARD .*policy ACCEPT', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10)
|
||||
mySSH.close()
|
||||
if svrName == 'asterix':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if route to porcepix epc exists
|
||||
mySSH.command('ip route | grep "192.168.61.192/26"', '\$', 10)
|
||||
result = re.search('192.168.18.210', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.61.192/26 via 192.168.18.210 dev em1', '\$', 10)
|
||||
# Check if route to porcepix cn5g exists
|
||||
mySSH.command('ip route | grep "192.168.70.128/26"', '\$', 10)
|
||||
result = re.search('192.168.18.210', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.70.128/26 via 192.168.18.210 dev em1', '\$', 10)
|
||||
# Check if X2 route to obelix enb exists
|
||||
mySSH.command('ip route | grep "192.168.68.128/26"', '\$', 10)
|
||||
result = re.search('192.168.18.193', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 192.168.18.193 dev em1', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S sysctl net.ipv4.conf.all.forwarding=1', '\$', 10)
|
||||
# Check if iptables forwarding is accepted
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -L', '\$', 10)
|
||||
result = re.search('Chain FORWARD .*policy ACCEPT', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10)
|
||||
mySSH.close()
|
||||
if svrName == 'obelix':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if route to porcepix epc exists
|
||||
mySSH.command('ip route | grep "192.168.61.192/26"', '\$', 10)
|
||||
result = re.search('192.168.18.210', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.61.192/26 via 192.168.18.210 dev eno1', '\$', 10)
|
||||
# Check if X2 route to asterix gnb exists
|
||||
mySSH.command('ip route | grep "192.168.68.64/26"', '\$', 10)
|
||||
result = re.search('192.168.18.194', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.64/26 via 192.168.18.194 dev eno1', '\$', 10)
|
||||
# Check if X2 route to nepes gnb exists
|
||||
mySSH.command('ip route | grep "192.168.68.192/26"', '\$', 10)
|
||||
result = re.search('192.168.18.209', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.192/26 via 192.168.18.209 dev eno1', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S sysctl net.ipv4.conf.all.forwarding=1', '\$', 10)
|
||||
# Check if iptables forwarding is accepted
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -L', '\$', 10)
|
||||
result = re.search('Chain FORWARD .*policy ACCEPT', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10)
|
||||
mySSH.close()
|
||||
if svrName == 'nepes':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if route to porcepix epc exists
|
||||
mySSH.command('ip route | grep "192.168.61.192/26"', '\$', 10)
|
||||
result = re.search('192.168.18.210', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.61.192/26 via 192.168.18.210 dev enp0s31f6', '\$', 10)
|
||||
# Check if X2 route to obelix enb exists
|
||||
mySSH.command('ip route | grep "192.168.68.128/26"', '\$', 10)
|
||||
result = re.search('192.168.18.193', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 192.168.18.193 dev enp0s31f6', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S sysctl net.ipv4.conf.all.forwarding=1', '\$', 10)
|
||||
# Check if iptables forwarding is accepted
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -L', '\$', 10)
|
||||
result = re.search('Chain FORWARD .*policy ACCEPT', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10)
|
||||
mySSH.close()
|
||||
|
||||
@@ -734,6 +734,22 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices))
|
||||
HTML.CreateHtmlTabHeader()
|
||||
|
||||
# On CI bench w/ containers, we need to validate if IP routes are set
|
||||
if EPC.IPAddress == '192.168.18.210':
|
||||
CONTAINERS.CheckAndAddRoute('porcepix', EPC.IPAddress, EPC.UserName, EPC.Password)
|
||||
if CONTAINERS.eNBIPAddress == '192.168.18.194':
|
||||
CONTAINERS.CheckAndAddRoute('asterix', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '192.168.18.194':
|
||||
CONTAINERS.CheckAndAddRoute('asterix', CONTAINERS.eNB1IPAddress, CONTAINERS.eNB1UserName, CONTAINERS.eNB1Password)
|
||||
if CONTAINERS.eNBIPAddress == '192.168.18.193':
|
||||
CONTAINERS.CheckAndAddRoute('obelix', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '192.168.18.193':
|
||||
CONTAINERS.CheckAndAddRoute('obelix', CONTAINERS.eNB1IPAddress, CONTAINERS.eNB1UserName, CONTAINERS.eNB1Password)
|
||||
if CONTAINERS.eNBIPAddress == '192.168.18.209':
|
||||
CONTAINERS.CheckAndAddRoute('nepes', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '192.168.18.209':
|
||||
CONTAINERS.CheckAndAddRoute('nepes', CONTAINERS.eNB1IPAddress, CONTAINERS.eNB1UserName, CONTAINERS.eNB1Password)
|
||||
|
||||
CiTestObj.FailReportCnt = 0
|
||||
RAN.prematureExit=True
|
||||
HTML.startTime=int(round(time.time() * 1000))
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
enb_mono_fdd:
|
||||
image: oai-enb:develop
|
||||
privileged: true
|
||||
container_name: nsa-b200-enb
|
||||
environment:
|
||||
USE_FDD_MONO: 'yes'
|
||||
USE_B2XX: 'yes'
|
||||
ENB_NAME: eNB-in-docker
|
||||
MCC: '222'
|
||||
MNC: '01'
|
||||
MNC_LENGTH: 2
|
||||
TAC: 1
|
||||
UTRA_BAND_ID: 7
|
||||
DL_FREQUENCY_IN_MHZ: 2680
|
||||
UL_FREQUENCY_OFFSET_IN_MHZ: 120
|
||||
NID_CELL: 0
|
||||
NB_PRB: 25
|
||||
ENABLE_MEASUREMENT_REPORTS: 'yes'
|
||||
ENABLE_X2: 'yes'
|
||||
MME_S1C_IP_ADDRESS: 192.168.18.210
|
||||
ENB_S1C_IF_NAME: eth0
|
||||
ENB_S1C_IP_ADDRESS: 192.168.68.130
|
||||
ENB_S1U_IF_NAME: eth0
|
||||
ENB_S1U_IP_ADDRESS: 192.168.68.130
|
||||
ENB_X2_IP_ADDRESS: 192.168.68.130
|
||||
RRC_INACTIVITY_THRESHOLD: 0
|
||||
FLEXRAN_ENABLED: 'no'
|
||||
FLEXRAN_INTERFACE_NAME: eth0
|
||||
FLEXRAN_IPV4_ADDRESS: 192.168.18.210
|
||||
THREAD_PARALLEL_CONFIG: PARALLEL_RU_L1_TRX_SPLIT
|
||||
volumes:
|
||||
- /dev:/dev
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.68.130
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
name: nsa-b200-enb-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.68.128/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "nsa-enb-net"
|
||||
@@ -0,0 +1,50 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
gnb_mono_tdd:
|
||||
image: oai-gnb:develop
|
||||
privileged: true
|
||||
container_name: nsa-b200-gnb
|
||||
environment:
|
||||
USE_NSA_TDD_MONO: 'yes'
|
||||
USE_B2XX: 'yes'
|
||||
GNB_NAME: gNB-in-docker
|
||||
MCC: '222'
|
||||
MNC: '01'
|
||||
MNC_LENGTH: 2
|
||||
TAC: 1
|
||||
ENABLE_X2: 'yes'
|
||||
ENB_X2_IP_ADDRESS: 192.168.68.130
|
||||
MME_S1C_IP_ADDRESS: 192.168.18.210
|
||||
GNB_S1C_IF_NAME: eth0
|
||||
GNB_S1C_IP_ADDRESS: 192.168.68.194
|
||||
GNB_S1U_IF_NAME: eth0
|
||||
GNB_S1U_IP_ADDRESS: 192.168.68.194
|
||||
GNB_X2_IP_ADDRESS: 192.168.68.194
|
||||
RRC_INACTIVITY_THRESHOLD: 0
|
||||
FLEXRAN_ENABLED: 'no'
|
||||
FLEXRAN_INTERFACE_NAME: eth0
|
||||
FLEXRAN_IPV4_ADDRESS: 192.168.18.210
|
||||
THREAD_PARALLEL_CONFIG: PARALLEL_RU_L1_TRX_SPLIT
|
||||
USE_ADDITIONAL_OPTIONS: '-E -q'
|
||||
volumes:
|
||||
- /dev:/dev
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.68.194
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
name: nsa-b200-gnb-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.68.192/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "nsa-gnb-net"
|
||||
Reference in New Issue
Block a user