Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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-RAN
Commits
4c69e52c
Commit
4c69e52c
authored
May 22, 2019
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CI: proper merge on ci scripts.
Signed-off-by:
Raphael Defosseux
<
raphael.defosseux@eurecom.fr
>
parent
264725c5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
198 additions
and
450 deletions
+198
-450
ci-scripts/main.py
ci-scripts/main.py
+163
-181
ci-scripts/oai-ci-vm-tool
ci-scripts/oai-ci-vm-tool
+5
-7
ci-scripts/reportBuildLocally.sh
ci-scripts/reportBuildLocally.sh
+21
-16
ci-scripts/reportTestLocally.sh
ci-scripts/reportTestLocally.sh
+0
-1
ci-scripts/runTestOnVM.sh
ci-scripts/runTestOnVM.sh
+9
-16
ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml
...s/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml
+0
-119
ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml
...pts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml
+0
-110
No files found.
ci-scripts/main.py
View file @
4c69e52c
# dummy commit
#/*
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * contributor license agreements. See the NOTICE file distributed with
...
@@ -44,9 +43,6 @@ ENB_PROCESS_SEG_FAULT = -11
...
@@ -44,9 +43,6 @@ ENB_PROCESS_SEG_FAULT = -11
ENB_PROCESS_ASSERTION
=
-
12
ENB_PROCESS_ASSERTION
=
-
12
ENB_PROCESS_REALTIME_ISSUE
=
-
13
ENB_PROCESS_REALTIME_ISSUE
=
-
13
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
14
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
14
UE_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
20
UE_PROCESS_COULD_NOT_SYNC
=
-
21
UE_PROCESS_ASSERTION
=
-
22
HSS_PROCESS_FAILED
=
-
2
HSS_PROCESS_FAILED
=
-
2
HSS_PROCESS_OK
=
+
2
HSS_PROCESS_OK
=
+
2
MME_PROCESS_FAILED
=
-
3
MME_PROCESS_FAILED
=
-
3
...
@@ -54,8 +50,11 @@ MME_PROCESS_OK = +3
...
@@ -54,8 +50,11 @@ MME_PROCESS_OK = +3
SPGW_PROCESS_FAILED
=
-
4
SPGW_PROCESS_FAILED
=
-
4
SPGW_PROCESS_OK
=
+
4
SPGW_PROCESS_OK
=
+
4
UE_IP_ADDRESS_ISSUE
=
-
5
UE_IP_ADDRESS_ISSUE
=
-
5
UE_PROCESS_FAILED
=
-
6
OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
20
UE_PROCESS_OK
=
+
6
OAI_UE_PROCESS_COULD_NOT_SYNC
=
-
21
OAI_UE_PROCESS_ASSERTION
=
-
22
OAI_UE_PROCESS_FAILED
=
-
6
OAI_UE_PROCESS_OK
=
+
6
#-----------------------------------------------------------
#-----------------------------------------------------------
# Import
# Import
...
@@ -70,7 +69,6 @@ import xml.etree.ElementTree as ET
...
@@ -70,7 +69,6 @@ import xml.etree.ElementTree as ET
import
logging
import
logging
import
datetime
import
datetime
import
signal
import
signal
#import platform
from
multiprocessing
import
Process
,
Lock
,
SimpleQueue
from
multiprocessing
import
Process
,
Lock
,
SimpleQueue
logging
.
basicConfig
(
logging
.
basicConfig
(
level
=
logging
.
DEBUG
,
level
=
logging
.
DEBUG
,
...
@@ -144,14 +142,13 @@ class SSHConnection():
...
@@ -144,14 +142,13 @@ class SSHConnection():
self
.
UEUserName
=
''
self
.
UEUserName
=
''
self
.
UEPassword
=
''
self
.
UEPassword
=
''
self
.
UE_instance
=
''
self
.
UE_instance
=
''
self
.
UELogFile
=
''
self
.
UESourceCodePath
=
''
self
.
UESourceCodePath
=
''
self
.
UELogFile
=
''
self
.
Build_OAI_UE_args
=
''
self
.
Build_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_eNB_args
=
''
self
.
Initialize_OAI_eNB_args
=
''
self
.
clean_repository
=
True
self
.
clean_repository
=
True
self
.
eNBOsVersion
=
''
def
open
(
self
,
ipaddress
,
username
,
password
):
def
open
(
self
,
ipaddress
,
username
,
password
):
count
=
0
count
=
0
connect_status
=
False
connect_status
=
False
...
@@ -342,7 +339,7 @@ class SSHConnection():
...
@@ -342,7 +339,7 @@ class SSHConnection():
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# no need to remove in log (git clean did the trick)
# no need to remove in log (git clean did the trick)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_eNB_args
+
' 2>&1 | stdbuf -o0 tee
-a
compile_oai_enb.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_eNB_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_enb.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'mkdir -p build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mkdir -p build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_enb.log '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_enb.log '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
...
@@ -380,7 +377,7 @@ class SSHConnection():
...
@@ -380,7 +377,7 @@ class SSHConnection():
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# no need to remove in log (git clean did the trick)
# no need to remove in log (git clean did the trick)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee
-a
compile_oai_ue.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_ue.log'
,
'Bypassing the Tests'
,
600
)
self
.
command
(
'mkdir -p build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mkdir -p build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv log/* '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_ue.log '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
self
.
command
(
'mv compile_oai_ue.log '
+
'build_log_'
+
self
.
testCase_id
,
'\$'
,
5
)
...
@@ -503,7 +500,7 @@ class SSHConnection():
...
@@ -503,7 +500,7 @@ class SSHConnection():
result
=
re
.
search
(
'type: b200'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'type: b200'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
logging
.
debug
(
'Found a B2xx device --> resetting it'
)
logging
.
debug
(
'Found a B2xx device --> resetting it'
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S b2xx_fx3_utils --reset-device'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S b2xx_fx3_utils --reset-device'
,
'\$'
,
10
)
# Reloading FGPA bin firmware
# Reloading FGPA bin firmware
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
# Make a copy and adapt to EPC / eNB IP addresses
# Make a copy and adapt to EPC / eNB IP addresses
...
@@ -514,15 +511,11 @@ class SSHConnection():
...
@@ -514,15 +511,11 @@ class SSHConnection():
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./ran_build/build/'
+
self
.
air_interface
+
'-softmodem -O '
+
self
.
eNBSourceCodePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./ran_build/build/'
+
self
.
air_interface
+
'-softmodem -O '
+
self
.
eNBSourceCodePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh '
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
#to use daemon on CentOS we need to source the function
#linux_distro = platform.linux_distribution()[0]
#if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE):
#self.command('source /etc/init.d/functions', '\$', 5)
#use nohup instead of daemon
#use nohup instead of daemon
#self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
#self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
self
.
command
(
'echo $USER; nohup sudo ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
+
' 2>&1 &'
,
self
.
eNBUserName
,
5
)
self
.
command
(
'echo $USER; nohup sudo ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
+
' 2>&1 &'
,
self
.
eNBUserName
,
5
)
if
not
rruCheck
:
if
not
rruCheck
:
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
if
extra_options
!=
''
:
if
extra_options
!=
''
:
...
@@ -613,24 +606,27 @@ class SSHConnection():
...
@@ -613,24 +606,27 @@ class SSHConnection():
if
self
.
UEIPAddress
==
''
or
self
.
UEUserName
==
''
or
self
.
UEPassword
==
''
or
self
.
UESourceCodePath
==
''
:
if
self
.
UEIPAddress
==
''
or
self
.
UEUserName
==
''
or
self
.
UEPassword
==
''
or
self
.
UESourceCodePath
==
''
:
Usage
()
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
#initialize_OAI_UE_flag = True
result
=
re
.
search
(
'--no-L2-connect'
,
str
(
self
.
Initialize_OAI_UE_args
))
#pStatus = self.CheckOAIUEProcessExist(initialize_OAI_UE_flag)
if
result
is
None
:
#if (pStatus < 0):
check_eNB
=
True
# self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', pStatus)
check_OAI_UE
=
False
# self.CreateHtmlTabFooter(False)
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
)
# sys.exit(1)
if
(
pStatus
<
0
):
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
pStatus
)
self
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
1
)
self
.
open
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
)
self
.
open
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
)
# b2xx_fx3_utils reset procedure
# b2xx_fx3_utils reset procedure
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
result
=
re
.
search
(
'type:
n3xx
'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'type:
b200
'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
pass
logging
.
debug
(
'Found a B2xx device --> resetting it'
)
logging
.
debug
(
'Found a B2xx device --> resetting it'
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S
sudo b2xx_fx3_utils --reset-device'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S
b2xx_fx3_utils --reset-device'
,
'\$'
,
10
)
# Reloading FGPA bin firmware
# Reloading FGPA bin firmware
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
else
:
result
=
re
.
search
(
'type: n3xx'
,
str
(
self
.
ssh
.
before
))
logging
.
debug
(
'Did not find any B2xx device'
)
if
result
is
not
None
:
logging
.
debug
(
'Found a N3xx device --> resetting it'
)
self
.
command
(
'cd '
+
self
.
UESourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
UESourceCodePath
,
'\$'
,
5
)
# Initialize_OAI_UE_args usually start with -C and followed by the location in repository
# Initialize_OAI_UE_args usually start with -C and followed by the location in repository
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
...
@@ -638,29 +634,34 @@ class SSHConnection():
...
@@ -638,29 +634,34 @@ class SSHConnection():
self
.
command
(
'echo "ulimit -c unlimited && ./'
+
self
.
air_interface
+
'-uesoftmodem '
+
self
.
Initialize_OAI_UE_args
+
'" > ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./'
+
self
.
air_interface
+
'-uesoftmodem '
+
self
.
Initialize_OAI_UE_args
+
'" > ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S rm -Rf '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S rm -Rf '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
#to use daemon on CentOS we need to source the function
#linux_distro = platform.linux_distribution()[0]
#if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE):
#self.command('source /etc/init.d/functions', '\$', 5)
#use nohup instead of daemon
self
.
command
(
'echo $USER; nohup sudo ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
+
' > '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log '
+
' 2>&1 &'
,
self
.
UEUserName
,
5
)
#self.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/ran_build/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
self
.
UELogFile
=
'ue_'
+
self
.
testCase_id
+
'.log'
self
.
UELogFile
=
'ue_'
+
self
.
testCase_id
+
'.log'
time
.
sleep
(
6
)
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
# We are now looping several times to hope we really sync w/ an eNB
doLoop
=
True
doOutterLoop
=
True
loopCounter
=
10
outterLoopCounter
=
5
while
(
doLoop
):
gotSyncStatus
=
True
loopCounter
=
loopCounter
-
1
fullSyncStatus
=
True
if
(
loopCounter
==
0
):
while
(
doOutterLoop
):
self
.
close
()
self
.
command
(
'cd '
+
self
.
UESourceCodePath
+
'/cmake_targets/ran_build/build'
,
'\$'
,
5
)
doLoop
=
False
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S rm -Rf '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
logging
.
error
(
'
\u001B
[1;37;41m UE logging system did not show got sync!
\u001B
[0m'
)
#use nohup instead of daemon
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
#self.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/lte_build_oai/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5)
self
.
CreateHtmlTabFooter
(
False
)
self
.
command
(
'echo $USER; nohup sudo ./my-lte-uesoftmodem-run'
+
str
(
self
.
UE_instance
)
+
'.sh'
+
' > '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log '
+
' 2>&1 &'
,
self
.
UEUserName
,
5
)
sys
.
exit
(
1
)
time
.
sleep
(
6
)
else
:
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 cat '
+
self
.
UELogFile
+
' | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
4
)
doLoop
=
True
loopCounter
=
10
gotSyncStatus
=
True
# the 'got sync' message is for the UE threads synchronization
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
# Here should never occur
logging
.
error
(
'"got sync" message never showed!'
)
gotSyncStatus
=
False
doLoop
=
False
continue
self
.
command
(
'stdbuf -o0 cat ue_'
+
self
.
testCase_id
+
'.log | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
4
)
if
self
.
air_interface
==
'nr'
:
if
self
.
air_interface
==
'nr'
:
result
=
re
.
search
(
'Starting sync detection'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'Starting sync detection'
,
str
(
self
.
ssh
.
before
))
else
:
else
:
...
@@ -669,57 +670,76 @@ class SSHConnection():
...
@@ -669,57 +670,76 @@ class SSHConnection():
time
.
sleep
(
10
)
time
.
sleep
(
10
)
else
:
else
:
doLoop
=
False
doLoop
=
False
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'OK'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
logging
.
debug
(
'Found "got sync" message!'
)
logging
.
debug
(
'
\u001B
[1m Initialize OAI UE Completed
\u001B
[0m'
)
if
gotSyncStatus
==
False
:
# we certainly need to stop the lte-uesoftmodem process if it is still running!
self
.
command
(
'ps -aux | grep --text --color=never softmodem | grep -v grep'
,
'\$'
,
4
)
result
=
re
.
search
(
'-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal=SIGINT -r *-uesoftmodem'
,
'\$'
,
4
)
time
.
sleep
(
3
)
continue
if
self
.
air_interface
==
'nr'
:
fullSyncStatus
=
True
doOutterLoop
=
False
else
:
# We are now checking if sync w/ eNB DOES NOT OCCUR
# Usually during the cell synchronization stage, the UE returns with No cell synchronization message
doLoop
=
True
loopCounter
=
10
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
# Here we do have a great chance that the UE did cell-sync w/ eNB
doLoop
=
False
doOutterLoop
=
False
fullSyncStatus
=
True
continue
self
.
command
(
'stdbuf -o0 cat ue_'
+
self
.
testCase_id
+
'.log | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
4
)
result
=
re
.
search
(
'No cell synchronization found'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
time
.
sleep
(
6
)
else
:
doLoop
=
False
fullSyncStatus
=
False
logging
.
debug
(
'Found: "No cell synchronization" message! --> try again'
)
time
.
sleep
(
6
)
self
.
command
(
'ps -aux | grep --text --color=never softmodem | grep -v grep'
,
'\$'
,
4
)
result
=
re
.
search
(
'lte-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal=SIGINT lte-uesoftmodem'
,
'\$'
,
4
)
outterLoopCounter
=
outterLoopCounter
-
1
if
(
outterLoopCounter
==
0
):
doOutterLoop
=
False
if
fullSyncStatus
and
gotSyncStatus
and
self
.
air_interface
==
'lte'
:
result
=
re
.
search
(
'--no-L2-connect'
,
str
(
self
.
Initialize_OAI_UE_args
))
if
result
is
None
:
self
.
command
(
'ifconfig oaitun_ue1'
,
'\$'
,
4
)
result
=
re
.
search
(
'inet addr'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
logging
.
debug
(
'
\u001B
[1m oaitun_ue1 interface is mounted and configured
\u001B
[0m'
)
else
:
logging
.
error
(
'
\u001B
[1m oaitun_ue1 interface is either NOT mounted or NOT configured
\u001B
[0m'
)
self
.
close
()
self
.
close
()
# For the moment we are always OK!!!
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'OK'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
logging
.
debug
(
'
\u001B
[1m Initialize OAI UE Completed
\u001B
[0m'
)
def
InitializeOAIeNB
(
self
):
def
InitializeOAIeNB
(
self
):
if
self
.
eNBIPAddress
==
''
or
self
.
eNBUserName
==
''
or
self
.
eNBPassword
==
''
or
self
.
eNBSourceCodePath
==
''
:
if
self
.
eNBIPAddress
==
''
or
self
.
eNBUserName
==
''
or
self
.
eNBPassword
==
''
or
self
.
eNBSourceCodePath
==
''
:
Usage
()
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
#initialize_OAI_eNB_flag = True
#pStatus = self.CheckOAIeNBProcessExist(initialize_OAI_eNB_flag)
#if (pStatus < 0):
# self.CreateHtmlTestRow(self.Initialize_OAI_eNB_args, 'KO', pStatus)
# self.CreateHtmlTabFooter(False)
# sys.exit(1)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
# Initialize_OAI_eNB_args usually start with -C and followed by the location in repository
#full_config_file = self.Initialize_OAI_eNB_args.replace('-O ','')
#extIdx = full_config_file.find('.conf')
#if (extIdx > 0):
# extra_options = full_config_file[extIdx + 5:]
# # if tracer options is on, compiling and running T Tracer
# result = re.search('T_stdout', str(extra_options))
## if result is not None:
# logging.debug('\u001B[1m Compiling and launching T Tracer\u001B[0m')
# self.command('cd common/utils/T/tracer', '\$', 5)
# self.command('make', '\$', 10)
# self.command('echo $USER; nohup ./record -d ../T_messages.txt -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '_record.raw -ON -off VCD -off HEAVY -off LEGACY_GROUP_TRACE -off LEGACY_GROUP_DEBUG > ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '_record.log 2>&1 &', self.eNBUserName, 5)
# self.command('cd ' + self.eNBSourceCodePath, '\$', 5)
# full_config_file = full_config_file[:extIdx + 5]
# config_path, config_file = os.path.split(full_config_file)
#ci_full_config_file = config_path + '/ci-' + config_file
#rruCheck = False
#result = re.search('rru', str(config_file))
#if result is not None:
# rruCheck = True
## Make a copy and adapt to EPC / eNB IP addresses
#self.command('cp ' + full_config_file + ' ' + ci_full_config_file, '\$', 5)
#self.command('sed -i -e \'s/CI_eNB_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2);
# Launch eNB with the modified config file
# Launch eNB with the modified config file
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets/ran_build/build'
,
'\$'
,
5
)
self
.
command
(
'cd cmake_targets/ran_build/build'
,
'\$'
,
5
)
#self.command('echo "ulimit -c unlimited && ./' + self.air_interface + '-softmodem ' + self.Initialize_OAI_eNB_args + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
self
.
command
(
'echo "ulimit -c unlimited && ./'
+
self
.
air_interface
+
'-softmodem '
+
self
.
Initialize_OAI_eNB_args
+
'|& tee '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./'
+
self
.
air_interface
+
'-softmodem '
+
self
.
Initialize_OAI_eNB_args
+
'|& tee '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/'
+
self
.
eNBLogFile
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -Rf '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
#to use daemon on CentOS we need to source the function
#linux_distro = platform.linux_distribution()[0]
#if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE):
#self.command('source /etc/init.d/functions', '\$', 5)
#use nohup instead of daemon
#use nohup instead of daemon
self
.
command
(
'echo $USER; nohup sudo ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
+
' 2>&1 &'
,
self
.
eNBUserName
,
5
)
self
.
command
(
'echo $USER; nohup sudo ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
+
' > '
+
self
.
eNBSourceCodePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log'
+
' 2>&1 &'
,
self
.
eNBUserName
,
5
)
#self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
#self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
...
@@ -727,38 +747,17 @@ class SSHConnection():
...
@@ -727,38 +747,17 @@ class SSHConnection():
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
doLoop
=
True
doLoop
=
True
loopCounter
=
10
loopCounter
=
10
print
(
'gNB log file: '
+
self
.
eNBLogFile
)
while
(
doLoop
):
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
if
(
loopCounter
==
0
):
# In case of T tracer recording, we may need to kill it
#result = re.search('T_stdout', str(self.Initialize_OAI_eNB_args))
#if result is not None:
# self.command('killall --signal SIGKILL record', '\$', 5)
self
.
close
()
self
.
close
()
doLoop
=
False
doLoop
=
False
logging
.
error
(
'
\u001B
[1;37;41m eNB logging system did not show got sync!
\u001B
[0m'
)
logging
.
error
(
'
\u001B
[1;37;41m eNB logging system did not show got sync!
\u001B
[0m'
)
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_eNB_args
,
'KO'
,
ALL_PROCESSES_OK
,
'OAI eNB'
)
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_eNB_args
,
'KO'
,
ALL_PROCESSES_OK
,
'OAI eNB'
)
self
.
CreateHtmlTabFooter
(
False
)
self
.
CreateHtmlTabFooter
(
False
)
## In case of T tracer recording, we need to kill tshark on EPC side
#result = re.search('T_stdout', str(self.Initialize_OAI_eNB_args))
#if result is not None:
# self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
# logging.debug('\u001B[1m Stopping tshark \u001B[0m')
# self.command('echo ' + self.EPCPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
# self.close()
# time.sleep(1)
# pcap_log_file = 'enb_' + self.testCase_id + '_s1log.pcap'
# copyin_res = self.copyin(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, '/tmp/' + pcap_log_file, '.')
# if (copyin_res == 0):
# self.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, pcap_log_file, self.eNBSourceCodePath + '/cmake_targets/.')
sys
.
exit
(
1
)
sys
.
exit
(
1
)
else
:
else
:
#print('current directory: ' + os.getcwd())
#self.command('pwd', '\$', 4)
#print('self.command pwd: ' + str(self.ssh.before))
self
.
command
(
'stdbuf -o0 cat '
+
self
.
eNBLogFile
+
' | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
30
)
self
.
command
(
'stdbuf -o0 cat '
+
self
.
eNBLogFile
+
' | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
30
)
#print(self.ssh.before)
result
=
re
.
search
(
'got sync'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'got sync'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
if
result
is
None
:
time
.
sleep
(
11
)
time
.
sleep
(
11
)
...
@@ -939,7 +938,7 @@ class SSHConnection():
...
@@ -939,7 +938,7 @@ class SSHConnection():
return
return
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
device_id
=
'catm'
device_id
=
'catm'
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
str
(
moduleIPAddr
)
+
' 2>&1 | stdbuf -o0 tee
-a
ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
str
(
moduleIPAddr
)
+
' 2>&1 | stdbuf -o0 tee ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
# TIMEOUT CASE
# TIMEOUT CASE
if
ping_status
<
0
:
if
ping_status
<
0
:
message
=
'Ping with UE ('
+
str
(
moduleIPAddr
)
+
') crashed due to TIMEOUT!'
message
=
'Ping with UE ('
+
str
(
moduleIPAddr
)
+
') crashed due to TIMEOUT!'
...
@@ -1288,7 +1287,7 @@ class SSHConnection():
...
@@ -1288,7 +1287,7 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee
-a
ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
ping_status
=
self
.
command
(
'stdbuf -o0 ping '
+
self
.
ping_args
+
' '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
# TIMEOUT CASE
# TIMEOUT CASE
if
ping_status
<
0
:
if
ping_status
<
0
:
message
=
'Ping with UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT!'
message
=
'Ping with UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT!'
...
@@ -1823,9 +1822,9 @@ class SSHConnection():
...
@@ -1823,9 +1822,9 @@ class SSHConnection():
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
if
(
device_id
==
'OAI-UE'
):
if
(
device_id
==
'OAI-UE'
):
iperf_status
=
self
.
command
(
'iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
' -B '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee
-a
iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
iperf_status
=
self
.
command
(
'iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
' -B '
+
UE_IPAddress
+
' 2>&1 | stdbuf -o0 tee iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
else
:
else
:
iperf_status
=
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
'" 2>&1 | stdbuf -o0 tee
-a
iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
iperf_status
=
self
.
command
(
'stdbuf -o0 adb -s '
+
device_id
+
' shell "/data/local/tmp/iperf -c '
+
EPC_Iperf_UE_IPAddress
+
' '
+
modified_options
+
' -p '
+
str
(
port
)
+
'" 2>&1 | stdbuf -o0 tee iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
# TIMEOUT Case
# TIMEOUT Case
if
iperf_status
<
0
:
if
iperf_status
<
0
:
self
.
close
()
self
.
close
()
...
@@ -1927,13 +1926,12 @@ class SSHConnection():
...
@@ -1927,13 +1926,12 @@ class SSHConnection():
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
if
(
useIperf3
):
if
(
useIperf3
):
self
.
command
(
'stdbuf -o0 iperf3 -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee
-a
iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
self
.
command
(
'stdbuf -o0 iperf3 -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
clientStatus
=
0
clientStatus
=
0
self
.
Iperf_analyzeV3Output
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
)
self
.
Iperf_analyzeV3Output
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
)
else
:
else
:
iperf_status
=
self
.
command
(
'stdbuf -o0 iperf -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee -a iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
iperf_status
=
self
.
command
(
'stdbuf -o0 iperf -c '
+
UE_IPAddress
+
' '
+
modified_options
+
' 2>&1 | stdbuf -o0 tee iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
int
(
iperf_time
)
*
5.0
)
if
iperf_status
<
0
:
if
iperf_status
<
0
:
self
.
close
()
self
.
close
()
message
=
'iperf on UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT !'
message
=
'iperf on UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT !'
...
@@ -2218,7 +2216,7 @@ class SSHConnection():
...
@@ -2218,7 +2216,7 @@ class SSHConnection():
status
=
status_queue
.
get
()
status
=
status_queue
.
get
()
if
(
status
<
0
):
if
(
status
<
0
):
result
=
status
result
=
status
if
result
==
UE_PROCESS_FAILED
:
if
result
==
OAI_
UE_PROCESS_FAILED
:
fileCheck
=
re
.
search
(
'ue_'
,
str
(
self
.
UELogFile
))
fileCheck
=
re
.
search
(
'ue_'
,
str
(
self
.
UELogFile
))
if
fileCheck
is
not
None
:
if
fileCheck
is
not
None
:
self
.
copyin
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
,
self
.
UESourceCodePath
+
'/cmake_targets/'
+
self
.
UELogFile
,
'.'
)
self
.
copyin
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
,
self
.
UESourceCodePath
+
'/cmake_targets/'
+
self
.
UELogFile
,
'.'
)
...
@@ -2230,13 +2228,13 @@ class SSHConnection():
...
@@ -2230,13 +2228,13 @@ class SSHConnection():
def
CheckOAIUEProcess
(
self
,
status_queue
):
def
CheckOAIUEProcess
(
self
,
status_queue
):
try
:
try
:
self
.
open
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
)
self
.
open
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -
v grep | grep --color=never '
+
self
.
air_interface
+
'-uesoftmodem
'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -
-color=never '
+
self
.
air_interface
+
'-uesoftmodem | grep -v grep
'
,
'\$'
,
5
)
result
=
re
.
search
(
self
.
air_interface
+
'-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
self
.
air_interface
+
'-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
if
result
is
None
:
logging
.
debug
(
'
\u001B
[1;37;41m OAI UE Process Not Found!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m OAI UE Process Not Found!
\u001B
[0m'
)
status_queue
.
put
(
UE_PROCESS_FAILED
)
status_queue
.
put
(
OAI_
UE_PROCESS_FAILED
)
else
:
else
:
status_queue
.
put
(
UE_PROCESS_OK
)
status_queue
.
put
(
OAI_
UE_PROCESS_OK
)
self
.
close
()
self
.
close
()
except
:
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
...
@@ -2244,7 +2242,7 @@ class SSHConnection():
...
@@ -2244,7 +2242,7 @@ class SSHConnection():
def
CheckeNBProcess
(
self
,
status_queue
):
def
CheckeNBProcess
(
self
,
status_queue
):
try
:
try
:
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -
v grep | grep --color=never '
+
self
.
air_interface
+
'-softmodem
'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep -
-color=never '
+
self
.
air_interface
+
'-softmodem | grep -v grep
'
,
'\$'
,
5
)
result
=
re
.
search
(
self
.
air_interface
+
'-softmodem'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
self
.
air_interface
+
'-softmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
if
result
is
None
:
logging
.
debug
(
'
\u001B
[1;37;41m eNB Process Not Found!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m eNB Process Not Found!
\u001B
[0m'
)
...
@@ -2360,28 +2358,25 @@ class SSHConnection():
...
@@ -2360,28 +2358,25 @@ class SSHConnection():
if
foundAssertion
and
(
msgLine
<
3
):
if
foundAssertion
and
(
msgLine
<
3
):
msgLine
+=
1
msgLine
+=
1
msgAssertion
+=
str
(
line
)
msgAssertion
+=
str
(
line
)
result
=
re
.
search
(
'Generating LTE_RRCConnectionSetup|Generating RRCConnectionSetup'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionSetupComplete from UE'
,
str
(
line
))
if
result
is
not
None
:
rrcSetupRequest
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionSetupComplete from UE|RRCConnectionSetupComplete from UE'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcSetupComplete
+=
1
rrcSetupComplete
+=
1
result
=
re
.
search
(
'Generate LTE_RRCConnectionRelease
|Generate RRCConnectionRelease
'
,
str
(
line
))
result
=
re
.
search
(
'Generate LTE_RRCConnectionRelease'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReleaseRequest
+=
1
rrcReleaseRequest
+=
1
result
=
re
.
search
(
'Generate LTE_RRCConnectionReconfiguration
|Generate RRCConnectionReconfiguration
'
,
str
(
line
))
result
=
re
.
search
(
'Generate LTE_RRCConnectionReconfiguration'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReconfigRequest
+=
1
rrcReconfigRequest
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReconfigurationComplete from UE rnti
|RRCConnectionReconfigurationComplete from UE rnti
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReconfigurationComplete from UE rnti'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReconfigComplete
+=
1
rrcReconfigComplete
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentRequest
|RRCConnectionReestablishmentRequest
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentRequest'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishRequest
+=
1
rrcReestablishRequest
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentComplete
|RRCConnectionReestablishmentComplete
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentComplete'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishComplete
+=
1
rrcReestablishComplete
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentReject
|RRCConnectionReestablishmentReject
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentReject'
,
str
(
line
))
if
result
is
not
None
:
if
result
is
not
None
:
rrcReestablishReject
+=
1
rrcReestablishReject
+=
1
result
=
re
.
search
(
'CDRX configuration activated after RRC Connection'
,
str
(
line
))
result
=
re
.
search
(
'CDRX configuration activated after RRC Connection'
,
str
(
line
))
...
@@ -2479,6 +2474,7 @@ class SSHConnection():
...
@@ -2479,6 +2474,7 @@ class SSHConnection():
foundRealTimeIssue
=
False
foundRealTimeIssue
=
False
uciStatMsgCount
=
0
uciStatMsgCount
=
0
pdcpDataReqFailedCount
=
0
pdcpDataReqFailedCount
=
0
badDciCount
=
0
rrcConnectionRecfgComplete
=
0
rrcConnectionRecfgComplete
=
0
no_cell_sync_found
=
False
no_cell_sync_found
=
False
mib_found
=
False
mib_found
=
False
...
@@ -2617,12 +2613,10 @@ class SSHConnection():
...
@@ -2617,12 +2613,10 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1;37;41m UE ended with a Segmentation Fault!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m UE ended with a Segmentation Fault!
\u001B
[0m'
)
return
ENB_PROCESS_SEG_FAULT
return
ENB_PROCESS_SEG_FAULT
if
foundAssertion
:
if
foundAssertion
:
logging
.
debug
(
'
\u001B
[1;37;43m UE ended with an assertion!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;30;43m UE showed an assertion!
\u001B
[0m'
)
# removed for esthetics
self
.
htmlUEFailureMsg
+=
'UE showed an assertion!
\n
'
#self.htmlUEFailureMsg += msgAssertion
self
.
htmlUEFailureMsg
+=
'UE ended with an assertion!
\n
'
if
not
mib_found
or
not
frequency_found
:
if
not
mib_found
or
not
frequency_found
:
return
UE_PROCESS_ASSERTION
return
OAI_
UE_PROCESS_ASSERTION
if
foundRealTimeIssue
:
if
foundRealTimeIssue
:
logging
.
debug
(
'
\u001B
[1;37;41m UE faced real time issues!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m UE faced real time issues!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE faced real time issues!
\n
'
self
.
htmlUEFailureMsg
+=
'UE faced real time issues!
\n
'
...
@@ -2630,7 +2624,7 @@ class SSHConnection():
...
@@ -2630,7 +2624,7 @@ class SSHConnection():
if
no_cell_sync_found
and
not
mib_found
:
if
no_cell_sync_found
and
not
mib_found
:
logging
.
debug
(
'
\u001B
[1;37;41m UE could not synchronize !
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m UE could not synchronize !
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE could not synchronize!
\n
'
self
.
htmlUEFailureMsg
+=
'UE could not synchronize!
\n
'
return
UE_PROCESS_COULD_NOT_SYNC
return
OAI_
UE_PROCESS_COULD_NOT_SYNC
return
0
return
0
def
TerminateeNB
(
self
):
def
TerminateeNB
(
self
):
...
@@ -2642,7 +2636,7 @@ class SSHConnection():
...
@@ -2642,7 +2636,7 @@ class SSHConnection():
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S daemon --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --stop'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S daemon --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --stop'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGINT -r .*-softmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGINT -r .*-softmodem || true'
,
'\$'
,
5
)
time
.
sleep
(
5
)
time
.
sleep
(
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep softmodem | grep -v grep'
,
'\$'
,
5
)
self
.
command
(
'stdbuf -o0 ps -aux | grep
--color=never
softmodem | grep -v grep'
,
'\$'
,
5
)
result
=
re
.
search
(
'-softmodem'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'-softmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGKILL -r .*-softmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGKILL -r .*-softmodem || true'
,
'\$'
,
5
)
...
@@ -2720,10 +2714,6 @@ class SSHConnection():
...
@@ -2720,10 +2714,6 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
self
.
command
(
'rm -f ./kill_hss.sh'
,
'\$'
,
5
)
self
.
command
(
'rm -f ./kill_hss.sh'
,
'\$'
,
5
)
#to use daemon on CentOS we need to source the function
#linux_distro = platform.linux_distribution()[0]
#if re.match('(.*)CentOS(.*)', linux_distro, re.IGNORECASE):
#self.command('source /etc/init.d/functions', '\$', 5)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S daemon --name=simulated_hss --stop'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S daemon --name=simulated_hss --stop'
,
'\$'
,
5
)
time
.
sleep
(
1
)
time
.
sleep
(
1
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL hss_sim'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL hss_sim'
,
'\$'
,
5
)
...
@@ -2796,7 +2786,7 @@ class SSHConnection():
...
@@ -2796,7 +2786,7 @@ class SSHConnection():
if
result
is
not
None
:
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGINT -r .*-uesoftmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGINT -r .*-uesoftmodem || true'
,
'\$'
,
5
)
time
.
sleep
(
5
)
time
.
sleep
(
5
)
self
.
command
(
'
stdbuf -o0 ps -aux | grep ue
softmodem | grep -v grep'
,
'\$'
,
5
)
self
.
command
(
'
ps -aux | grep --color=never
softmodem | grep -v grep'
,
'\$'
,
5
)
result
=
re
.
search
(
'-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'-uesoftmodem'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGKILL -r .*-uesoftmodem || true'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGKILL -r .*-uesoftmodem || true'
,
'\$'
,
5
)
...
@@ -2809,7 +2799,7 @@ class SSHConnection():
...
@@ -2809,7 +2799,7 @@ class SSHConnection():
if
(
copyin_res
==
-
1
):
if
(
copyin_res
==
-
1
):
logging
.
debug
(
'
\u001B
[1;37;41m Could not copy UE logfile to analyze it!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m Could not copy UE logfile to analyze it!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
=
'Could not copy UE logfile to analyze it!'
self
.
htmlUEFailureMsg
=
'Could not copy UE logfile to analyze it!'
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
UE_PROCESS_NOLOGFILE_TO_ANALYZE
,
'UE'
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
OAI_
UE_PROCESS_NOLOGFILE_TO_ANALYZE
,
'UE'
)
self
.
UELogFile
=
''
self
.
UELogFile
=
''
return
return
logging
.
debug
(
'
\u001B
[1m Analyzing UE logfile
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1m Analyzing UE logfile
\u001B
[0m'
)
...
@@ -2825,7 +2815,7 @@ class SSHConnection():
...
@@ -2825,7 +2815,7 @@ class SSHConnection():
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
,
'UE'
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
,
'UE'
)
# In case of sniffing on commercial eNBs we have random results
# In case of sniffing on commercial eNBs we have random results
# Not an error then
# Not an error then
if
(
logStatus
!=
UE_PROCESS_COULD_NOT_SYNC
)
or
(
ueAction
!=
'Sniffing'
):
if
(
logStatus
!=
OAI_
UE_PROCESS_COULD_NOT_SYNC
)
or
(
ueAction
!=
'Sniffing'
):
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlTabFooter
(
False
)
self
.
CreateHtmlTabFooter
(
False
)
...
@@ -2861,10 +2851,6 @@ class SSHConnection():
...
@@ -2861,10 +2851,6 @@ class SSHConnection():
time
.
sleep
(
self
.
idle_sleep_time
)
time
.
sleep
(
self
.
idle_sleep_time
)
self
.
CreateHtmlTestRow
(
str
(
self
.
idle_sleep_time
)
+
' sec'
,
'OK'
,
ALL_PROCESSES_OK
)
self
.
CreateHtmlTestRow
(
str
(
self
.
idle_sleep_time
)
+
' sec'
,
'OK'
,
ALL_PROCESSES_OK
)
def
IdleSleep
(
self
):
time
.
sleep
(
self
.
idle_sleep_time
)
self
.
CreateHtmlTestRow
(
str
(
self
.
idle_sleep_time
)
+
' sec'
,
'OK'
,
ALL_PROCESSES_OK
)
def
LogCollectBuild
(
self
):
def
LogCollectBuild
(
self
):
if
(
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
):
if
(
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
):
IPAddress
=
self
.
eNBIPAddress
IPAddress
=
self
.
eNBIPAddress
...
@@ -2895,7 +2881,6 @@ class SSHConnection():
...
@@ -2895,7 +2881,6 @@ class SSHConnection():
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap enb_*txt'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap enb_*txt'
,
'\$'
,
5
)
self
.
close
()
self
.
close
()
def
LogCollectPing
(
self
):
def
LogCollectPing
(
self
):
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
...
@@ -2971,21 +2956,22 @@ class SSHConnection():
...
@@ -2971,21 +2956,22 @@ class SSHConnection():
self
.
CpuNb
=
'4'
self
.
CpuNb
=
'4'
self
.
CpuModel
=
'Intel(R) Core(TM) i5-6200U'
self
.
CpuModel
=
'Intel(R) Core(TM) i5-6200U'
self
.
CpuMHz
=
'2399.996 MHz'
self
.
CpuMHz
=
'2399.996 MHz'
return
return
0
machine
=
None
if
machine
==
'eNB'
:
if
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
:
if
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
:
machine
=
'eNB'
IPAddress
=
self
.
eNBIPAddress
IPAddress
=
self
.
eNBIPAddress
UserName
=
self
.
eNBUserName
UserName
=
self
.
eNBUserName
Password
=
self
.
eNBPassword
Password
=
self
.
eNBPassword
else
:
elif
self
.
UEIPAddress
!=
''
and
self
.
UEUserName
!=
''
and
self
.
UEPassword
!=
''
:
return
-
1
machine
=
'UE'
if
machine
==
'UE'
:
IPAddress
=
self
.
UEIPAddress
if
self
.
UEIPAddress
!=
''
and
self
.
UEUserName
!=
''
and
self
.
UEPassword
!=
''
:
UserName
=
self
.
UEUserName
IPAddress
=
self
.
UEIPAddress
Password
=
self
.
UEPassword
UserName
=
self
.
UEUserName
if
machine
is
None
:
Password
=
self
.
UEPassword
Usage
()
else
:
sys
.
exit
(
'Insufficient Parameter'
)
return
-
1
self
.
open
(
IPAddress
,
UserName
,
Password
)
self
.
open
(
IPAddress
,
UserName
,
Password
)
self
.
command
(
'lsb_release -a'
,
'\$'
,
5
)
self
.
command
(
'lsb_release -a'
,
'\$'
,
5
)
result
=
re
.
search
(
'Description:
\\\\
t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'Description:
\\\\
t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)'
,
str
(
self
.
ssh
.
before
))
...
@@ -3002,7 +2988,7 @@ class SSHConnection():
...
@@ -3002,7 +2988,7 @@ class SSHConnection():
if
result
is
not
None
:
if
result
is
not
None
:
self
.
UhdVersion
=
result
.
group
(
'uhd_version'
)
self
.
UhdVersion
=
result
.
group
(
'uhd_version'
)
logging
.
debug
(
'UHD Version is: '
+
self
.
UhdVersion
)
logging
.
debug
(
'UHD Version is: '
+
self
.
UhdVersion
)
self
.
command
(
'echo '
+
Password
+
' | sudo -S uhd_find_devices'
,
'\$'
,
1
2
)
self
.
command
(
'echo '
+
Password
+
' | sudo -S uhd_find_devices'
,
'\$'
,
1
5
)
result
=
re
.
search
(
'product: (?P<usrp_board>[0-9A-Za-z]+)
\\\\
r
\\\\
n'
,
str
(
self
.
ssh
.
before
))
result
=
re
.
search
(
'product: (?P<usrp_board>[0-9A-Za-z]+)
\\\\
r
\\\\
n'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
if
result
is
not
None
:
self
.
UsrpBoard
=
result
.
group
(
'usrp_board'
)
self
.
UsrpBoard
=
result
.
group
(
'usrp_board'
)
...
@@ -3240,17 +3226,19 @@ class SSHConnection():
...
@@ -3240,17 +3226,19 @@ class SSHConnection():
elif
(
str
(
status
)
==
'KO'
):
elif
(
str
(
status
)
==
'KO'
):
if
(
processesStatus
==
0
):
if
(
processesStatus
==
0
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >'
+
str
(
status
)
+
'</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >'
+
str
(
status
)
+
'</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_FAILED
)
or
(
processesStatus
==
UE_PROCESS_FAILED
):
elif
(
processesStatus
==
ENB_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process not found</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process not found</td>
\n
'
)
elif
(
processesStatus
==
OAI_UE_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_SEG_FAULT
):
elif
(
processesStatus
==
ENB_PROCESS_SEG_FAULT
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Segmentation Fault</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Segmentation Fault</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
)
or
(
processesStatus
==
UE_PROCESS_ASSERTION
):
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
)
or
(
processesStatus
==
OAI_
UE_PROCESS_ASSERTION
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Assertion</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Assertion</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_REALTIME_ISSUE
):
elif
(
processesStatus
==
ENB_PROCESS_REALTIME_ISSUE
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process faced Real Time issue(s)</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process faced Real Time issue(s)</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
or
(
processesStatus
==
UE_PROCESS_NOLOGFILE_TO_ANALYZE
):
elif
(
processesStatus
==
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
or
(
processesStatus
==
OAI_
UE_PROCESS_NOLOGFILE_TO_ANALYZE
):
self
.
htmlFile
.
write
(
' <td bgcolor = "orange" >OK?</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "orange" >OK?</td>
\n
'
)
elif
(
processesStatus
==
UE_PROCESS_COULD_NOT_SYNC
):
elif
(
processesStatus
==
OAI_
UE_PROCESS_COULD_NOT_SYNC
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - UE could not sync</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - UE could not sync</td>
\n
'
)
elif
(
processesStatus
==
HSS_PROCESS_FAILED
):
elif
(
processesStatus
==
HSS_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - HSS process not found</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - HSS process not found</td>
\n
'
)
...
@@ -3365,9 +3353,6 @@ def Usage():
...
@@ -3365,9 +3353,6 @@ def Usage():
print
(
' --XMLTestFile=[XML Test File to be run]'
)
print
(
' --XMLTestFile=[XML Test File to be run]'
)
print
(
'------------------------------------------------------------'
)
print
(
'------------------------------------------------------------'
)
#def GetModeFromXML():
# SSH.mode = test.findtext('mode')
def
CheckClassValidity
(
action
,
id
):
def
CheckClassValidity
(
action
,
id
):
if
action
!=
'Build_eNB'
and
action
!=
'Initialize_eNB'
and
action
!=
'Terminate_eNB'
and
action
!=
'Initialize_UE'
and
action
!=
'Terminate_UE'
and
action
!=
'Attach_UE'
and
action
!=
'Detach_UE'
and
action
!=
'Build_OAI_UE'
and
action
!=
'Initialize_OAI_UE'
and
action
!=
'Terminate_OAI_UE'
and
action
!=
'Initialize_OAI_eNB'
and
action
!=
'Ping'
and
action
!=
'Iperf'
and
action
!=
'Reboot_UE'
and
action
!=
'Initialize_HSS'
and
action
!=
'Terminate_HSS'
and
action
!=
'Initialize_MME'
and
action
!=
'Terminate_MME'
and
action
!=
'Initialize_SPGW'
and
action
!=
'Terminate_SPGW'
and
action
!=
'Initialize_CatM_module'
and
action
!=
'Terminate_CatM_module'
and
action
!=
'Attach_CatM_module'
and
action
!=
'Detach_CatM_module'
and
action
!=
'Ping_CatM_module'
and
action
!=
'IdleSleep'
:
if
action
!=
'Build_eNB'
and
action
!=
'Initialize_eNB'
and
action
!=
'Terminate_eNB'
and
action
!=
'Initialize_UE'
and
action
!=
'Terminate_UE'
and
action
!=
'Attach_UE'
and
action
!=
'Detach_UE'
and
action
!=
'Build_OAI_UE'
and
action
!=
'Initialize_OAI_UE'
and
action
!=
'Terminate_OAI_UE'
and
action
!=
'Initialize_OAI_eNB'
and
action
!=
'Ping'
and
action
!=
'Iperf'
and
action
!=
'Reboot_UE'
and
action
!=
'Initialize_HSS'
and
action
!=
'Terminate_HSS'
and
action
!=
'Initialize_MME'
and
action
!=
'Terminate_MME'
and
action
!=
'Initialize_SPGW'
and
action
!=
'Terminate_SPGW'
and
action
!=
'Initialize_CatM_module'
and
action
!=
'Terminate_CatM_module'
and
action
!=
'Attach_CatM_module'
and
action
!=
'Detach_CatM_module'
and
action
!=
'Ping_CatM_module'
and
action
!=
'IdleSleep'
:
logging
.
debug
(
'ERROR: test-case '
+
id
+
' has wrong class '
+
action
)
logging
.
debug
(
'ERROR: test-case '
+
id
+
' has wrong class '
+
action
)
...
@@ -3388,7 +3373,7 @@ def GetParametersFromXML(action):
...
@@ -3388,7 +3373,7 @@ def GetParametersFromXML(action):
SSH
.
air_interface
=
'lte'
SSH
.
air_interface
=
'lte'
else
:
else
:
SSH
.
air_interface
=
SSH
.
air_interface
.
lower
()
SSH
.
air_interface
=
SSH
.
air_interface
.
lower
()
if
action
==
'Terminate_eNB'
:
if
action
==
'Terminate_eNB'
:
SSH
.
eNB_instance
=
test
.
findtext
(
'eNB_instance'
)
SSH
.
eNB_instance
=
test
.
findtext
(
'eNB_instance'
)
if
(
SSH
.
eNB_instance
is
None
):
if
(
SSH
.
eNB_instance
is
None
):
...
@@ -3492,9 +3477,6 @@ while len(argvs) > 1:
...
@@ -3492,9 +3477,6 @@ while len(argvs) > 1:
sys
.
exit
(
0
)
sys
.
exit
(
0
)
elif
re
.
match
(
'^\-\-mode=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^\-\-mode=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-mode=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
matchReg
=
re
.
match
(
'^\-\-mode=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
#if matchReg and mode is not None:
#print('Warning: the mode is defined in both xml file and command line')
#print('ignoring the mode defined in the xml file')
mode
=
matchReg
.
group
(
1
)
mode
=
matchReg
.
group
(
1
)
elif
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
matchReg
=
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
...
@@ -3678,7 +3660,7 @@ elif re.match('^FinalizeHtml$', mode, re.IGNORECASE):
...
@@ -3678,7 +3660,7 @@ elif re.match('^FinalizeHtml$', mode, re.IGNORECASE):
SSH
.
CreateHtmlFooter
(
SSH
.
finalStatus
)
SSH
.
CreateHtmlFooter
(
SSH
.
finalStatus
)
elif
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
)
or
re
.
match
(
'^TestUE$'
,
mode
,
re
.
IGNORECASE
):
elif
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
)
or
re
.
match
(
'^TestUE$'
,
mode
,
re
.
IGNORECASE
):
if
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
):
if
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
):
if
(
SSH
.
eNBRepository
==
''
or
SSH
.
eNBBranch
==
''
or
SSH
.
eNBSourceCodePath
==
''
)
:
if
SSH
.
eNBIPAddress
==
''
or
SSH
.
eNBRepository
==
''
or
SSH
.
eNBBranch
==
''
or
SSH
.
eNBUserName
==
''
or
SSH
.
eNBPassword
==
''
or
SSH
.
eNBSourceCodePath
==
''
or
SSH
.
EPCIPAddress
==
''
or
SSH
.
EPCUserName
==
''
or
SSH
.
EPCPassword
==
''
or
SSH
.
EPCType
==
''
or
SSH
.
EPCSourceCodePath
==
''
or
SSH
.
ADBIPAddress
==
''
or
SSH
.
ADBUserName
==
''
or
SSH
.
ADBPassword
==
''
:
Usage
()
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
sys
.
exit
(
'Insufficient Parameter'
)
if
(
SSH
.
eNBIPAddress
==
''
or
SSH
.
eNBUserName
==
''
or
SSH
.
eNBPassword
==
''
)
and
(
SSH
.
UEIPAddress
==
''
or
SSH
.
UEUserName
==
''
or
SSH
.
UEPassword
==
''
):
if
(
SSH
.
eNBIPAddress
==
''
or
SSH
.
eNBUserName
==
''
or
SSH
.
eNBPassword
==
''
)
and
(
SSH
.
UEIPAddress
==
''
or
SSH
.
UEUserName
==
''
or
SSH
.
UEPassword
==
''
):
...
@@ -3698,7 +3680,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
...
@@ -3698,7 +3680,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
sys
.
exit
(
'UE: Insufficient Parameter'
)
sys
.
exit
(
'UE: Insufficient Parameter'
)
#read test_case_list.xml file
#read test_case_list.xml file
# if no parameters for XML file, use default value
# if no parameters for XML file, use default value
if
(
SSH
.
nbTestXMLfiles
!=
1
):
if
(
SSH
.
nbTestXMLfiles
!=
1
):
xml_test_file
=
cwd
+
"/test_case_list.xml"
xml_test_file
=
cwd
+
"/test_case_list.xml"
else
:
else
:
...
...
ci-scripts/oai-ci-vm-tool
View file @
4c69e52c
...
@@ -301,7 +301,7 @@ case $key in
...
@@ -301,7 +301,7 @@ case $key in
ARCHIVES_LOC
=
enb_eth
ARCHIVES_LOC
=
enb_eth
LOG_PATTERN
=
.Rel15.txt
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
6
NB_PATTERN_FILES
=
6
BUILD_OPTIONS
=
"--eNB -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--eNB -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
NBARGS
=
$[$NBARGS
+256]
shift
shift
;;
;;
...
@@ -312,7 +312,7 @@ case $key in
...
@@ -312,7 +312,7 @@ case $key in
ARCHIVES_LOC
=
ue_eth
ARCHIVES_LOC
=
ue_eth
LOG_PATTERN
=
.Rel15.txt
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--UE -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--UE -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
NBARGS
=
$[$NBARGS
+256]
shift
shift
;;
;;
...
@@ -374,7 +374,7 @@ case $key in
...
@@ -374,7 +374,7 @@ case $key in
LOG_PATTERN
=
.Rel15.txt
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--phy_simulators"
BUILD_OPTIONS
=
"--phy_simulators"
VM_MEMORY
=
8192
VM_MEMORY
=
8192
RUN_OPTIONS
=
"./run_exec_autotests.bash -g
\"
01510*
\"
-q -np -b"
RUN_OPTIONS
=
"./run_exec_autotests.bash -g
\"
01510*
\"
-q -np -b"
NBARGS
=
$[$NBARGS
+256]
NBARGS
=
$[$NBARGS
+256]
;;
;;
...
@@ -410,7 +410,7 @@ case $key in
...
@@ -410,7 +410,7 @@ case $key in
ARCHIVES_LOC
=
enb_eth
ARCHIVES_LOC
=
enb_eth
LOG_PATTERN
=
.Rel15.txt
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
6
NB_PATTERN_FILES
=
6
BUILD_OPTIONS
=
"--eNB -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--eNB -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
NBARGS
=
$[$NBARGS
+256]
;;
;;
ue-ethernet
)
ue-ethernet
)
...
@@ -420,7 +420,7 @@ case $key in
...
@@ -420,7 +420,7 @@ case $key in
ARCHIVES_LOC
=
ue_eth
ARCHIVES_LOC
=
ue_eth
LOG_PATTERN
=
.Rel15.txt
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--UE -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--UE -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
NBARGS
=
$[$NBARGS
+256]
;;
;;
flexran-rtc
)
flexran-rtc
)
...
@@ -649,8 +649,6 @@ then
...
@@ -649,8 +649,6 @@ then
echo
"STATUS seems OK"
echo
"STATUS seems OK"
exit
$STATUS
exit
$STATUS
fi
fi
# end to comment out for L1-simulator
# Comment out or delete the following lines if you want to run RF-simulator in your branch and/or merge request
# Comment out or delete the following lines if you want to run RF-simulator in your branch and/or merge request
if
[[
$VM_NAME
=
~ .
*
-rf-sim
.
*
]]
if
[[
$VM_NAME
=
~ .
*
-rf-sim
.
*
]]
then
then
...
...
ci-scripts/reportBuildLocally.sh
View file @
4c69e52c
...
@@ -557,20 +557,21 @@ function report_build {
...
@@ -557,20 +557,21 @@ function report_build {
sca_summary_table_row ./archives/cppcheck/cppcheck.xml
"Expression depends on order of evaluation of side effects"
unknownEvaluationOrder
sca_summary_table_row ./archives/cppcheck/cppcheck.xml
"Expression depends on order of evaluation of side effects"
unknownEvaluationOrder
sca_summary_table_footer ./archives/cppcheck/cppcheck.xml
sca_summary_table_footer ./archives/cppcheck/cppcheck.xml
summary_table_header
"OAI Build eNB -- USRP option"
summary_table_header
"OAI Build eNB -- USRP option"
./archives/enb_usrp
summary_table_row
"LTE SoftModem - Release 15"
./archives/enb_usrp/lte-softmodem.Rel15.txt
"Built target lte-softmodem"
./enb_usrp_row1.html
summary_table_row
"LTE SoftModem - Release 15"
./archives/enb_usrp/lte-softmodem.Rel15.txt
"Built target lte-softmodem"
./enb_usrp_row1.html
summary_table_row
"Coding - Release 15"
./archives/enb_usrp/coding.Rel15.txt
"Built target coding"
./enb_usrp_row2.html
summary_table_row
"Coding - Release 15"
./archives/enb_usrp/coding.Rel15.txt
"Built target coding"
./enb_usrp_row2.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/enb_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./enb_usrp_row3.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/enb_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./enb_usrp_row3.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/enb_usrp/params_libconfig.Rel15.txt
"Built target params_libconfig"
./enb_usrp_row4.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/enb_usrp/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./enb_usrp_row4.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/enb_usrp/params_libconfig.Rel15.txt
"Built target params_libconfig"
./enb_usrp_row5.html
summary_table_footer
summary_table_footer
summary_table_header
"OAI Build basic simulator option"
summary_table_header
"OAI Build basic simulator option"
./archives/basic_sim
summary_table_row
"Basic Simulator eNb - Release 15"
./archives/basic_sim/basic_simulator_enb.txt
"Built target lte-softmodem"
./basic_sim_row1.html
summary_table_row
"Basic Simulator eNb - Release 15"
./archives/basic_sim/basic_simulator_enb.txt
"Built target lte-softmodem"
./basic_sim_row1.html
summary_table_row
"Basic Simulator UE - Release 15"
./archives/basic_sim/basic_simulator_ue.txt
"Built target lte-uesoftmodem"
./basic_sim_row2.html
summary_table_row
"Basic Simulator UE - Release 15"
./archives/basic_sim/basic_simulator_ue.txt
"Built target lte-uesoftmodem"
./basic_sim_row2.html
summary_table_row
"Conf 2 UE data - Release 15"
./archives/basic_sim/conf2uedata.Rel15.txt
"Built target conf2uedata"
./basic_sim_row3.html
summary_table_row
"Conf 2 UE data - Release 15"
./archives/basic_sim/conf2uedata.Rel15.txt
"Built target conf2uedata"
./basic_sim_row3.html
summary_table_footer
summary_table_footer
summary_table_header
"OAI Build Physical simulators option"
summary_table_header
"OAI Build Physical simulators option"
./archives/phy_sim
summary_table_row
"DL Simulator - Release 15"
./archives/phy_sim/dlsim.Rel15.txt
"Built target dlsim"
./phy_sim_row1.html
summary_table_row
"DL Simulator - Release 15"
./archives/phy_sim/dlsim.Rel15.txt
"Built target dlsim"
./phy_sim_row1.html
summary_table_row
"UL Simulator - Release 15"
./archives/phy_sim/ulsim.Rel15.txt
"Built target ulsim"
./phy_sim_row2.html
summary_table_row
"UL Simulator - Release 15"
./archives/phy_sim/ulsim.Rel15.txt
"Built target ulsim"
./phy_sim_row2.html
summary_table_row
"Coding - Release 15"
./archives/phy_sim/coding.Rel15.txt
"Built target coding"
./phy_sim_row3.html
summary_table_row
"Coding - Release 15"
./archives/phy_sim/coding.Rel15.txt
"Built target coding"
./phy_sim_row3.html
...
@@ -595,7 +596,7 @@ function report_build {
...
@@ -595,7 +596,7 @@ function report_build {
if
[
-f
archives/gnb_usrp/nr-softmodem.Rel15.txt
]
if
[
-f
archives/gnb_usrp/nr-softmodem.Rel15.txt
]
then
then
summary_table_header
"OAI Build gNB -- USRP option"
summary_table_header
"OAI Build gNB -- USRP option"
./archives/gnb_usrp
summary_table_row
"LTE SoftModem - Release 15"
./archives/gnb_usrp/nr-softmodem.Rel15.txt
"Built target nr-softmodem"
./gnb_usrp_row1.html
summary_table_row
"LTE SoftModem - Release 15"
./archives/gnb_usrp/nr-softmodem.Rel15.txt
"Built target nr-softmodem"
./gnb_usrp_row1.html
summary_table_row
"Coding - Release 15"
./archives/gnb_usrp/coding.Rel15.txt
"Built target coding"
./gnb_usrp_row2.html
summary_table_row
"Coding - Release 15"
./archives/gnb_usrp/coding.Rel15.txt
"Built target coding"
./gnb_usrp_row2.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/gnb_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./gnb_usrp_row3.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/gnb_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./gnb_usrp_row3.html
...
@@ -605,7 +606,7 @@ function report_build {
...
@@ -605,7 +606,7 @@ function report_build {
if
[
-f
archives/nrue_usrp/nr-uesoftmodem.Rel15.txt
]
if
[
-f
archives/nrue_usrp/nr-uesoftmodem.Rel15.txt
]
then
then
summary_table_header
"OAI Build 5G NR UE -- USRP option"
summary_table_header
"OAI Build 5G NR UE -- USRP option"
./archives/nrue_usrp
summary_table_row
"UE SoftModem - Release 15"
./archives/nrue_usrp/nr-uesoftmodem.Rel15.txt
"Built target nr-uesoftmodem"
./nrue_usrp_row1.html
summary_table_row
"UE SoftModem - Release 15"
./archives/nrue_usrp/nr-uesoftmodem.Rel15.txt
"Built target nr-uesoftmodem"
./nrue_usrp_row1.html
summary_table_row
"Coding - Release 15"
./archives/nrue_usrp/coding.Rel15.txt
"Built target coding"
./nrue_usrp_row2.html
summary_table_row
"Coding - Release 15"
./archives/nrue_usrp/coding.Rel15.txt
"Built target coding"
./nrue_usrp_row2.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/nrue_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./nrue_usrp_row3.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/nrue_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./nrue_usrp_row3.html
...
@@ -613,29 +614,33 @@ function report_build {
...
@@ -613,29 +614,33 @@ function report_build {
summary_table_footer
summary_table_footer
fi
fi
summary_table_header
"OAI Build eNB -- ETHERNET transport option"
summary_table_header
"OAI Build eNB -- ETHERNET transport option"
./archives/enb_eth
summary_table_row
"LTE SoftModem
w/o S1
- Release 15"
./archives/enb_eth/lte-softmodem-nos1.Rel15.txt
"Built target lte-softmodem"
./enb_eth_row1.html
summary_table_row
"LTE SoftModem - Release 15"
./archives/enb_eth/lte-softmodem-nos1.Rel15.txt
"Built target lte-softmodem"
./enb_eth_row1.html
summary_table_row
"Coding - Release 15"
./archives/enb_eth/coding.Rel15.txt
"Built target coding"
./enb_eth_row2.html
summary_table_row
"Coding - Release 15"
./archives/enb_eth/coding.Rel15.txt
"Built target coding"
./enb_eth_row2.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/enb_eth/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./enb_eth_row3.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/enb_eth/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./enb_eth_row3.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/enb_eth/params_libconfig.Rel15.txt
"Built target params_libconfig"
./enb_eth_row4.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/enb_eth/params_libconfig.Rel15.txt
"Built target params_libconfig"
./enb_eth_row4.html
summary_table_row
"R
B Tools - Release 15"
./archives/enb_eth/rb_tool.Rel15.txt
"Built target rb_tool
"
./enb_eth_row5.html
summary_table_row
"R
F Simulator - Release 15"
./archives/enb_eth/rfsimulator.Rel15.txt
"Built target rfsimulator
"
./enb_eth_row5.html
summary_table_row
"
NAS Mesh - Release 15"
./archives/enb_eth/nasmesh.Rel15.txt
"Built target nasmesh
"
./enb_eth_row6.html
summary_table_row
"
TCP OAI Bridge - Release 15"
./archives/enb_eth/tcp_bridge_oai.Rel15.txt
"Built target tcp_bridge_oai
"
./enb_eth_row6.html
summary_table_footer
summary_table_footer
summary_table_header
"OAI Build UE -- ETHERNET transport option"
summary_table_header
"OAI Build UE -- ETHERNET transport option"
./archives/ue_eth
summary_table_row
"LTE UE SoftModem
w/o S1 - Release 15"
./archives/ue_eth/lte-uesoftmodem-nos1
.Rel15.txt
"Built target lte-uesoftmodem"
./ue_eth_row1.html
summary_table_row
"LTE UE SoftModem
- Release 15"
./archives/ue_eth/lte-uesoftmodem
.Rel15.txt
"Built target lte-uesoftmodem"
./ue_eth_row1.html
summary_table_row
"Coding - Release 15"
./archives/ue_eth/coding.Rel15.txt
"Built target coding"
./ue_eth_row2.html
summary_table_row
"Coding - Release 15"
./archives/ue_eth/coding.Rel15.txt
"Built target coding"
./ue_eth_row2.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/ue_eth/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./ue_eth_row3.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/ue_eth/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./ue_eth_row3.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/ue_eth/params_libconfig.Rel15.txt
"Built target params_libconfig"
./ue_eth_row4.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/ue_eth/params_libconfig.Rel15.txt
"Built target params_libconfig"
./ue_eth_row4.html
summary_table_row
"RB Tools - Release 15"
./archives/ue_eth/rb_tool.Rel15.txt
"Built target rb_tool"
./ue_eth_row5.html
summary_table_row
"RF Simulator - Release 15"
./archives/ue_eth/rfsimulator.Rel15.txt
"Built target rfsimulator"
./ue_eth_row5.html
summary_table_row
"NAS Mesh - Release 15"
./archives/ue_eth/nasmesh.Rel15.txt
"Built target nasmesh"
./ue_eth_row6.html
summary_table_row
"TCP OAI Bridge - Release 15"
./archives/ue_eth/tcp_bridge_oai.Rel15.txt
"Built target tcp_bridge_oai"
./ue_eth_row6.html
summary_table_row
"Conf 2 UE Data - Release 15"
./archives/ue_eth/conf2uedata.Rel15.txt
"Built target conf2uedata"
./ue_eth_row7.html
summary_table_row
"NVRAM - Release 15"
./archives/ue_eth/nvram.Rel15.txt
"Built target nvram"
./ue_eth_row8.html
summary_table_row
"UE IP - Release 15"
./archives/ue_eth/ue_ip.Rel15.txt
"Built target ue_ip"
./ue_eth_row9.html
summary_table_row
"USIM - Release 15"
./archives/ue_eth/usim.Rel15.txt
"Built target usim"
./ue_eth_row9a.html
summary_table_footer
summary_table_footer
if
[
-e
./archives/red_hat
]
if
[
-e
./archives/red_hat
]
then
then
echo
" <h2>Red Hat
(CentOS Linux release 7.4.1708
) -- Summary</h2>"
>>
./build_results.html
echo
" <h2>Red Hat
Enterprise Linux Server release 7.6
) -- Summary</h2>"
>>
./build_results.html
summary_table_header
"Red Hat -- OAI Build eNB -- USRP option"
summary_table_header
"Red Hat -- OAI Build eNB -- USRP option"
./archives/red_hat
summary_table_row
"LTE SoftModem - Release 15"
./archives/red_hat/lte-softmodem.Rel15.txt
"Built target lte-softmodem"
./enb_usrp_rh_row1.html
summary_table_row
"LTE SoftModem - Release 15"
./archives/red_hat/lte-softmodem.Rel15.txt
"Built target lte-softmodem"
./enb_usrp_rh_row1.html
summary_table_row
"Coding - Release 15"
./archives/red_hat/coding.Rel15.txt
"Built target coding"
./enb_usrp_rh_row2.html
summary_table_row
"Coding - Release 15"
./archives/red_hat/coding.Rel15.txt
"Built target coding"
./enb_usrp_rh_row2.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/red_hat/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./enb_usrp_rh_row3.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/red_hat/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./enb_usrp_rh_row3.html
...
...
ci-scripts/reportTestLocally.sh
View file @
4c69e52c
...
@@ -402,7 +402,6 @@ function report_test {
...
@@ -402,7 +402,6 @@ function report_test {
echo
" </pre></td>"
>>
./test_simulator_results.html
echo
" </pre></td>"
>>
./test_simulator_results.html
echo
" </tr>"
>>
./test_simulator_results.html
echo
" </tr>"
>>
./test_simulator_results.html
fi
fi
PING_LOGS
=
`
ls
$ARCHIVES_LOC
/
${
TMODE
}
_
${
BW
}
MHz_ping_ue.txt 2> /dev/null
`
PING_LOGS
=
`
ls
$ARCHIVES_LOC
/
${
TMODE
}
_
${
BW
}
MHz_ping_ue.txt 2> /dev/null
`
analyzePingFiles
analyzePingFiles
...
...
ci-scripts/runTestOnVM.sh
View file @
4c69e52c
...
@@ -467,12 +467,12 @@ function install_epc_on_vm {
...
@@ -467,12 +467,12 @@ function install_epc_on_vm {
if
[
-f
/opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb
]
&&
[
-f
/opt/ltebox-archives/etc-conf.zip
]
&&
[
-f
/opt/ltebox-archives/hss-sim-develop.zip
]
if
[
-f
/opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb
]
&&
[
-f
/opt/ltebox-archives/etc-conf.zip
]
&&
[
-f
/opt/ltebox-archives/hss-sim-develop.zip
]
then
then
echo
"############################################################"
echo
"############################################################"
echo
"
Destroying VM
"
echo
"
Test EPC on VM (
$EPC_VM_NAME
) will be using ltebox
"
echo
"############################################################"
echo
"############################################################"
uvt-kvm destroy
$VM_NAME
LTEBOX
=
1
ssh-keygen
-R
$VM_IP_ADDR
fi
fi
rm
-f
$VM_CMDS
fi
# Here we could have other types of EPC detection
# Do we need to start the EPC VM
# Do we need to start the EPC VM
echo
"EPC_VM_CMD_FILE =
$LOC_EPC_VM_CMDS
"
echo
"EPC_VM_CMD_FILE =
$LOC_EPC_VM_CMDS
"
...
@@ -606,10 +606,9 @@ function start_epc {
...
@@ -606,10 +606,9 @@ function start_epc {
CONNECTED
=
`
ssh
-T
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_EPC_VM_IP_ADDR
<
$LOC_EPC_VM_CMDS
`
CONNECTED
=
`
ssh
-T
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_EPC_VM_IP_ADDR
<
$LOC_EPC_VM_CMDS
`
if
[
$CONNECTED
-eq
1
]
if
[
$CONNECTED
-eq
1
]
then
then
echo
"############################################################"
i
=
"100"
echo
"Doing some adaptation on UE side"
else
echo
"############################################################"
i
=
$[$i
+1]
ssh
-o
StrictHostKeyChecking
=
no ubuntu@
$VM_IP_ADDR
< /opt/ltebox-archives/adapt_ue_sim.txt
fi
fi
done
done
rm
$LOC_EPC_VM_CMDS
rm
$LOC_EPC_VM_CMDS
...
@@ -619,15 +618,9 @@ function start_epc {
...
@@ -619,15 +618,9 @@ function start_epc {
echo
"TEST_KO"
>
$ARCHIVES_LOC
/test_final_status.log
echo
"TEST_KO"
>
$ARCHIVES_LOC
/test_final_status.log
exit
-1
exit
-1
fi
fi
get_ue_ip_addr
$VM_CMDS
$VM_IP_ADDR
fi
echo
"############################################################"
# HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC
echo
"Pinging the UE"
echo
"############################################################"
PING_LOG_FILE
=
fdd_05MHz_ping_ue.txt
ping_ue_ip_addr
$EPC_VM_CMDS
$EPC_VM_IP_ADDR
$UE_IP_ADDR
$PING_LOG_FILE
scp
-o
StrictHostKeyChecking
=
no ubuntu@
$EPC_VM_IP_ADDR
:/home/ubuntu/
$PING_LOG_FILE
$ARCHIVES_LOC
check_ping_result
$ARCHIVES_LOC
/
$PING_LOG_FILE
20
}
}
...
...
ci-scripts/xml_files/enb_usrp210_band40_test_20mhz_tm1_not_run.xml
deleted
100644 → 0
View file @
264725c5
<!--
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-20-tm1
</htmlTabRef>
<htmlTabName>
Test-20MHz-TM1
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
040101
030124 040301 040521 040622 040621 040623 040662 040661 040663 040401 040201 030201
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"030124"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040621"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040622"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040623"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
<testCase
id=
"040661"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(balanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
balanced
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040663"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(unbalanced)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
unbalanced
</iperf_profile>
</testCase>
</testCaseList>
ci-scripts/xml_files/if4p5_usrp210_band40_test_20mhz_not_run.xml
deleted
100644 → 0
View file @
264725c5
<!--
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-20
</htmlTabRef>
<htmlTabName>
Test-20MHz
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
000001
</TestCaseRequestedList>
<TestCaseExclusionList>
040101
030124 030125 040301 040521 040622 040662 040401 040201 030201 030202
</TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
No Test in IF4.5 for FDD-20MHz
</desc>
<idle_sleep_time_in_sec>
10
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"030124"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RRU (TDD/Band40)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rru.tdd.band40.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"030125"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize RCC (TDD/Band40/20MHz/info)
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030201"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RCC
</desc>
<eNB_instance>
1
</eNB_instance>
</testCase>
<testCase
id=
"030202"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate RRU
</desc>
<eNB_instance>
0
</eNB_instance>
</testCase>
<testCase
id=
"040101"
>
<class>
Initialize_UE
</class>
<desc>
Initialize UE
</desc>
</testCase>
<testCase
id=
"040201"
>
<class>
Terminate_UE
</class>
<desc>
Terminate UE
</desc>
</testCase>
<testCase
id=
"040301"
>
<class>
Attach_UE
</class>
<desc>
Attach UE
</desc>
</testCase>
<testCase
id=
"040401"
>
<class>
Detach_UE
</class>
<desc>
Detach UE
</desc>
</testCase>
<testCase
id=
"040521"
>
<class>
Ping
</class>
<desc>
ping (20MHz - 20 sec)
</desc>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
25
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"040622"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 13.5M -t 30 -i 1
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"040662"
>
<class>
Iperf
</class>
<desc>
iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue)
</desc>
<iperf_args>
-u -b 2M -t 30 -i 1 -R
</iperf_args>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
</testCaseList>
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