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
# * contributor license agreements. See the NOTICE file distributed with
...
...
@@ -44,9 +43,6 @@ ENB_PROCESS_SEG_FAULT = -11
ENB_PROCESS_ASSERTION
=
-
12
ENB_PROCESS_REALTIME_ISSUE
=
-
13
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_OK
=
+
2
MME_PROCESS_FAILED
=
-
3
...
...
@@ -54,8 +50,11 @@ MME_PROCESS_OK = +3
SPGW_PROCESS_FAILED
=
-
4
SPGW_PROCESS_OK
=
+
4
UE_IP_ADDRESS_ISSUE
=
-
5
UE_PROCESS_FAILED
=
-
6
UE_PROCESS_OK
=
+
6
OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE
=
-
20
OAI_UE_PROCESS_COULD_NOT_SYNC
=
-
21
OAI_UE_PROCESS_ASSERTION
=
-
22
OAI_UE_PROCESS_FAILED
=
-
6
OAI_UE_PROCESS_OK
=
+
6
#-----------------------------------------------------------
# Import
...
...
@@ -70,7 +69,6 @@ import xml.etree.ElementTree as ET
import
logging
import
datetime
import
signal
#import platform
from
multiprocessing
import
Process
,
Lock
,
SimpleQueue
logging
.
basicConfig
(
level
=
logging
.
DEBUG
,
...
...
@@ -144,14 +142,13 @@ class SSHConnection():
self
.
UEUserName
=
''
self
.
UEPassword
=
''
self
.
UE_instance
=
''
self
.
UELogFile
=
''
self
.
UESourceCodePath
=
''
self
.
UELogFile
=
''
self
.
Build_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_eNB_args
=
''
self
.
clean_repository
=
True
self
.
eNBOsVersion
=
''
def
open
(
self
,
ipaddress
,
username
,
password
):
count
=
0
connect_status
=
False
...
...
@@ -342,7 +339,7 @@ class SSHConnection():
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# 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
(
'mv 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():
self
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
self
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# 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
(
'mv 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():
result
=
re
.
search
(
'type: b200'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
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
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
# Make a copy and adapt to EPC / eNB IP addresses
...
...
@@ -514,15 +511,11 @@ class SSHConnection():
self
.
command
(
'source oaienv'
,
'\$'
,
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
(
'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
)
#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
(
'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
)
#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 $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
:
self
.
eNBLogFile
=
'enb_'
+
self
.
testCase_id
+
'.log'
if
extra_options
!=
''
:
...
...
@@ -613,24 +606,27 @@ class SSHConnection():
if
self
.
UEIPAddress
==
''
or
self
.
UEUserName
==
''
or
self
.
UEPassword
==
''
or
self
.
UESourceCodePath
==
''
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
#initialize_OAI_UE_flag = True
#pStatus = self.CheckOAIUEProcessExist(initialize_OAI_UE_flag)
#if (pStatus < 0):
# self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', pStatus)
# self.CreateHtmlTabFooter(False)
# sys.exit(1)
result
=
re
.
search
(
'--no-L2-connect'
,
str
(
self
.
Initialize_OAI_UE_args
))
if
result
is
None
:
check_eNB
=
True
check_OAI_UE
=
False
pStatus
=
self
.
CheckProcessExist
(
check_eNB
,
check_OAI_UE
)
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
)
# b2xx_fx3_utils reset procedure
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
:
pass
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
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S uhd_find_devices'
,
'\$'
,
30
)
else
:
logging
.
debug
(
'Did not find any B2xx device'
)
result
=
re
.
search
(
'type: n3xx'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
logging
.
debug
(
'Found a N3xx device --> resetting it'
)
self
.
command
(
'cd '
+
self
.
UESourceCodePath
,
'\$'
,
5
)
# Initialize_OAI_UE_args usually start with -C and followed by the location in repository
self
.
command
(
'source oaienv'
,
'\$'
,
5
)
...
...
@@ -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
(
'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
)
#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'
time
.
sleep
(
6
)
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
doLoop
=
True
loopCounter
=
10
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
self
.
close
()
doLoop
=
False
logging
.
error
(
'
\u001B
[1;37;41m UE logging system did not show got sync!
\u001B
[0m'
)
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
self
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
1
)
else
:
self
.
command
(
'stdbuf -o0 cat '
+
self
.
UELogFile
+
' | egrep --text --color=never -i "wait|sync"'
,
'\$'
,
4
)
# We are now looping several times to hope we really sync w/ an eNB
doOutterLoop
=
True
outterLoopCounter
=
5
gotSyncStatus
=
True
fullSyncStatus
=
True
while
(
doOutterLoop
):
self
.
command
(
'cd '
+
self
.
UESourceCodePath
+
'/cmake_targets/ran_build/build'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S rm -Rf '
+
self
.
UESourceCodePath
+
'/cmake_targets/ue_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
#use nohup instead of daemon
#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
.
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
)
time
.
sleep
(
6
)
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
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'
:
result
=
re
.
search
(
'Starting sync detection'
,
str
(
self
.
ssh
.
before
))
else
:
...
...
@@ -669,57 +670,76 @@ class SSHConnection():
time
.
sleep
(
10
)
else
:
doLoop
=
False
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'OK'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
logging
.
debug
(
'
\u001B
[1m Initialize OAI UE Completed
\u001B
[0m'
)
logging
.
debug
(
'Found "got sync" message!'
)
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
()
# 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
):
if
self
.
eNBIPAddress
==
''
or
self
.
eNBUserName
==
''
or
self
.
eNBPassword
==
''
or
self
.
eNBSourceCodePath
==
''
:
Usage
()
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
.
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
self
.
command
(
'source oaienv'
,
'\$'
,
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
.
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
(
'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
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)
...
...
@@ -727,38 +747,17 @@ class SSHConnection():
self
.
command
(
'cd ../..'
,
'\$'
,
5
)
doLoop
=
True
loopCounter
=
10
print
(
'gNB log file: '
+
self
.
eNBLogFile
)
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
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
()
doLoop
=
False
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
.
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
)
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
)
#print(self.ssh.before)
result
=
re
.
search
(
'got sync'
,
str
(
self
.
ssh
.
before
))
if
result
is
None
:
time
.
sleep
(
11
)
...
...
@@ -939,7 +938,7 @@ class SSHConnection():
return
ping_time
=
re
.
findall
(
"-c (\d+)"
,
str
(
self
.
ping_args
))
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
if
ping_status
<
0
:
message
=
'Ping with UE ('
+
str
(
moduleIPAddr
)
+
') crashed due to TIMEOUT!'
...
...
@@ -1288,7 +1287,7 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
5
)
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
if
ping_status
<
0
:
message
=
'Ping with UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT!'
...
...
@@ -1823,9 +1822,9 @@ class SSHConnection():
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
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
:
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
if
iperf_status
<
0
:
self
.
close
()
...
...
@@ -1927,13 +1926,12 @@ class SSHConnection():
self
.
command
(
'rm -f iperf_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
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
self
.
Iperf_analyzeV3Output
(
lock
,
UE_IPAddress
,
device_id
,
statusQueue
)
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
:
self
.
close
()
message
=
'iperf on UE ('
+
str
(
UE_IPAddress
)
+
') crashed due to TIMEOUT !'
...
...
@@ -2218,7 +2216,7 @@ class SSHConnection():
status
=
status_queue
.
get
()
if
(
status
<
0
):
result
=
status
if
result
==
UE_PROCESS_FAILED
:
if
result
==
OAI_
UE_PROCESS_FAILED
:
fileCheck
=
re
.
search
(
'ue_'
,
str
(
self
.
UELogFile
))
if
fileCheck
is
not
None
:
self
.
copyin
(
self
.
UEIPAddress
,
self
.
UEUserName
,
self
.
UEPassword
,
self
.
UESourceCodePath
+
'/cmake_targets/'
+
self
.
UELogFile
,
'.'
)
...
...
@@ -2230,13 +2228,13 @@ class SSHConnection():
def
CheckOAIUEProcess
(
self
,
status_queue
):
try
:
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
))
if
result
is
None
:
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
:
status_queue
.
put
(
UE_PROCESS_OK
)
status_queue
.
put
(
OAI_
UE_PROCESS_OK
)
self
.
close
()
except
:
os
.
kill
(
os
.
getppid
(),
signal
.
SIGUSR1
)
...
...
@@ -2244,7 +2242,7 @@ class SSHConnection():
def
CheckeNBProcess
(
self
,
status_queue
):
try
:
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
))
if
result
is
None
:
logging
.
debug
(
'
\u001B
[1;37;41m eNB Process Not Found!
\u001B
[0m'
)
...
...
@@ -2360,28 +2358,25 @@ class SSHConnection():
if
foundAssertion
and
(
msgLine
<
3
):
msgLine
+=
1
msgAssertion
+=
str
(
line
)
result
=
re
.
search
(
'Generating LTE_RRCConnectionSetup|Generating RRCConnectionSetup'
,
str
(
line
))
if
result
is
not
None
:
rrcSetupRequest
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionSetupComplete from UE|RRCConnectionSetupComplete from UE'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionSetupComplete from UE'
,
str
(
line
))
if
result
is
not
None
:
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
:
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
:
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
:
rrcReconfigComplete
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentRequest
|RRCConnectionReestablishmentRequest
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentRequest'
,
str
(
line
))
if
result
is
not
None
:
rrcReestablishRequest
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentComplete
|RRCConnectionReestablishmentComplete
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentComplete'
,
str
(
line
))
if
result
is
not
None
:
rrcReestablishComplete
+=
1
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentReject
|RRCConnectionReestablishmentReject
'
,
str
(
line
))
result
=
re
.
search
(
'LTE_RRCConnectionReestablishmentReject'
,
str
(
line
))
if
result
is
not
None
:
rrcReestablishReject
+=
1
result
=
re
.
search
(
'CDRX configuration activated after RRC Connection'
,
str
(
line
))
...
...
@@ -2479,6 +2474,7 @@ class SSHConnection():
foundRealTimeIssue
=
False
uciStatMsgCount
=
0
pdcpDataReqFailedCount
=
0
badDciCount
=
0
rrcConnectionRecfgComplete
=
0
no_cell_sync_found
=
False
mib_found
=
False
...
...
@@ -2617,12 +2613,10 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1;37;41m UE ended with a Segmentation Fault!
\u001B
[0m'
)
return
ENB_PROCESS_SEG_FAULT
if
foundAssertion
:
logging
.
debug
(
'
\u001B
[1;37;43m UE ended with an assertion!
\u001B
[0m'
)
# removed for esthetics
#self.htmlUEFailureMsg += msgAssertion
self
.
htmlUEFailureMsg
+=
'UE ended with an assertion!
\n
'
logging
.
debug
(
'
\u001B
[1;30;43m UE showed an assertion!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE showed an assertion!
\n
'
if
not
mib_found
or
not
frequency_found
:
return
UE_PROCESS_ASSERTION
return
OAI_
UE_PROCESS_ASSERTION
if
foundRealTimeIssue
:
logging
.
debug
(
'
\u001B
[1;37;41m UE faced real time issues!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE faced real time issues!
\n
'
...
...
@@ -2630,7 +2624,7 @@ class SSHConnection():
if
no_cell_sync_found
and
not
mib_found
:
logging
.
debug
(
'
\u001B
[1;37;41m UE could not synchronize !
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE could not synchronize!
\n
'
return
UE_PROCESS_COULD_NOT_SYNC
return
OAI_
UE_PROCESS_COULD_NOT_SYNC
return
0
def
TerminateeNB
(
self
):
...
...
@@ -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 killall --signal SIGINT -r .*-softmodem || true'
,
'\$'
,
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
))
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S killall --signal SIGKILL -r .*-softmodem || true'
,
'\$'
,
5
)
...
...
@@ -2720,10 +2714,6 @@ class SSHConnection():
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd scripts'
,
'\$'
,
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
)
time
.
sleep
(
1
)
self
.
command
(
'echo '
+
self
.
EPCPassword
+
' | sudo -S killall --signal SIGKILL hss_sim'
,
'\$'
,
5
)
...
...
@@ -2796,7 +2786,7 @@ class SSHConnection():
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGINT -r .*-uesoftmodem || true'
,
'\$'
,
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
))
if
result
is
not
None
:
self
.
command
(
'echo '
+
self
.
UEPassword
+
' | sudo -S killall --signal SIGKILL -r .*-uesoftmodem || true'
,
'\$'
,
5
)
...
...
@@ -2809,7 +2799,7 @@ class SSHConnection():
if
(
copyin_res
==
-
1
):
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
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
UE_PROCESS_NOLOGFILE_TO_ANALYZE
,
'UE'
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
OAI_
UE_PROCESS_NOLOGFILE_TO_ANALYZE
,
'UE'
)
self
.
UELogFile
=
''
return
logging
.
debug
(
'
\u001B
[1m Analyzing UE logfile
\u001B
[0m'
)
...
...
@@ -2825,7 +2815,7 @@ class SSHConnection():
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
,
'UE'
)
# In case of sniffing on commercial eNBs we have random results
# 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
.
AutoTerminateUEandeNB
()
self
.
CreateHtmlTabFooter
(
False
)
...
...
@@ -2861,10 +2851,6 @@ class SSHConnection():
time
.
sleep
(
self
.
idle_sleep_time
)
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
):
if
(
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
):
IPAddress
=
self
.
eNBIPAddress
...
...
@@ -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
.
close
()
def
LogCollectPing
(
self
):
self
.
open
(
self
.
EPCIPAddress
,
self
.
EPCUserName
,
self
.
EPCPassword
)
self
.
command
(
'cd '
+
self
.
EPCSourceCodePath
,
'\$'
,
5
)
...
...
@@ -2971,21 +2956,22 @@ class SSHConnection():
self
.
CpuNb
=
'4'
self
.
CpuModel
=
'Intel(R) Core(TM) i5-6200U'
self
.
CpuMHz
=
'2399.996 MHz'
return
machine
=
None
if
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
:
machine
=
'eNB'
IPAddress
=
self
.
eNBIPAddress
UserName
=
self
.
eNBUserName
Password
=
self
.
eNBPassword
elif
self
.
UEIPAddress
!=
''
and
self
.
UEUserName
!=
''
and
self
.
UEPassword
!=
''
:
machine
=
'UE'
IPAddress
=
self
.
UEIPAddress
UserName
=
self
.
UEUserName
Password
=
self
.
UEPassword
if
machine
is
None
:
Usage
()
sys
.
exit
(
'Insufficient Parameter'
)
return
0
if
machine
==
'eNB'
:
if
self
.
eNBIPAddress
!=
''
and
self
.
eNBUserName
!=
''
and
self
.
eNBPassword
!=
''
:
IPAddress
=
self
.
eNBIPAddress
UserName
=
self
.
eNBUserName
Password
=
self
.
eNBPassword
else
:
return
-
1
if
machine
==
'UE'
:
if
self
.
UEIPAddress
!=
''
and
self
.
UEUserName
!=
''
and
self
.
UEPassword
!=
''
:
IPAddress
=
self
.
UEIPAddress
UserName
=
self
.
UEUserName
Password
=
self
.
UEPassword
else
:
return
-
1
self
.
open
(
IPAddress
,
UserName
,
Password
)
self
.
command
(
'lsb_release -a'
,
'\$'
,
5
)
result
=
re
.
search
(
'Description:
\\\\
t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)'
,
str
(
self
.
ssh
.
before
))
...
...
@@ -3002,7 +2988,7 @@ class SSHConnection():
if
result
is
not
None
:
self
.
UhdVersion
=
result
.
group
(
'uhd_version'
)
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
))
if
result
is
not
None
:
self
.
UsrpBoard
=
result
.
group
(
'usrp_board'
)
...
...
@@ -3240,17 +3226,19 @@ class SSHConnection():
elif
(
str
(
status
)
==
'KO'
):
if
(
processesStatus
==
0
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >'
+
str
(
status
)
+
'</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_FAILED
)
or
(
processesStatus
==
UE_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process not found</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_FAILED
):
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
):
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
'
)
elif
(
processesStatus
==
ENB_PROCESS_REALTIME_ISSUE
):
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
'
)
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
'
)
elif
(
processesStatus
==
HSS_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - HSS process not found</td>
\n
'
)
...
...
@@ -3365,9 +3353,6 @@ def Usage():
print
(
' --XMLTestFile=[XML Test File to be run]'
)
print
(
'------------------------------------------------------------'
)
#def GetModeFromXML():
# SSH.mode = test.findtext('mode')
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'
:
logging
.
debug
(
'ERROR: test-case '
+
id
+
' has wrong class '
+
action
)
...
...
@@ -3388,7 +3373,7 @@ def GetParametersFromXML(action):
SSH
.
air_interface
=
'lte'
else
:
SSH
.
air_interface
=
SSH
.
air_interface
.
lower
()
if
action
==
'Terminate_eNB'
:
SSH
.
eNB_instance
=
test
.
findtext
(
'eNB_instance'
)
if
(
SSH
.
eNB_instance
is
None
):
...
...
@@ -3492,9 +3477,6 @@ while len(argvs) > 1:
sys
.
exit
(
0
)
elif
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
)
elif
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
):
matchReg
=
re
.
match
(
'^\-\-eNBIPAddress=(.+)$'
,
myArgv
,
re
.
IGNORECASE
)
...
...
@@ -3678,7 +3660,7 @@ elif re.match('^FinalizeHtml$', mode, re.IGNORECASE):
SSH
.
CreateHtmlFooter
(
SSH
.
finalStatus
)
elif
re
.
match
(
'^TesteNB$'
,
mode
,
re
.
IGNORECASE
)
or
re
.
match
(
'^TestUE$'
,
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
()
sys
.
exit
(
'Insufficient Parameter'
)
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
sys
.
exit
(
'UE: Insufficient Parameter'
)
#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
):
xml_test_file
=
cwd
+
"/test_case_list.xml"
else
:
...
...
ci-scripts/oai-ci-vm-tool
View file @
4c69e52c
...
...
@@ -301,7 +301,7 @@ case $key in
ARCHIVES_LOC
=
enb_eth
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
6
BUILD_OPTIONS
=
"--eNB -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--eNB -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
shift
;;
...
...
@@ -312,7 +312,7 @@ case $key in
ARCHIVES_LOC
=
ue_eth
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--UE -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--UE -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
shift
;;
...
...
@@ -374,7 +374,7 @@ case $key in
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--phy_simulators"
VM_MEMORY
=
8192
VM_MEMORY
=
8192
RUN_OPTIONS
=
"./run_exec_autotests.bash -g
\"
01510*
\"
-q -np -b"
NBARGS
=
$[$NBARGS
+256]
;;
...
...
@@ -410,7 +410,7 @@ case $key in
ARCHIVES_LOC
=
enb_eth
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
6
BUILD_OPTIONS
=
"--eNB -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--eNB -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
;;
ue-ethernet
)
...
...
@@ -420,7 +420,7 @@ case $key in
ARCHIVES_LOC
=
ue_eth
LOG_PATTERN
=
.Rel15.txt
NB_PATTERN_FILES
=
10
BUILD_OPTIONS
=
"--UE -t ETHERNET
--noS1
"
BUILD_OPTIONS
=
"--UE -t ETHERNET"
NBARGS
=
$[$NBARGS
+256]
;;
flexran-rtc
)
...
...
@@ -649,8 +649,6 @@ then
echo
"STATUS seems OK"
exit
$STATUS
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
if
[[
$VM_NAME
=
~ .
*
-rf-sim
.
*
]]
then
...
...
ci-scripts/reportBuildLocally.sh
View file @
4c69e52c
...
...
@@ -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_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
"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
"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_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 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_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
"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
...
...
@@ -595,7 +596,7 @@ function report_build {
if
[
-f
archives/gnb_usrp/nr-softmodem.Rel15.txt
]
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
"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
...
...
@@ -605,7 +606,7 @@ function report_build {
if
[
-f
archives/nrue_usrp/nr-uesoftmodem.Rel15.txt
]
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
"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
...
...
@@ -613,29 +614,33 @@ function report_build {
summary_table_footer
fi
summary_table_header
"OAI Build eNB -- ETHERNET transport option"
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_header
"OAI Build eNB -- ETHERNET transport option"
./archives/enb_eth
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
"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
"R
B Tools - Release 15"
./archives/enb_eth/rb_tool.Rel15.txt
"Built target rb_tool
"
./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
"R
F Simulator - Release 15"
./archives/enb_eth/rfsimulator.Rel15.txt
"Built target rfsimulator
"
./enb_eth_row5.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_header
"OAI Build UE -- ETHERNET transport option"
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_header
"OAI Build UE -- ETHERNET transport option"
./archives/ue_eth
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
"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
"RB Tools - Release 15"
./archives/ue_eth/rb_tool.Rel15.txt
"Built target rb_tool"
./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
"RF Simulator - Release 15"
./archives/ue_eth/rfsimulator.Rel15.txt
"Built target rfsimulator"
./ue_eth_row5.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
if
[
-e
./archives/red_hat
]
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
"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
...
...
ci-scripts/reportTestLocally.sh
View file @
4c69e52c
...
...
@@ -402,7 +402,6 @@ function report_test {
echo
" </pre></td>"
>>
./test_simulator_results.html
echo
" </tr>"
>>
./test_simulator_results.html
fi
PING_LOGS
=
`
ls
$ARCHIVES_LOC
/
${
TMODE
}
_
${
BW
}
MHz_ping_ue.txt 2> /dev/null
`
analyzePingFiles
...
...
ci-scripts/runTestOnVM.sh
View file @
4c69e52c
...
...
@@ -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
]
then
echo
"############################################################"
echo
"
Destroying VM
"
echo
"
Test EPC on VM (
$EPC_VM_NAME
) will be using ltebox
"
echo
"############################################################"
uvt-kvm destroy
$VM_NAME
ssh-keygen
-R
$VM_IP_ADDR
LTEBOX
=
1
fi
rm
-f
$VM_CMDS
fi
# Here we could have other types of EPC detection
# Do we need to start the EPC VM
echo
"EPC_VM_CMD_FILE =
$LOC_EPC_VM_CMDS
"
...
...
@@ -606,10 +606,9 @@ function start_epc {
CONNECTED
=
`
ssh
-T
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_EPC_VM_IP_ADDR
<
$LOC_EPC_VM_CMDS
`
if
[
$CONNECTED
-eq
1
]
then
echo
"############################################################"
echo
"Doing some adaptation on UE side"
echo
"############################################################"
ssh
-o
StrictHostKeyChecking
=
no ubuntu@
$VM_IP_ADDR
< /opt/ltebox-archives/adapt_ue_sim.txt
i
=
"100"
else
i
=
$[$i
+1]
fi
done
rm
$LOC_EPC_VM_CMDS
...
...
@@ -619,15 +618,9 @@ function start_epc {
echo
"TEST_KO"
>
$ARCHIVES_LOC
/test_final_status.log
exit
-1
fi
get_ue_ip_addr
$VM_CMDS
$VM_IP_ADDR
fi
echo
"############################################################"
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
# HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC
}
...
...
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