Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
310f741f
Commit
310f741f
authored
Nov 19, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ci-fix-b200-container-pipeline' into integration_2021_wk46_c
parents
556f5459
04c81eea
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
177 additions
and
100 deletions
+177
-100
ci-scripts/Jenkinsfile-GitLab-Container
ci-scripts/Jenkinsfile-GitLab-Container
+6
-11
ci-scripts/cls_containerize.py
ci-scripts/cls_containerize.py
+15
-8
ci-scripts/cls_oaicitest.py
ci-scripts/cls_oaicitest.py
+59
-49
ci-scripts/main.py
ci-scripts/main.py
+11
-11
ci-scripts/ran.py
ci-scripts/ran.py
+16
-4
ci-scripts/xml_files/container_4g_rfsim.xml
ci-scripts/xml_files/container_4g_rfsim.xml
+1
-0
ci-scripts/xml_files/container_5g_rfsim.xml
ci-scripts/xml_files/container_5g_rfsim.xml
+1
-0
ci-scripts/xml_files/container_nsa_b200_quectel.xml
ci-scripts/xml_files/container_nsa_b200_quectel.xml
+2
-2
ci-scripts/xml_files/container_nsa_b200_terminate.xml
ci-scripts/xml_files/container_nsa_b200_terminate.xml
+51
-0
docker/scripts/enb_entrypoint.sh
docker/scripts/enb_entrypoint.sh
+9
-9
docker/scripts/gnb_entrypoint.sh
docker/scripts/gnb_entrypoint.sh
+2
-2
docker/scripts/lte_ru_entrypoint.sh
docker/scripts/lte_ru_entrypoint.sh
+2
-2
docker/scripts/lte_ue_entrypoint.sh
docker/scripts/lte_ue_entrypoint.sh
+1
-1
docker/scripts/nr_ue_entrypoint.sh
docker/scripts/nr_ue_entrypoint.sh
+1
-1
No files found.
ci-scripts/Jenkinsfile-GitLab-Container
View file @
310f741f
...
...
@@ -246,12 +246,8 @@ pipeline {
script
{
triggerSlaveJob
(
'RAN-DockerHub-Push'
,
'Push-to-Docker-Hub'
)
}
post
{
always
{
script
{
echo
"Push to Docker-Hub OK"
}
}
post
{
failure
{
script
{
echo
"Push to Docker-Hub KO"
...
...
@@ -261,7 +257,6 @@ pipeline {
}
}
}
}
post
{
always
{
script
{
...
...
ci-scripts/cls_containerize.py
View file @
310f741f
...
...
@@ -227,6 +227,8 @@ class Containerize():
if
result
is
not
None
:
forceSharedImageBuild
=
True
sharedTag
=
'ci-temp'
else
:
forceSharedImageBuild
=
True
# Let's remove any previous run artifacts if still there
mySSH
.
command
(
self
.
cli
+
' image prune --force'
,
'\$'
,
30
)
...
...
@@ -578,6 +580,8 @@ class Containerize():
# Currently support only one
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml config'
,
'\$'
,
5
)
result
=
re
.
search
(
'container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)'
,
mySSH
.
getBefore
())
if
self
.
eNB_logFile
[
self
.
eNB_instance
]
==
''
:
self
.
eNB_logFile
[
self
.
eNB_instance
]
=
'enb_'
+
HTML
.
testCase_id
+
'.log'
if
result
is
not
None
:
containerName
=
result
.
group
(
'container_name'
)
mySSH
.
command
(
'docker kill --signal INT '
+
containerName
,
'\$'
,
30
)
...
...
@@ -718,7 +722,7 @@ class Containerize():
cmd
=
'mkdir -p ../cmake_targets/log'
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
cmd
=
'docker exec '
+
self
.
pingContName
+
' /bin/bash -c "ping '
+
self
.
pingOptions
+
'" 2>&1 | tee ../cmake_targets/log/ping_'
+
HTML
.
testCase_id
+
'.log'
cmd
=
'docker exec '
+
self
.
pingContName
+
' /bin/bash -c "ping '
+
self
.
pingOptions
+
'" 2>&1 | tee ../cmake_targets/log/ping_'
+
HTML
.
testCase_id
+
'.log
|| true
'
logging
.
debug
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
...
...
@@ -784,18 +788,18 @@ class Containerize():
logStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
# Start the server process
cmd
=
'docker exec -d '
+
self
.
svrContName
+
' /bin/bash -c "nohup iperf '
+
self
.
svrOptions
+
' > /tmp/iperf_server.log 2>&1"'
cmd
=
'docker exec -d '
+
self
.
svrContName
+
' /bin/bash -c "nohup iperf '
+
self
.
svrOptions
+
' > /tmp/iperf_server.log 2>&1"
|| true
'
logging
.
debug
(
cmd
)
serverStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
time
.
sleep
(
5
)
# Start the client process
cmd
=
'docker exec '
+
self
.
cliContName
+
' /bin/bash -c "iperf '
+
self
.
cliOptions
+
'" 2>&1 | tee ../cmake_targets/log/iperf_client_'
+
HTML
.
testCase_id
+
'.log'
cmd
=
'docker exec '
+
self
.
cliContName
+
' /bin/bash -c "iperf '
+
self
.
cliOptions
+
'" 2>&1 | tee ../cmake_targets/log/iperf_client_'
+
HTML
.
testCase_id
+
'.log
|| true
'
logging
.
debug
(
cmd
)
clientStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
# Stop the server process
cmd
=
'docker exec '
+
self
.
svrContName
+
' /bin/bash -c "pkill iperf"'
cmd
=
'docker exec '
+
self
.
svrContName
+
' /bin/bash -c "pkill iperf"
|| true
'
logging
.
debug
(
cmd
)
serverStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
time
.
sleep
(
5
)
...
...
@@ -812,6 +816,7 @@ class Containerize():
else
:
message
=
'Server Report and Connection refused Not Found!'
self
.
IperfExit
(
HTML
,
False
,
message
)
logging
.
error
(
'
\u001B
[1;37;41m Iperf Test FAIL
\u001B
[0m'
)
return
# Computing the requested bandwidth in float
...
...
@@ -884,6 +889,8 @@ class Containerize():
self
.
IperfExit
(
HTML
,
iperfStatus
,
'problem?'
)
if
iperfStatus
:
logging
.
info
(
'
\u001B
[1m Iperf Test PASS
\u001B
[0m'
)
else
:
logging
.
error
(
'
\u001B
[1;37;41m Iperf Test FAIL
\u001B
[0m'
)
def
IperfExit
(
self
,
HTML
,
status
,
message
):
html_queue
=
SimpleQueue
()
...
...
@@ -921,7 +928,7 @@ class Containerize():
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
)
mySSH
.
command
(
'echo '
+
password
+
' | sudo -S iptables -L
FORWARD
'
,
'\$'
,
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
)
...
...
@@ -949,7 +956,7 @@ class Containerize():
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
)
mySSH
.
command
(
'echo '
+
password
+
' | sudo -S iptables -L
FORWARD
'
,
'\$'
,
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
)
...
...
@@ -977,7 +984,7 @@ class Containerize():
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
)
mySSH
.
command
(
'echo '
+
password
+
' | sudo -S iptables -L
FORWARD
'
,
'\$'
,
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
)
...
...
@@ -1000,7 +1007,7 @@ class Containerize():
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
)
mySSH
.
command
(
'echo '
+
password
+
' | sudo -S iptables -L
FORWARD
'
,
'\$'
,
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
)
...
...
ci-scripts/cls_oaicitest.py
View file @
310f741f
...
...
@@ -368,7 +368,7 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
InitializeUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
ue_trace
):
def
InitializeUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
ue_trace
,
CONTAINERS
):
if
self
.
ue_id
==
''
:
#no ID specified, then it is a COTS controlled by ADB
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -424,12 +424,12 @@ class OaiCiTest():
Module_UE
.
CheckModuleMTU
()
else
:
#status==-1 failed to retrieve IP address
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
def
InitializeOAIUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
InitializeOAIUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
if
self
.
UEIPAddress
==
''
or
self
.
UEUserName
==
''
or
self
.
UEPassword
==
''
or
self
.
UESourceCodePath
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -653,7 +653,7 @@ class OaiCiTest():
HTML
.
htmlUEFailureMsg
=
'nr-uesoftmodem did NOT synced'
HTML
.
CreateHtmlTestRow
(
self
.
air_interface
+
' '
+
self
.
Initialize_OAI_UE_args
,
'KO'
,
CONST
.
OAI_UE_PROCESS_COULD_NOT_SYNC
,
'OAI UE'
)
logging
.
error
(
'
\033
[91mInitialize OAI UE Failed!
\033
[0m'
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
checkDevTTYisUnlocked
(
self
):
SSH
=
sshconnection
.
SSHConnection
()
...
...
@@ -731,7 +731,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
checkDevTTYisUnlocked
()
def
AttachCatM
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
):
def
AttachCatM
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -804,9 +804,9 @@ class OaiCiTest():
html_cell
=
'<pre style="background-color:white">CAT-M module Attachment Failed</pre>'
html_queue
.
put
(
html_cell
)
HTML
.
CreateHtmlTestRowQueue
(
'N/A'
,
'KO'
,
1
,
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
PingCatM
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
PingCatM
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
if
EPC
.
IPAddress
==
''
or
EPC
.
UserName
==
''
or
EPC
.
Password
==
''
or
EPC
.
SourceCodePath
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -815,7 +815,7 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
try
:
statusQueue
=
SimpleQueue
()
...
...
@@ -836,7 +836,7 @@ class OaiCiTest():
moduleIPAddr
=
result
.
group
(
'ipaddr'
)
else
:
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
device_id
=
'catm'
...
...
@@ -900,7 +900,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'OK'
,
1
,
statusQueue
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'KO'
,
1
,
statusQueue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
...
...
@@ -992,7 +992,7 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
AttachUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
AttachUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
if
self
.
ue_id
==
''
:
#no ID specified, then it is a COTS controlled by ADB
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -1002,7 +1002,7 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
multi_jobs
=
[]
status_queue
=
SimpleQueue
()
...
...
@@ -1021,7 +1021,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
else
:
attach_status
=
True
...
...
@@ -1050,7 +1050,7 @@ class OaiCiTest():
time
.
sleep
(
5
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
'N/A'
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
#if an ID is specified, it is a module from the yaml infrastructure file
#Attention, as opposed to InitializeUE, the connect manager process is not checked as it is supposed to be active already
...
...
@@ -1086,7 +1086,7 @@ class OaiCiTest():
Module_UE
.
CheckModuleMTU
()
else
:
#status==-1 failed to retrieve IP address
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
def
DetachUE_common
(
self
,
device_id
,
idx
,
COTS_UE
):
...
...
@@ -1111,7 +1111,7 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
DetachUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
DetachUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
if
self
.
ue_id
==
''
:
#no ID specified, then it is a COTS controlled by ADB
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -1121,7 +1121,7 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
multi_jobs
=
[]
cnt
=
0
...
...
@@ -1396,7 +1396,7 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
CheckStatusUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
CheckStatusUE
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -1443,7 +1443,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
htmlOptions
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
check_status
=
True
html_queue
=
SimpleQueue
()
...
...
@@ -1459,7 +1459,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRowQueue
(
htmlOptions
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
htmlOptions
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
GetAllUEIPAddresses
(
self
):
SSH
=
sshconnection
.
SSHConnection
()
...
...
@@ -1686,14 +1686,14 @@ class OaiCiTest():
html_queue
.
put
(
html_cell
)
HTML
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
def
PingNoS1
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
PingNoS1
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
SSH
=
sshconnection
.
SSHConnection
()
check_eNB
=
True
check_OAI_UE
=
True
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
ping_from_eNB
=
re
.
search
(
'oaitun_enb1'
,
str
(
self
.
ping_args
))
if
ping_from_eNB
is
not
None
:
...
...
@@ -1779,10 +1779,10 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
Ping
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
Ping
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
result
=
re
.
search
(
'noS1'
,
str
(
RAN
.
Initialize_eNB_args
))
if
result
is
not
None
:
self
.
PingNoS1
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
self
.
PingNoS1
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
return
if
EPC
.
IPAddress
==
''
or
EPC
.
UserName
==
''
or
EPC
.
Password
==
''
or
EPC
.
SourceCodePath
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -1795,7 +1795,7 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
if
self
.
ue_id
==
""
:
...
...
@@ -1803,7 +1803,7 @@ class OaiCiTest():
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
else
:
self
.
UEIPAddresses
=
[]
...
...
@@ -1830,7 +1830,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
ping_status
=
True
html_queue
=
SimpleQueue
()
...
...
@@ -1847,7 +1847,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
self
.
ping_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
Iperf_ComputeTime
(
self
):
result
=
re
.
search
(
'-t (?P<iperf_time>\d+)'
,
str
(
self
.
iperf_args
))
...
...
@@ -2647,7 +2647,7 @@ class OaiCiTest():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
IperfNoS1
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
IperfNoS1
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
SSH
=
sshconnection
.
SSHConnection
()
if
RAN
.
eNBIPAddress
==
''
or
RAN
.
eNBUserName
==
''
or
RAN
.
eNBPassword
==
''
or
self
.
UEIPAddress
==
''
or
self
.
UEUserName
==
''
or
self
.
UEPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -2657,7 +2657,7 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
server_on_enb
=
re
.
search
(
'-R'
,
str
(
self
.
iperf_args
))
if
server_on_enb
is
not
None
:
...
...
@@ -2756,12 +2756,12 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
Iperf
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
):
def
Iperf
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
):
result
=
re
.
search
(
'noS1'
,
str
(
RAN
.
Initialize_eNB_args
))
if
result
is
not
None
:
self
.
IperfNoS1
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
self
.
IperfNoS1
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
return
if
EPC
.
IPAddress
==
''
or
EPC
.
UserName
==
''
or
EPC
.
Password
==
''
or
EPC
.
SourceCodePath
==
''
or
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -2774,14 +2774,14 @@ class OaiCiTest():
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
if
(
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
if
self
.
ue_id
==
""
:
#is not a module, follow legacy code
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
return
else
:
#is a module
self
.
UEIPAddresses
=
[]
...
...
@@ -2826,7 +2826,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
iperf_status
=
True
iperf_noperf
=
False
...
...
@@ -2848,7 +2848,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'OK'
,
len
(
self
.
UEDevices
),
html_queue
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
self
.
iperf_args
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
def
CheckProcessExist
(
self
,
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
):
multi_jobs
=
[]
...
...
@@ -3280,7 +3280,7 @@ class OaiCiTest():
else
:
HTML
.
CreateHtmlTestRow
(
'QLog trace is disabled'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
TerminateOAIUE
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
):
def
TerminateOAIUE
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
):
SSH
=
sshconnection
.
SSHConnection
()
SSH
.
open
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
)
SSH
.
command
(
'cd '
+
self
.
UESourceCodePath
+
'/cmake_targets'
,
'\$'
,
5
)
...
...
@@ -3321,11 +3321,11 @@ class OaiCiTest():
# Not an error then
if
(
logStatus
!=
CONST
.
OAI_UE_PROCESS_COULD_NOT_SYNC
)
or
(
ueAction
!=
'Sniffing'
):
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
if
(
logStatus
==
CONST
.
OAI_UE_PROCESS_COULD_NOT_SYNC
):
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
else
:
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Completed
\u001B
[0m'
)
HTML
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Completed</b>
\n
'
+
HTML
.
htmlUEFailureMsg
...
...
@@ -3334,26 +3334,26 @@ class OaiCiTest():
else
:
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
AutoTerminateUEandeNB
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
):
def
AutoTerminateUEandeNB
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
):
if
(
self
.
ADBIPAddress
!=
'none'
):
self
.
testCase_id
=
'AUTO-KILL-UE'
HTML
.
testCase_id
=
self
.
testCase_id
HTML
.
testCase_id
=
self
.
testCase_id
self
.
desc
=
'Automatic Termination of UE'
HTML
.
desc
=
'Automatic Termination of UE'
HTML
.
desc
=
self
.
desc
self
.
ShowTestID
()
self
.
TerminateUE
(
HTML
,
COTS_UE
,
InfraUE
,
self
.
ue_trace
)
if
(
self
.
Initialize_OAI_UE_args
!=
''
):
self
.
testCase_id
=
'AUTO-KILL-OAI-UE'
HTML
.
testCase_id
=
self
.
testCase_id
HTML
.
testCase_id
=
self
.
testCase_id
self
.
desc
=
'Automatic Termination of OAI-UE'
HTML
.
desc
=
'Automatic Termination of OAI-UE'
HTML
.
desc
=
self
.
desc
self
.
ShowTestID
()
self
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
if
(
RAN
.
Initialize_eNB_args
!=
''
):
self
.
testCase_id
=
'AUTO-KILL-RAN'
HTML
.
testCase_id
=
self
.
testCase_id
HTML
.
testCase_id
=
self
.
testCase_id
self
.
desc
=
'Automatic Termination of all RAN nodes'
HTML
.
desc
=
'Automatic Termination of RAN nodes'
HTML
.
desc
=
self
.
desc
self
.
ShowTestID
()
#terminate all RAN nodes eNB/gNB/OCP
for
instance
in
range
(
0
,
len
(
RAN
.
air_interface
)):
...
...
@@ -3363,11 +3363,21 @@ class OaiCiTest():
RAN
.
TerminateeNB
(
HTML
,
EPC
)
if
RAN
.
flexranCtrlInstalled
and
RAN
.
flexranCtrlStarted
:
self
.
testCase_id
=
'AUTO-KILL-flexran-ctl'
HTML
.
testCase_id
=
self
.
testCase_id
HTML
.
testCase_id
=
self
.
testCase_id
self
.
desc
=
'Automatic Termination of FlexRan CTL'
HTML
.
desc
=
'Automatic Termination of FlexRan CTL'
HTML
.
desc
=
self
.
desc
self
.
ShowTestID
()
self
.
TerminateFlexranCtrl
(
HTML
,
RAN
,
EPC
)
if
CONTAINERS
.
yamlPath
[
0
]
!=
''
:
self
.
testCase_id
=
'AUTO-KILL-CONTAINERS'
HTML
.
testCase_id
=
self
.
testCase_id
self
.
desc
=
'Automatic Termination of all RAN containers'
HTML
.
desc
=
self
.
desc
self
.
ShowTestID
()
for
instance
in
range
(
0
,
len
(
CONTAINERS
.
yamlPath
)):
if
CONTAINERS
.
yamlPath
[
instance
]
!=
''
:
CONTAINERS
.
eNB_instance
=
instance
CONTAINERS
.
UndeployObject
(
HTML
,
RAN
)
RAN
.
prematureExit
=
True
def
IdleSleep
(
self
,
HTML
):
...
...
ci-scripts/main.py
View file @
310f741f
...
...
@@ -544,7 +544,7 @@ elif re.match('^TerminateOAIUE$', mode, re.IGNORECASE):
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
signal
.
signal
(
signal
.
SIGUSR1
,
receive_signal
)
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
elif
re
.
match
(
'^TerminateHSS$'
,
mode
,
re
.
IGNORECASE
):
if
EPC
.
IPAddress
==
''
or
EPC
.
UserName
==
''
or
EPC
.
Password
==
''
or
EPC
.
Type
==
''
or
EPC
.
SourceCodePath
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
...
...
@@ -809,39 +809,39 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
elif
action
==
'Terminate_eNB'
:
RAN
.
TerminateeNB
(
HTML
,
EPC
)
elif
action
==
'Initialize_UE'
:
CiTestObj
.
InitializeUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CiTestObj
.
ue_trace
)
CiTestObj
.
InitializeUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CiTestObj
.
ue_trace
,
CONTAINERS
)
elif
action
==
'Terminate_UE'
:
CiTestObj
.
TerminateUE
(
HTML
,
COTS_UE
,
InfraUE
,
CiTestObj
.
ue_trace
)
elif
action
==
'Attach_UE'
:
CiTestObj
.
AttachUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
AttachUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Detach_UE'
:
CiTestObj
.
DetachUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
DetachUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'DataDisable_UE'
:
CiTestObj
.
DataDisableUE
(
HTML
)
elif
action
==
'DataEnable_UE'
:
CiTestObj
.
DataEnableUE
(
HTML
)
elif
action
==
'CheckStatusUE'
:
CiTestObj
.
CheckStatusUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
CheckStatusUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Build_OAI_UE'
:
CiTestObj
.
BuildOAIUE
(
HTML
)
elif
action
==
'Initialize_OAI_UE'
:
CiTestObj
.
InitializeOAIUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
InitializeOAIUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Terminate_OAI_UE'
:
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Initialize_CatM_module'
:
CiTestObj
.
InitializeCatM
(
HTML
)
elif
action
==
'Terminate_CatM_module'
:
CiTestObj
.
TerminateCatM
(
HTML
)
elif
action
==
'Attach_CatM_module'
:
CiTestObj
.
AttachCatM
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
)
CiTestObj
.
AttachCatM
(
HTML
,
RAN
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Detach_CatM_module'
:
CiTestObj
.
TerminateCatM
(
HTML
)
elif
action
==
'Ping_CatM_module'
:
CiTestObj
.
PingCatM
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
EPC
,
InfraUE
)
CiTestObj
.
PingCatM
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
EPC
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Ping'
:
CiTestObj
.
Ping
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
Ping
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Iperf'
:
CiTestObj
.
Iperf
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
)
CiTestObj
.
Iperf
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
InfraUE
,
CONTAINERS
)
elif
action
==
'Reboot_UE'
:
CiTestObj
.
RebootUE
(
HTML
,
RAN
,
EPC
)
elif
action
==
'Initialize_HSS'
:
...
...
ci-scripts/ran.py
View file @
310f741f
...
...
@@ -800,10 +800,21 @@ class RANManagement():
x2ap_pdu
=
0
#NSA specific log markers
nsa_markers
=
{
'SgNBReleaseRequestAcknowledge'
:
[],
'FAILURE'
:
[],
'scgFailureInformationNR-r15'
:
[],
'SgNBReleaseRequest'
:
[]}
nodeB_prefix_found
=
False
line_cnt
=
0
#log file line counter
for
line
in
enb_log_file
.
readlines
():
line_cnt
+=
1
# Detection of eNB/gNB from a container log
result
=
re
.
search
(
'Starting eNB soft modem'
,
str
(
line
))
if
result
is
not
None
:
nodeB_prefix_found
=
True
nodeB_prefix
=
'e'
result
=
re
.
search
(
'Starting gNB soft modem'
,
str
(
line
))
if
result
is
not
None
:
nodeB_prefix_found
=
True
nodeB_prefix
=
'g'
result
=
re
.
search
(
'Run time:'
,
str
(
line
))
# Runtime statistics
result
=
re
.
search
(
'Run time:'
,
str
(
line
))
if
result
is
not
None
:
...
...
@@ -1037,6 +1048,7 @@ class RANManagement():
logging
.
debug
(
' File analysis (stdout, stats) completed'
)
#post processing depending on the node type
if
not
nodeB_prefix_found
:
if
(
self
.
air_interface
[
self
.
eNB_instance
]
==
'lte-softmodem'
)
or
(
self
.
air_interface
[
self
.
eNB_instance
]
==
'ocp-enb'
):
nodeB_prefix
=
'e'
else
:
...
...
ci-scripts/xml_files/container_4g_rfsim.xml
View file @
310f741f
...
...
@@ -24,6 +24,7 @@
<htmlTabRef>
rfsim-4glte
</htmlTabRef>
<htmlTabName>
Testing 4G LTE RF sim in containers
</htmlTabName>
<htmlTabIcon>
wrench
</htmlTabIcon>
<repeatCount>
2
</repeatCount>
<TestCaseRequestedList>
100011
000011
...
...
ci-scripts/xml_files/container_5g_rfsim.xml
View file @
310f741f
...
...
@@ -24,6 +24,7 @@
<htmlTabRef>
rfsim-5gnr
</htmlTabRef>
<htmlTabName>
Testing 5G NR RF sim in containers
</htmlTabName>
<htmlTabIcon>
wrench
</htmlTabIcon>
<repeatCount>
4
</repeatCount>
<TestCaseRequestedList>
100001
000001
...
...
ci-scripts/xml_files/container_nsa_b200_quectel.xml
View file @
310f741f
...
...
@@ -115,8 +115,8 @@
<testCase
id=
"070000"
>
<class>
Iperf
</class>
<desc>
iperf (DL/
2
0Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b
2
0M -t 60
</iperf_args>
<desc>
iperf (DL/
4
0Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b
4
0M -t 60
</iperf_args>
<direction>
DL
</direction>
<id>
idefix
</id>
<iperf_packetloss_threshold>
3
</iperf_packetloss_threshold>
...
...
ci-scripts/xml_files/container_nsa_b200_terminate.xml
0 → 100644
View file @
310f741f
<!--
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-NSA-FR1-TM1-B200-terminate
</htmlTabRef>
<htmlTabName>
NSA tear-down in case of problem
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
030202
030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030201"
>
<class>
Undeploy_Object
</class>
<desc>
Undeploy eNB
</desc>
<yaml_path>
ci-scripts/yaml_files/nsa_b200_enb
</yaml_path>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"030202"
>
<class>
Undeploy_Object
</class>
<desc>
Undeploy gNB
</desc>
<yaml_path>
ci-scripts/yaml_files/nsa_b200_gnb
</yaml_path>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
</testCase>
</testCaseList>
docker/scripts/enb_entrypoint.sh
View file @
310f741f
...
...
@@ -9,15 +9,15 @@ ENABLE_X2=${ENABLE_X2:-no}
THREAD_PARALLEL_CONFIG
=
${
THREAD_PARALLEL_CONFIG
:-
PARALLEL_SINGLE_THREAD
}
# Based another env var, pick one template to use
if
[[
-v
USE_FDD_CU
]]
;
then
ln
-s
$PREFIX
/etc/cu.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_DU
]]
;
then
ln
-s
$PREFIX
/etc/du.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_MONO
]]
;
then
ln
-s
$PREFIX
/etc/enb.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_MONO
]]
;
then
ln
-s
$PREFIX
/etc/enb.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_FAPI_RCC
]]
;
then
ln
-s
$PREFIX
/etc/rcc.nfapi.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_IF4P5_RCC
]]
;
then
ln
-s
$PREFIX
/etc/rcc.if4p5.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_IF4P5_RCC
]]
;
then
ln
-s
$PREFIX
/etc/rcc.if4p5.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_RRU
]]
;
then
ln
-s
$PREFIX
/etc/rru.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_RRU
]]
;
then
ln
-s
$PREFIX
/etc/rru.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_CU
]]
;
then
cp
$PREFIX
/etc/cu.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_DU
]]
;
then
cp
$PREFIX
/etc/du.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_MONO
]]
;
then
cp
$PREFIX
/etc/enb.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_MONO
]]
;
then
cp
$PREFIX
/etc/enb.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_FAPI_RCC
]]
;
then
cp
$PREFIX
/etc/rcc.nfapi.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_IF4P5_RCC
]]
;
then
cp
$PREFIX
/etc/rcc.if4p5.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_IF4P5_RCC
]]
;
then
cp
$PREFIX
/etc/rcc.if4p5.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_FDD_RRU
]]
;
then
cp
$PREFIX
/etc/rru.fdd.conf
$PREFIX
/etc/enb.conf
;
fi
if
[[
-v
USE_TDD_RRU
]]
;
then
cp
$PREFIX
/etc/rru.tdd.conf
$PREFIX
/etc/enb.conf
;
fi
# Only this template will be manipulated
CONFIG_FILES
=
`
ls
$PREFIX
/etc/enb.conf
||
true
`
...
...
docker/scripts/gnb_entrypoint.sh
View file @
310f741f
...
...
@@ -7,8 +7,8 @@ ENABLE_X2=${ENABLE_X2:-yes}
THREAD_PARALLEL_CONFIG
=
${
THREAD_PARALLEL_CONFIG
:-
PARALLEL_SINGLE_THREAD
}
# Based another env var, pick one template to use
if
[[
-v
USE_NSA_TDD_MONO
]]
;
then
ln
-s
$PREFIX
/etc/gnb.nsa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_MONO
]]
;
then
ln
-s
$PREFIX
/etc/gnb.sa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_NSA_TDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.nsa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.sa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
# Only this template will be manipulated
CONFIG_FILES
=
`
ls
$PREFIX
/etc/gnb.conf
||
true
`
...
...
docker/scripts/lte_ru_entrypoint.sh
View file @
310f741f
...
...
@@ -5,8 +5,8 @@ set -euo pipefail
PREFIX
=
/opt/oai-lte-ru
# Based another env var, pick one template to use
if
[[
-v
USE_FDD_RRU
]]
;
then
ln
-s
$PREFIX
/etc/rru.fdd.conf
$PREFIX
/etc/rru.conf
;
fi
if
[[
-v
USE_TDD_RRU
]]
;
then
ln
-s
$PREFIX
/etc/rru.tdd.conf
$PREFIX
/etc/rru.conf
;
fi
if
[[
-v
USE_FDD_RRU
]]
;
then
cp
$PREFIX
/etc/rru.fdd.conf
$PREFIX
/etc/rru.conf
;
fi
if
[[
-v
USE_TDD_RRU
]]
;
then
cp
$PREFIX
/etc/rru.tdd.conf
$PREFIX
/etc/rru.conf
;
fi
# Only this template will be manipulated
CONFIG_FILES
=
`
ls
$PREFIX
/etc/rru.conf
||
true
`
...
...
docker/scripts/lte_ue_entrypoint.sh
View file @
310f741f
...
...
@@ -5,7 +5,7 @@ set -euo pipefail
PREFIX
=
/opt/oai-lte-ue
# Based another env var, pick one template to use
if
[[
-v
USE_NFAPI
]]
;
then
ln
-s
$PREFIX
/etc/ue.nfapi.conf
$PREFIX
/etc/ue.conf
;
fi
if
[[
-v
USE_NFAPI
]]
;
then
cp
$PREFIX
/etc/ue.nfapi.conf
$PREFIX
/etc/ue.conf
;
fi
# Only this template will be manipulated and the USIM one!
CONFIG_FILES
=
`
ls
$PREFIX
/etc/ue.conf
$PREFIX
/etc/ue_usim.conf
||
true
`
...
...
docker/scripts/nr_ue_entrypoint.sh
View file @
310f741f
...
...
@@ -5,7 +5,7 @@ set -euo pipefail
PREFIX
=
/opt/oai-nr-ue
# Based another env var, pick one template to use
#if [[ -v USE_NFAPI ]]; then
ln -s
$PREFIX/etc/ue.nfapi.conf $PREFIX/etc/ue.conf; fi
#if [[ -v USE_NFAPI ]]; then
cp
$PREFIX/etc/ue.nfapi.conf $PREFIX/etc/ue.conf; fi
# Only this template will be manipulated and the USIM one!
CONFIG_FILES
=
`
ls
$PREFIX
/etc/ue.conf
$PREFIX
/etc/nr-ue-sim.conf
||
true
`
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment