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
OpenXG
OpenXG UE
Commits
e3f107fc
Commit
e3f107fc
authored
Dec 07, 2020
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[CI] python code clean
Signed-off-by:
Raphael Defosseux
<
raphael.defosseux@eurecom.fr
>
parent
3c16caec
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
138 additions
and
370 deletions
+138
-370
ci-scripts/cls_containerize.py
ci-scripts/cls_containerize.py
+25
-44
ci-scripts/cls_oaicitest.py
ci-scripts/cls_oaicitest.py
+28
-28
ci-scripts/epc.py
ci-scripts/epc.py
+24
-35
ci-scripts/main.py
ci-scripts/main.py
+18
-27
ci-scripts/ran.py
ci-scripts/ran.py
+43
-236
No files found.
ci-scripts/cls_containerize.py
View file @
e3f107fc
...
...
@@ -42,10 +42,8 @@ from multiprocessing import Process, Lock, SimpleQueue
# OAI Testing modules
#-----------------------------------------------------------
import
sshconnection
as
SSH
import
epc
import
helpreadme
as
HELP
import
constants
as
CONST
import
html
#-----------------------------------------------------------
# Class Declaration
...
...
@@ -82,15 +80,12 @@ class Containerize():
self
.
flexranCtrlDeployed
=
False
self
.
flexranCtrlIpAddress
=
''
self
.
htmlObj
=
None
self
.
epcObj
=
None
self
.
ranObj
=
None
#-----------------------------------------------------------
# Container management functions
#-----------------------------------------------------------
def
BuildImage
(
self
):
def
BuildImage
(
self
,
HTML
):
if
self
.
ranRepository
==
''
or
self
.
ranBranch
==
''
or
self
.
ranCommitID
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -137,10 +132,7 @@ class Containerize():
# Workaround for some servers, we need to erase completely the workspace
if
self
.
forcedWorkspaceCleanup
:
mySSH
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -Rf '
+
lSourcePath
,
'\$'
,
15
)
if
self
.
htmlObj
is
not
None
:
self
.
testCase_id
=
self
.
htmlObj
.
testCase_id
else
:
self
.
testCase_id
=
'000000'
self
.
testCase_id
=
HTML
.
testCase_id
# on RedHat/CentOS .git extension is mandatory
result
=
re
.
search
(
'([a-zA-Z0-9\:\-\.\/])+\.git'
,
self
.
ranRepository
)
if
result
is
not
None
:
...
...
@@ -239,9 +231,8 @@ class Containerize():
if
not
status
:
mySSH
.
close
()
logging
.
error
(
'
\u001B
[1m Building OAI Images Failed
\u001B
[0m'
)
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
imageKind
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
htmlObj
.
CreateHtmlTabFooter
(
False
)
HTML
.
CreateHtmlTestRow
(
self
.
imageKind
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
1
)
# Recover build logs, for the moment only possible when build is successful
...
...
@@ -261,10 +252,9 @@ class Containerize():
mySSH
.
close
()
logging
.
info
(
'
\u001B
[1m Building OAI Image(s) Pass
\u001B
[0m'
)
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
imageKind
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
imageKind
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
DeployObject
(
self
):
def
DeployObject
(
self
,
HTML
,
EPC
):
if
self
.
eNB_serverId
[
self
.
eNB_instance
]
==
'0'
:
lIpAddr
=
self
.
eNBIPAddress
lUserName
=
self
.
eNBUserName
...
...
@@ -299,8 +289,7 @@ class Containerize():
if
(
self
.
ranAllowMerge
):
imageTag
=
'ci-temp'
mySSH
.
command
(
'sed -i -e "s/image: oai-enb:latest/image: oai-enb:'
+
imageTag
+
'/" ci-docker-compose.yml'
,
'\$'
,
2
)
if
self
.
epcObj
is
not
None
:
localMmeIpAddr
=
self
.
epcObj
.
MmeIPAddress
localMmeIpAddr
=
EPC
.
MmeIPAddress
mySSH
.
command
(
'sed -i -e "s/CI_MME_IP_ADDR/'
+
localMmeIpAddr
+
'/" ci-docker-compose.yml'
,
'\$'
,
2
)
if
self
.
flexranCtrlDeployed
:
mySSH
.
command
(
'sed -i -e
\'
s/FLEXRAN_ENABLED:.*/FLEXRAN_ENABLED: "yes"/
\'
ci-docker-compose.yml'
,
'\$'
,
2
)
...
...
@@ -356,19 +345,15 @@ class Containerize():
time
.
sleep
(
10
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
testCase_id
=
self
.
htmlObj
.
testCase_id
else
:
self
.
testCase_id
=
'000000'
self
.
testCase_id
=
HTML
.
testCase_id
self
.
eNB_logFile
[
self
.
eNB_instance
]
=
'enb_'
+
self
.
testCase_id
+
'.log'
if
self
.
htmlObj
is
not
None
:
if
status
:
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
else
:
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
def
UndeployObject
(
self
):
def
UndeployObject
(
self
,
HTML
,
RAN
):
logging
.
info
(
'
\u001B
[1m Undeploying OAI Object Pass
\u001B
[0m'
)
if
self
.
eNB_serverId
[
self
.
eNB_instance
]
==
'0'
:
lIpAddr
=
self
.
eNBIPAddress
...
...
@@ -410,20 +395,16 @@ class Containerize():
mySSH
.
close
()
# Analyzing log file!
if
self
.
ranObj
is
not
None
:
copyin_res
=
mySSH
.
copyin
(
lIpAddr
,
lUserName
,
lPassWord
,
lSourcePath
+
'/cmake_targets/'
+
self
.
eNB_logFile
[
self
.
eNB_instance
],
'.'
)
nodeB_prefix
=
'e'
if
(
copyin_res
==
-
1
):
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
htmleNBFailureMsg
=
'Could not copy '
+
nodeB_prefix
+
'NB logfile to analyze it!'
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
HTML
.
htmleNBFailureMsg
=
'Could not copy '
+
nodeB_prefix
+
'NB logfile to analyze it!'
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
else
:
logging
.
debug
(
'
\u001B
[1m Analyzing '
+
nodeB_prefix
+
'NB logfile
\u001B
[0m '
+
self
.
eNB_logFile
[
self
.
eNB_instance
])
logStatus
=
self
.
ranObj
.
AnalyzeLogFile_eNB
(
self
.
eNB_logFile
[
self
.
eNB_instance
]
)
logStatus
=
RAN
.
AnalyzeLogFile_eNB
(
self
.
eNB_logFile
[
self
.
eNB_instance
],
HTML
)
if
(
logStatus
<
0
):
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
ranObj
.
runtime_stats
,
'KO'
,
logStatus
)
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'KO'
,
logStatus
)
else
:
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
ranObj
.
runtime_stats
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
ci-scripts/cls_oaicitest.py
View file @
e3f107fc
...
...
@@ -558,7 +558,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
checkDevTTYisUnlocked
(
self
):
SSH
=
sshconnection
.
SSHConnection
()
...
...
@@ -636,7 +636,7 @@ class OaiCiTest():
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
checkDevTTYisUnlocked
()
def
AttachCatM
(
self
,
HTML
,
RAN
,
COTS_UE
):
def
AttachCatM
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
):
if
self
.
ADBIPAddress
==
''
or
self
.
ADBUserName
==
''
or
self
.
ADBPassword
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -709,9 +709,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
PingCatM
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
):
def
PingCatM
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
,
EPC
):
if
EPC
.
IPAddress
==
''
or
EPC
.
UserName
==
''
or
EPC
.
Password
==
''
or
EPC
.
SourceCodePath
==
''
:
HELP
.
GenericHelp
(
CONST
.
Version
)
sys
.
exit
(
'Insufficient Parameter'
)
...
...
@@ -720,7 +720,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
try
:
statusQueue
=
SimpleQueue
()
...
...
@@ -741,7 +741,7 @@ class OaiCiTest():
moduleIPAddr
=
result
.
group
(
'ipaddr'
)
else
:
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
pStatus
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
device_id
=
'catm'
...
...
@@ -805,7 +805,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
...
...
@@ -906,7 +906,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
multi_jobs
=
[]
status_queue
=
SimpleQueue
()
...
...
@@ -925,7 +925,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
else
:
attach_status
=
True
...
...
@@ -954,7 +954,7 @@ class OaiCiTest():
time
.
sleep
(
5
)
else
:
HTML
.
CreateHtmlTestRowQueue
(
'N/A'
,
'KO'
,
len
(
self
.
UEDevices
),
html_queue
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
DetachUE_common
(
self
,
device_id
,
idx
,
COTS_UE
):
try
:
...
...
@@ -987,7 +987,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
multi_jobs
=
[]
cnt
=
0
...
...
@@ -1302,7 +1302,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
htmlOptions
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
else
:
check_status
=
True
html_queue
=
SimpleQueue
()
...
...
@@ -1318,7 +1318,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
GetAllUEIPAddresses
(
self
):
SSH
=
sshconnection
.
SSHConnection
()
...
...
@@ -1496,7 +1496,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
ping_from_eNB
=
re
.
search
(
'oaitun_enb1'
,
str
(
self
.
ping_args
))
if
ping_from_eNB
is
not
None
:
...
...
@@ -1598,12 +1598,12 @@ 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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
multi_jobs
=
[]
i
=
0
...
...
@@ -1621,7 +1621,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
self
.
ping_args
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
else
:
ping_status
=
True
html_queue
=
SimpleQueue
()
...
...
@@ -1638,7 +1638,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
Iperf_ComputeTime
(
self
):
result
=
re
.
search
(
'-t (?P<iperf_time>\d+)'
,
str
(
self
.
iperf_args
))
...
...
@@ -2279,7 +2279,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
server_on_enb
=
re
.
search
(
'-R'
,
str
(
self
.
iperf_args
))
if
server_on_enb
is
not
None
:
...
...
@@ -2377,7 +2377,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
Iperf
(
self
,
HTML
,
RAN
,
EPC
,
COTS_UE
):
result
=
re
.
search
(
'noS1'
,
str
(
RAN
.
Initialize_eNB_args
))
...
...
@@ -2395,13 +2395,13 @@ 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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
ueIpStatus
=
self
.
GetAllUEIPAddresses
()
if
(
ueIpStatus
<
0
):
logging
.
debug
(
'going here'
)
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
CONST
.
UE_IP_ADDRESS_ISSUE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
return
self
.
dummyIperfVersion
=
'2.0.10'
...
...
@@ -2432,7 +2432,7 @@ class OaiCiTest():
if
(
status_queue
.
empty
()):
HTML
.
CreateHtmlTestRow
(
self
.
iperf_args
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
else
:
iperf_status
=
True
iperf_noperf
=
False
...
...
@@ -2454,7 +2454,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
def
CheckProcessExist
(
self
,
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
):
multi_jobs
=
[]
...
...
@@ -2915,11 +2915,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
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
else
:
if
(
logStatus
==
CONST
.
OAI_UE_PROCESS_COULD_NOT_SYNC
):
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
)
self
.
AutoTerminateUEandeNB
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
else
:
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Completed
\u001B
[0m'
)
HTML
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Completed</b>
\n
'
+
HTML
.
htmlUEFailureMsg
...
...
@@ -2928,7 +2928,7 @@ class OaiCiTest():
else
:
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
AutoTerminateUEandeNB
(
self
,
HTML
,
RAN
,
COTS_UE
):
def
AutoTerminateUEandeNB
(
self
,
HTML
,
RAN
,
COTS_UE
,
EPC
):
if
(
self
.
ADBIPAddress
!=
'none'
):
self
.
testCase_id
=
'AUTO-KILL-UE'
HTML
.
testCase_id
=
self
.
testCase_id
...
...
@@ -2954,7 +2954,7 @@ class OaiCiTest():
if
RAN
.
air_interface
[
instance
]
!=
''
:
logging
.
debug
(
'Auto Termination of Instance '
+
str
(
instance
)
+
' : '
+
RAN
.
air_interface
[
instance
])
RAN
.
eNB_instance
=
instance
RAN
.
TerminateeNB
()
RAN
.
TerminateeNB
(
HTML
,
EPC
)
if
RAN
.
flexranCtrlInstalled
and
RAN
.
flexranCtrlStarted
:
self
.
testCase_id
=
'AUTO-KILL-flexran-ctl'
HTML
.
testCase_id
=
self
.
testCase_id
...
...
ci-scripts/epc.py
View file @
e3f107fc
...
...
@@ -46,7 +46,6 @@ from multiprocessing import Process, Lock, SimpleQueue
import
sshconnection
as
SSH
import
helpreadme
as
HELP
import
constants
as
CONST
import
html
#-----------------------------------------------------------
# Class Declaration
...
...
@@ -61,7 +60,6 @@ class EPCManagement():
self
.
SourceCodePath
=
''
self
.
Type
=
''
self
.
PcapFileName
=
''
self
.
htmlObj
=
None
self
.
testCase_id
=
''
self
.
MmeIPAddress
=
''
self
.
containerPrefix
=
'prod'
...
...
@@ -73,7 +71,7 @@ class EPCManagement():
# EPC management functions
#-----------------------------------------------------------
def
InitializeHSS
(
self
):
def
InitializeHSS
(
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
)
...
...
@@ -115,10 +113,9 @@ class EPCManagement():
else
:
logging
.
error
(
'This option should not occur!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
InitializeMME
(
self
):
def
InitializeMME
(
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
)
...
...
@@ -154,8 +151,7 @@ class EPCManagement():
else
:
logging
.
error
(
'This option should not occur!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
SetMmeIPAddress
(
self
):
# Not an error if we don't need an EPC
...
...
@@ -176,7 +172,7 @@ class EPCManagement():
else
:
self
.
MmeIPAddress
=
self
.
IPAddress
def
InitializeSPGW
(
self
):
def
InitializeSPGW
(
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
)
...
...
@@ -213,8 +209,7 @@ class EPCManagement():
else
:
logging
.
error
(
'This option should not occur!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
CheckHSSProcess
(
self
,
status_queue
):
try
:
...
...
@@ -298,7 +293,7 @@ class EPCManagement():
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
def
TerminateHSS
(
self
):
def
TerminateHSS
(
self
,
HTML
):
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
self
.
IPAddress
,
self
.
UserName
,
self
.
Password
)
if
re
.
match
(
'OAI-Rel14-Docker'
,
self
.
Type
,
re
.
IGNORECASE
):
...
...
@@ -331,10 +326,9 @@ class EPCManagement():
else
:
logging
.
error
(
'This should not happen!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
TerminateMME
(
self
):
def
TerminateMME
(
self
,
HTML
):
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
self
.
IPAddress
,
self
.
UserName
,
self
.
Password
)
if
re
.
match
(
'OAI-Rel14-Docker'
,
self
.
Type
,
re
.
IGNORECASE
):
...
...
@@ -358,10 +352,9 @@ class EPCManagement():
else
:
logging
.
error
(
'This should not happen!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
TerminateSPGW
(
self
):
def
TerminateSPGW
(
self
,
HTML
):
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
self
.
IPAddress
,
self
.
UserName
,
self
.
Password
)
if
re
.
match
(
'OAI-Rel14-Docker'
,
self
.
Type
,
re
.
IGNORECASE
):
...
...
@@ -402,15 +395,13 @@ class EPCManagement():
else
:
logging
.
error
(
'This should not happen!'
)
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
def
DeployEpc
(
self
):
def
DeployEpc
(
self
,
HTML
):
logging
.
debug
(
'Trying to deploy'
)
if
not
re
.
match
(
'OAI-Rel14-Docker'
,
self
.
Type
,
re
.
IGNORECASE
):
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
self
.
htmlObj
.
CreateHtmlTabFooter
(
False
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
HTML
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
'Deploy not possible with this EPC type: '
+
self
.
Type
)
if
self
.
IPAddress
==
''
or
self
.
UserName
==
''
or
self
.
Password
==
''
or
self
.
SourceCodePath
==
''
or
self
.
Type
==
''
:
...
...
@@ -423,9 +414,8 @@ class EPCManagement():
result
=
re
.
search
(
'docker-compose version 1'
,
mySSH
.
getBefore
())
if
result
is
None
:
mySSH
.
close
()
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
self
.
htmlObj
.
CreateHtmlTabFooter
(
False
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
HTML
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
'docker-compose not installed on '
+
self
.
IPAddress
)
mySSH
.
command
(
'if [ -d '
+
self
.
SourceCodePath
+
'/scripts ]; then echo '
+
self
.
Password
+
' | sudo -S rm -Rf '
+
self
.
SourceCodePath
+
'/scripts ; fi'
,
'\$'
,
5
)
...
...
@@ -458,9 +448,8 @@ class EPCManagement():
cnt
+=
1
mySSH
.
command
(
'docker rm -f prod-db-init'
,
'\$'
,
5
)
if
not
db_init_status
:
if
self
.
htmlObj
is
not
None
:
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
self
.
htmlObj
.
CreateHtmlTabFooter
(
False
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
HTML
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
'Cassandra DB deployment/configuration went wrong!'
)
# deploying EPC cNFs
...
...
@@ -503,13 +492,13 @@ class EPCManagement():
mySSH
.
command
(
'docker exec -d prod-oai-spgwu-tiny /bin/bash -c "nohup tshark -i any -f
\'
port 8805
\'
-w /tmp/spgwu_check_run.pcap 2>&1 > /dev/null"'
,
'\$'
,
10
)
mySSH
.
close
()
logging
.
debug
(
'Deployment OK'
)
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
else
:
mySSH
.
close
()
logging
.
debug
(
'Deployment went wrong'
)
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
def
UndeployEpc
(
self
):
def
UndeployEpc
(
self
,
HTML
):
logging
.
debug
(
'Trying to undeploy'
)
# No check down, we suppose everything done before.
...
...
@@ -551,10 +540,10 @@ class EPCManagement():
mySSH
.
close
()
if
noMoreContainerNb
==
nbContainers
and
noMoreNetworkNb
==
2
:
logging
.
debug
(
'Undeployment OK'
)
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
else
:
logging
.
debug
(
'Undeployment went wrong'
)
self
.
htmlObj
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
HTML
.
CreateHtmlTestRow
(
self
.
Type
,
'KO'
,
CONST
.
INVALID_PARAMETER
)
def
LogCollectHSS
(
self
):
mySSH
=
SSH
.
SSHConnection
()
...
...
ci-scripts/main.py
View file @
e3f107fc
...
...
@@ -379,14 +379,6 @@ RAN = ran.RANManagement()
HTML
=
html
.
HTMLManagement
()
CONTAINERS
=
cls_containerize
.
Containerize
()
EPC
.
htmlObj
=
HTML
RAN
.
htmlObj
=
HTML
RAN
.
epcObj
=
EPC
CONTAINERS
.
htmlObj
=
HTML
CONTAINERS
.
epcObj
=
EPC
CONTAINERS
.
ranObj
=
RAN
ldpc
=
cls_physim
.
PhySim
()
#create an instance for LDPC test using GPU or CPU build
...
...
@@ -668,17 +660,16 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
RAN
.
prematureExit
=
True
break
if
action
==
'Build_eNB'
:
RAN
.
BuildeNB
()
RAN
.
BuildeNB
(
HTML
)
elif
action
==
'WaitEndBuild_eNB'
:
RAN
.
WaitBuildeNBisFinished
()
RAN
.
WaitBuildeNBisFinished
(
HTML
)
elif
action
==
'Initialize_eNB'
:
check_eNB
=
False
check_OAI_UE
=
False
RAN
.
pStatus
=
CiTestObj
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
,
RAN
,
EPC
)
RAN
.
InitializeeNB
()
RAN
.
InitializeeNB
(
HTML
,
EPC
)
elif
action
==
'Terminate_eNB'
:
RAN
.
TerminateeNB
()
RAN
.
TerminateeNB
(
HTML
,
EPC
)
elif
action
==
'Initialize_UE'
:
CiTestObj
.
InitializeUE
(
HTML
,
COTS_UE
)
elif
action
==
'Terminate_UE'
:
...
...
@@ -698,17 +689,17 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
elif
action
==
'Initialize_OAI_UE'
:
CiTestObj
.
InitializeOAIUE
(
HTML
,
RAN
,
EPC
,
COTS_UE
)
elif
action
==
'Terminate_OAI_UE'
:
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
)
CiTestObj
.
TerminateOAIUE
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
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
)
CiTestObj
.
AttachCatM
(
HTML
,
RAN
,
COTS_UE
,
EPC
)
elif
action
==
'Detach_CatM_module'
:
CiTestObj
.
TerminateCatM
(
HTML
)
elif
action
==
'Ping_CatM_module'
:
CiTestObj
.
PingCatM
(
HTML
,
RAN
,
EPC
,
COTS_UE
)
CiTestObj
.
PingCatM
(
HTML
,
RAN
,
EPC
,
COTS_UE
,
EPC
)
elif
action
==
'Ping'
:
CiTestObj
.
Ping
(
HTML
,
RAN
,
EPC
,
COTS_UE
)
elif
action
==
'Iperf'
:
...
...
@@ -716,21 +707,21 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
elif
action
==
'Reboot_UE'
:
CiTestObj
.
RebootUE
(
HTML
,
RAN
,
EPC
)
elif
action
==
'Initialize_HSS'
:
EPC
.
InitializeHSS
()
EPC
.
InitializeHSS
(
HTML
)
elif
action
==
'Terminate_HSS'
:
EPC
.
TerminateHSS
()
EPC
.
TerminateHSS
(
HTML
)
elif
action
==
'Initialize_MME'
:
EPC
.
InitializeMME
()
EPC
.
InitializeMME
(
HTML
)
elif
action
==
'Terminate_MME'
:
EPC
.
TerminateMME
()
EPC
.
TerminateMME
(
HTML
)
elif
action
==
'Initialize_SPGW'
:
EPC
.
InitializeSPGW
()
EPC
.
InitializeSPGW
(
HTML
)
elif
action
==
'Terminate_SPGW'
:
EPC
.
TerminateSPGW
()
EPC
.
TerminateSPGW
(
HTML
)
elif
action
==
'Deploy_EPC'
:
EPC
.
DeployEpc
()
EPC
.
DeployEpc
(
HTML
)
elif
action
==
'Undeploy_EPC'
:
EPC
.
UndeployEpc
()
EPC
.
UndeployEpc
(
HTML
)
elif
action
==
'Initialize_FlexranCtrl'
:
CiTestObj
.
InitializeFlexranCtrl
(
HTML
,
RAN
,
EPC
)
elif
action
==
'Terminate_FlexranCtrl'
:
...
...
@@ -745,11 +736,11 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
elif
action
==
'Run_PhySim'
:
HTML
=
ldpc
.
Run_PhySim
(
HTML
,
CONST
,
id
)
elif
action
==
'Build_Image'
:
CONTAINERS
.
BuildImage
()
CONTAINERS
.
BuildImage
(
HTML
)
elif
action
==
'Deploy_Object'
:
CONTAINERS
.
DeployObject
()
CONTAINERS
.
DeployObject
(
HTML
,
EPC
)
elif
action
==
'Undeploy_Object'
:
CONTAINERS
.
UndeployObject
()
CONTAINERS
.
UndeployObject
(
HTML
,
RAN
)
else
:
sys
.
exit
(
'Invalid class (action) from xml'
)
if
not
RAN
.
prematureExit
:
...
...
ci-scripts/ran.py
View file @
e3f107fc
This diff is collapsed.
Click to expand it.
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