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
spbro
OpenXG-RAN
Commits
3ab21d8f
Commit
3ab21d8f
authored
Aug 13, 2021
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into prb_based_dl_channel_estimation
parents
6050776f
efc696cc
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1365 additions
and
135 deletions
+1365
-135
ci-scripts/Jenkinsfile-gitlab
ci-scripts/Jenkinsfile-gitlab
+20
-0
ci-scripts/ci_ueinfra.yaml
ci-scripts/ci_ueinfra.yaml
+17
-0
ci-scripts/cls_log_mgt.py
ci-scripts/cls_log_mgt.py
+16
-12
ci-scripts/cls_module_ue.py
ci-scripts/cls_module_ue.py
+5
-5
ci-scripts/cls_oaicitest.py
ci-scripts/cls_oaicitest.py
+6
-1
ci-scripts/cls_physim1.py
ci-scripts/cls_physim1.py
+9
-4
ci-scripts/conf_files/enb.band38.nsa_2x2.100PRB.usrpn310.conf
...cripts/conf_files/enb.band38.nsa_2x2.100PRB.usrpn310.conf
+280
-0
ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
...cripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
+296
-0
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf
+5
-4
ci-scripts/main.py
ci-scripts/main.py
+5
-0
ci-scripts/oai-ci-vm-tool
ci-scripts/oai-ci-vm-tool
+12
-7
ci-scripts/ran.py
ci-scripts/ran.py
+27
-9
ci-scripts/reportBuildLocally.sh
ci-scripts/reportBuildLocally.sh
+1
-9
ci-scripts/reportTestLocally.sh
ci-scripts/reportTestLocally.sh
+10
-6
ci-scripts/runTestOnVM.sh
ci-scripts/runTestOnVM.sh
+47
-18
ci-scripts/xml_files/fr1_gnb_build.xml
ci-scripts/xml_files/fr1_gnb_build.xml
+50
-0
ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml
ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml
+146
-0
ci-scripts/xml_files/fr1_sa_quectel.xml
ci-scripts/xml_files/fr1_sa_quectel.xml
+125
-0
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml
+48
-45
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml.orig
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml.orig
+203
-0
cmake_targets/build_oai
cmake_targets/build_oai
+0
-14
executables/softmodem-common.c
executables/softmodem-common.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+17
-0
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+19
-0
No files found.
ci-scripts/Jenkinsfile-gitlab
View file @
3ab21d8f
...
...
@@ -384,6 +384,26 @@ pipeline {
}
}
}
stage
(
"Test 5G RF simulator"
)
{
when
{
expression
{
doMandatoryTests
}
}
steps
{
lock
(
vmResource
)
{
script
{
timeout
(
time:
40
,
unit:
'MINUTES'
)
{
try
{
gitlabCommitStatus
(
name:
"Test 5G RF-sim"
)
{
sh
"./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant rf5g-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
catch
(
Exception
e
)
{
currentBuild
.
result
=
'FAILURE'
}
}
}
}
}
}
stage
(
"Test L2 simulator"
)
{
when
{
expression
{
doFullTestsuite
}
...
...
ci-scripts/ci_ueinfra.yaml
View file @
3ab21d8f
...
...
@@ -7,12 +7,29 @@ idefix:
Cmd
:
/home/oaicicd/quectel-CM/quectel-CM -s oai.ipv4 -4
WakeupScript
:
ci_ctl_qtel.py /dev/ttyUSB2 wup
DetachScript
:
ci_ctl_qtel.py /dev/ttyUSB2 detach
LogStore
:
/media/usb-drive/ci_qlogs
PLMN
:
22201
UENetwork
:
wwan0
HostIPAddress
:
192.168.18.188
HostUsername
:
oaicicd
HostPassword
:
oaicicd
HostSourceCodePath
:
none
nrmodule2_quectel
:
ID
:
nrmodule2_quectel
State
:
enabled
Kind
:
quectel
Process
:
Name
:
quectel-CM
Cmd
:
/home/nrmodule2/quectel-CM/quectel-CM -s oai.ipv4 -4
WakeupScript
:
ci_ctl_qtel.py /dev/ttyUSB7 wup
DetachScript
:
ci_ctl_qtel.py /dev/ttyUSB7 detach
LogStore
:
/media/ci_qlogs
PLMN
:
20899
UENetwork
:
wwan1
HostIPAddress
:
192.168.18.189
HostUsername
:
nrmodule2
HostPassword
:
linux
HostSourceCodePath
:
none
dummy
:
ID
:
'
'
State
:
'
'
...
...
ci-scripts/cls_log_mgt.py
View file @
3ab21d8f
...
...
@@ -25,7 +25,7 @@
#---------------------------------------------------------------------
#USAGE:
# log=Log_Mgt(IPAddress,Password,Path)
# log=Log_Mgt(
Username,
IPAddress,Password,Path)
# log.LogRotation()
...
...
@@ -38,7 +38,8 @@ import math
class
Log_Mgt
:
def
__init__
(
self
,
IPAddress
,
Password
,
Path
):
def
__init__
(
self
,
Username
,
IPAddress
,
Password
,
Path
):
self
.
Username
=
Username
self
.
IPAddress
=
IPAddress
self
.
Password
=
Password
self
.
path
=
Path
...
...
@@ -49,7 +50,7 @@ class Log_Mgt:
def
__CheckAvailSpace
(
self
):
HOST
=
self
.
IPAddress
HOST
=
self
.
Username
+
'@'
+
self
.
IPAddress
COMMAND
=
"df "
+
self
.
path
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
result
=
ssh
.
stdout
.
readlines
()
...
...
@@ -58,7 +59,7 @@ class Log_Mgt:
return
tmp
[
3
]
#return avail space from the line
def
__GetOldestFile
(
self
):
HOST
=
self
.
IPAddress
HOST
=
self
.
Username
+
'@'
+
self
.
IPAddress
COMMAND
=
"ls -rtl "
+
self
.
path
#-rtl will bring oldest file on top
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
result
=
ssh
.
stdout
.
readlines
()
...
...
@@ -68,16 +69,19 @@ class Log_Mgt:
def
__AvgSize
(
self
):
HOST
=
self
.
IPAddress
HOST
=
self
.
Username
+
'@'
+
self
.
IPAddress
COMMAND
=
"ls -rtl "
+
self
.
path
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
result
=
ssh
.
stdout
.
readlines
()
total_size
=
0
for
i
in
range
(
1
,
len
(
result
)):
s
=
result
[
i
].
decode
(
'utf-8'
).
rstrip
()
tmp
=
s
.
split
()
total_size
+=
int
(
tmp
[
4
])
#get filesize
return
math
.
floor
(
total_size
/
(
len
(
result
)
-
1
))
#compute average file/artifact size
if
len
(
result
)
>
1
:
#at least 1 file present
total_size
=
0
for
i
in
range
(
1
,
len
(
result
)):
s
=
result
[
i
].
decode
(
'utf-8'
).
rstrip
()
tmp
=
s
.
split
()
total_size
+=
int
(
tmp
[
4
])
#get filesize
return
math
.
floor
(
total_size
/
(
len
(
result
)
-
1
))
#compute average file/artifact size
else
:
#empty,no files
return
0
#-----------------$
...
...
@@ -91,7 +95,7 @@ class Log_Mgt:
logging
.
debug
(
"Avail Space : "
+
str
(
avail_space
)
+
" / Artifact Avg Size : "
+
str
(
avg_size
))
if
avail_space
<
2
*
avg_size
:
#reserved space is 2x artifact file ; oldest file will be deleted
oldestfile
=
self
.
__GetOldestFile
()
HOST
=
self
.
IPAddress
HOST
=
self
.
Username
+
'@'
+
self
.
IPAddress
COMMAND
=
"echo "
+
self
.
Password
+
" | sudo -S rm "
+
self
.
path
+
"/"
+
oldestfile
logging
.
debug
(
COMMAND
)
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
...
...
ci-scripts/cls_module_ue.py
View file @
3ab21d8f
...
...
@@ -62,7 +62,7 @@ class Module_UE:
#this method checks if the specified Process is running on the server hosting the module
#if not it will be started
def
CheckCMProcess
(
self
):
HOST
=
self
.
HostIPAddress
HOST
=
self
.
Host
Username
+
'@'
+
self
.
Host
IPAddress
COMMAND
=
"ps aux | grep "
+
self
.
Process
[
'Name'
]
+
" | grep -v grep "
logging
.
debug
(
COMMAND
)
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
...
...
@@ -80,7 +80,7 @@ class Module_UE:
mySSH
.
close
()
#checking the process
time
.
sleep
(
5
)
HOST
=
self
.
HostIPAddress
HOST
=
self
.
Host
Username
+
'@'
+
self
.
Host
IPAddress
COMMAND
=
"ps aux | grep "
+
self
.
Process
[
'Name'
]
+
" | grep -v grep "
logging
.
debug
(
COMMAND
)
ssh
=
subprocess
.
Popen
([
"ssh"
,
"%s"
%
HOST
,
COMMAND
],
shell
=
False
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
...
...
@@ -104,7 +104,7 @@ class Module_UE:
#this method retrieves the Module IP address (not the Host IP address)
def
GetModuleIPAddress
(
self
):
HOST
=
self
.
HostIPAddress
HOST
=
self
.
Host
Username
+
'@'
+
self
.
Host
IPAddress
response
=
[]
tentative
=
3
while
(
len
(
response
)
==
0
)
and
(
tentative
>
0
):
...
...
@@ -163,12 +163,12 @@ class Module_UE:
now
=
datetime
.
now
()
now_string
=
now
.
strftime
(
"%Y%m%d-%H%M"
)
source
=
'ci_qlog'
destination
=
'/media/usb-drive/ci_qlogs
/ci_qlog_'
+
now_string
+
'.zip'
destination
=
self
.
LogStore
+
'
/ci_qlog_'
+
now_string
+
'.zip'
#qlog artifact is zipped into the target folder
mySSH
.
command
(
'echo $USER; echo '
+
self
.
HostPassword
+
' | nohup sudo -S zip -r '
+
destination
+
' '
+
source
+
' &'
,
'\$'
,
10
)
mySSH
.
close
()
#post action : log cleaning to make sure enough space is reserved for the next run
Log_Mgt
=
cls_log_mgt
.
Log_Mgt
(
self
.
Host
IPAddress
,
self
.
HostPassword
,
"/media/usb-drive/ci_qlogs"
)
Log_Mgt
=
cls_log_mgt
.
Log_Mgt
(
self
.
Host
Username
,
self
.
HostIPAddress
,
self
.
HostPassword
,
self
.
LogStore
)
Log_Mgt
.
LogRotation
()
else
:
destination
=
""
...
...
ci-scripts/cls_oaicitest.py
View file @
3ab21d8f
...
...
@@ -1536,8 +1536,13 @@ class OaiCiTest():
SSH
.
command
(
'cat '
+
EPC
.
SourceCodePath
+
'/scripts/ping_'
+
self
.
testCase_id
+
'_'
+
device_id
+
'.log'
,
'\$'
,
5
)
else
:
#launch from Module
SSH
.
open
(
Module_UE
.
HostIPAddress
,
Module_UE
.
HostUsername
,
Module_UE
.
HostPassword
)
#target address is different depending on EPC type
if
re
.
match
(
'OAI-Rel14-Docker'
,
EPC
.
Type
,
re
.
IGNORECASE
):
Target
=
EPC
.
MmeIPAddress
else
:
Target
=
EPC
.
IPAddress
#ping from module NIC rather than IP address to make sure round trip is over the air
cmd
=
'ping -I '
+
Module_UE
.
UENetwork
+
' '
+
self
.
ping_args
+
' '
+
EPC
.
IPAddress
+
' 2>&1 > ping_'
+
self
.
testCase_id
+
'_'
+
self
.
ue_id
+
'.log'
cmd
=
'ping -I '
+
Module_UE
.
UENetwork
+
' '
+
self
.
ping_args
+
' '
+
Target
+
' 2>&1 > ping_'
+
self
.
testCase_id
+
'_'
+
self
.
ue_id
+
'.log'
SSH
.
command
(
cmd
,
'\$'
,
int
(
ping_time
[
0
])
*
1.5
)
#copy the ping log file to have it locally for analysis (ping stats)
SSH
.
copyin
(
Module_UE
.
HostIPAddress
,
Module_UE
.
HostUsername
,
Module_UE
.
HostPassword
,
'ping_'
+
self
.
testCase_id
+
'_'
+
self
.
ue_id
+
'.log'
,
'.'
)
...
...
ci-scripts/cls_physim1.py
View file @
3ab21d8f
...
...
@@ -245,7 +245,7 @@ class PhySim:
isFinished
=
False
# doing a deep copy!
tmpPodNames
=
podNames
.
copy
()
while
(
count
<
28
and
isFinished
==
False
):
while
(
count
<
32
and
isFinished
==
False
):
time
.
sleep
(
60
)
for
podName
in
tmpPodNames
:
mySSH
.
command2
(
f'oc logs --tail=1
{
podName
}
2>&1'
,
6
,
silent
=
True
)
...
...
@@ -257,6 +257,8 @@ class PhySim:
count
+=
1
if
isFinished
:
logging
.
debug
(
'
\u001B
[1m PhySim test is Complete
\u001B
[0m'
)
else
:
logging
.
error
(
'
\u001B
[1m PhySim test Timed-out!
\u001B
[0m'
)
# Getting the logs of each executables running in individual pods
for
podName
in
podNames
:
...
...
@@ -279,15 +281,18 @@ class PhySim:
mySSH
.
command
(
'oc logout'
,
'\$'
,
6
)
mySSH
.
close
()
self
.
AnalyzeLogFile_phySim
(
HTML
)
if
self
.
testStatus
:
if
self
.
testStatus
and
isFinished
:
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRowPhySimTestResult
(
self
.
testSummary
,
self
.
testResult
)
logging
.
info
(
'
\u001B
[1m Physical Simulator Pass
\u001B
[0m'
)
else
:
RAN
.
prematureExit
=
True
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
if
isFinished
:
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
else
:
HTML
.
CreateHtmlTestRow
(
'Some test(s) timed-out!'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
HTML
.
CreateHtmlTestRowPhySimTestResult
(
self
.
testSummary
,
self
.
testResult
)
logging
.
info
(
'
\u001B
[1m Physical Simulator Fail
\u001B
[0m'
)
logging
.
error
(
'
\u001B
[1m Physical Simulator Fail
\u001B
[0m'
)
def
AnalyzeLogFile_phySim
(
self
,
HTML
):
lIpAddr
=
self
.
eNBIPAddress
...
...
ci-scripts/conf_files/enb.band38.nsa_2x2.100PRB.usrpn310.conf
0 → 100644
View file @
3ab21d8f
This diff is collapsed.
Click to expand it.
ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf
0 → 100644
View file @
3ab21d8f
This diff is collapsed.
Click to expand it.
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrp
b2
10.conf
→
ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrp
n3
10.conf
View file @
3ab21d8f
...
...
@@ -12,8 +12,8 @@ gNBs =
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
1
;
plmn_list
= ({
mcc
=
2
22
;
mnc
=
01
;
mcc
=
2
08
;
mnc
=
99
;
mnc_length
=
2
;
snssaiList
= (
{
...
...
@@ -252,11 +252,12 @@ RUs = (
att_rx
=
0
;
bands
= [
7
];
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
114
;
max_rxgain
=
81
;
eNB_instances
= [
0
];
#beamforming 1x4 matrix:
bf_weights
= [
0
x00007fff
,
0
x0000
,
0
x0000
,
0
x0000
];
clock_src
=
"internal"
;
#clock_src = "external";
sdr_addrs
=
"mgmt_addr=192.168.18.240,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal"
}
);
...
...
ci-scripts/main.py
View file @
3ab21d8f
...
...
@@ -155,6 +155,11 @@ def GetParametersFromXML(action):
RAN
.
eNB_Trace
=
test
.
findtext
(
'eNB_Trace'
)
RAN
.
Initialize_eNB_args
=
test
.
findtext
(
'Initialize_eNB_args'
)
eNB_instance
=
test
.
findtext
(
'eNB_instance'
)
USRPIPAddress
=
test
.
findtext
(
'USRP_IPAddress'
)
if
USRPIPAddress
is
None
:
RAN
.
USRPIPAddress
=
''
else
:
RAN
.
USRPIPAddress
=
USRPIPAddress
if
(
eNB_instance
is
None
):
RAN
.
eNB_instance
=
0
else
:
...
...
ci-scripts/oai-ci-vm-tool
View file @
3ab21d8f
...
...
@@ -170,20 +170,20 @@ function setvar_usage {
# for compatibility reasons
function
variant__v1__enb_usrp
{
NB_PATTERN_FILES
=
9
NB_PATTERN_FILES
=
7
BUILD_OPTIONS
=
"--eNB -w USRP --mu"
VM_MEMORY
=
3072
}
function
variant__v2__basic_sim
{
NB_PATTERN_FILES
=
1
3
NB_PATTERN_FILES
=
1
1
BUILD_OPTIONS
=
"--eNB --UE"
VM_MEMORY
=
8192
RUN_OPTIONS
=
"complex"
}
function
variant__v3__phy_sim
{
NB_PATTERN_FILES
=
1
3
NB_PATTERN_FILES
=
1
1
BUILD_OPTIONS
=
"--phy_simulators"
VM_MEMORY
=
8192
VM_DISK
=
20
...
...
@@ -200,28 +200,28 @@ function variant__v4__cppcheck {
function
variant__v5__gnb_usrp
{
VM_MEMORY
=
10240
VM_CPU
=
8
NB_PATTERN_FILES
=
9
NB_PATTERN_FILES
=
7
BUILD_OPTIONS
=
"--gNB -w USRP"
}
function
variant__v6__nr_ue_usrp
{
VM_MEMORY
=
4096
VM_CPU
=
4
NB_PATTERN_FILES
=
9
NB_PATTERN_FILES
=
7
BUILD_OPTIONS
=
"--nrUE -w USRP"
}
function
variant__v7__enb_ethernet
{
VM_MEMORY
=
4096
ARCHIVES_LOC
=
enb_eth
NB_PATTERN_FILES
=
9
NB_PATTERN_FILES
=
7
BUILD_OPTIONS
=
"--eNB -w USRP"
}
function
variant__v8__ue_ethernet
{
VM_MEMORY
=
4096
ARCHIVES_LOC
=
ue_eth
NB_PATTERN_FILES
=
1
3
NB_PATTERN_FILES
=
1
1
BUILD_OPTIONS
=
"--UE -w USRP"
}
...
...
@@ -247,6 +247,11 @@ function variant__v22__l2_sim {
RUN_OPTIONS
=
"complex"
}
function
variant__v23__rf5g_sim
{
ARCHIVES_LOC
=
rf5g_sim
RUN_OPTIONS
=
"complex"
}
# Following function lists all variant__v<n>__<variant name> functions
# and set the VARIANTS_SHORT and VARIANTS_LONG arrays from
# the function names
...
...
ci-scripts/ran.py
View file @
3ab21d8f
...
...
@@ -94,6 +94,7 @@ class RANManagement():
self
.
runtime_stats
=
''
self
.
datalog_rt_stats
=
{}
self
.
eNB_Trace
=
''
#if 'yes', Tshark will be launched at initialization
self
.
USRPIPAddress
=
''
...
...
@@ -341,20 +342,35 @@ class RANManagement():
self
.
testCase_id
=
HTML
.
testCase_id
mySSH
=
SSH
.
SSHConnection
()
#reboot USRP if requested in xml
if
self
.
USRPIPAddress
!=
''
:
logging
.
debug
(
'USRP '
+
self
.
USRPIPAddress
+
'reboot request'
)
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
cmd2usrp
=
'ssh root@'
+
self
.
USRPIPAddress
+
' reboot'
mySSH
.
command2
(
cmd2usrp
,
1
)
mySSH
.
close
()
logging
.
debug
(
'Waiting for USRP to be ready'
)
time
.
sleep
(
120
)
if
(
self
.
pStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
self
.
air_interface
[
self
.
eNB_instance
]
+
' '
+
self
.
Initialize_eNB_args
,
'KO'
,
self
.
pStatus
)
HTML
.
CreateHtmlTabFooter
(
False
)
sys
.
exit
(
1
)
#Get pcap on S1 and X2 eNB interface, if enabled in the xml
#will not work for gNB at this stage
if
((
self
.
air_interface
[
self
.
eNB_instance
]
==
'lte-softmodem'
)
or
(
self
.
air_interface
[
self
.
eNB_instance
]
==
'ocp-enb'
))
and
self
.
eNB_Trace
==
'yes'
:
#Get pcap on enb and/or gnb if enabled in the xml
if
self
.
eNB_Trace
==
'yes'
:
if
((
self
.
air_interface
[
self
.
eNB_instance
]
==
'lte-softmodem'
)
or
(
self
.
air_interface
[
self
.
eNB_instance
]
==
'ocp-enb'
)):
pcapfile_prefix
=
"enb_"
else
:
pcapfile_prefix
=
"gnb_"
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
mySSH
.
command
(
'ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"'
,
'\$'
,
5
)
result
=
re
.
search
(
'interfaceToUse=(?P<eth_interface>[a-zA-Z0-9\-\_]+)done'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
eth_interface
=
result
.
group
(
'eth_interface'
)
logging
.
debug
(
'
\u001B
[1m Launching tshark on interface '
+
eth_interface
+
'
\u001B
[0m'
)
pcapfile
=
'enb_'
+
self
.
testCase_id
+
'_s1x2
log.pcap'
pcapfile
=
pcapfile_prefix
+
self
.
testCase_id
+
'_
log.pcap'
mySSH
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -f /tmp/'
+
pcapfile
,
'\$'
,
5
)
mySSH
.
command
(
'echo $USER; nohup sudo -E tshark -i '
+
eth_interface
+
' -w /tmp/'
+
pcapfile
+
' 2>&1 &'
,
'\$'
,
5
)
mySSH
.
close
()
...
...
@@ -672,10 +688,11 @@ class RANManagement():
mySSH
.
open
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
)
mySSH
.
command
(
'cd '
+
self
.
eNBSourceCodePath
,
'\$'
,
5
)
mySSH
.
command
(
'cd cmake_targets'
,
'\$'
,
5
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S mv /tmp/enb_*_s1x2log.pcap .'
,
'\$'
,
20
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S mv /tmp/enb_*.pcap .'
,
'\$'
,
20
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S mv /tmp/gnb_*.pcap .'
,
'\$'
,
20
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm -f enb.log.zip'
,
'\$'
,
5
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap enb_*txt physim_*.log *stats.log'
,
'\$'
,
60
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap enb_*txt physim_*.log *stats.log'
,
'\$'
,
5
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap
gnb_*.pcap
enb_*txt physim_*.log *stats.log'
,
'\$'
,
60
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap
gnb_*.pcap
enb_*txt physim_*.log *stats.log'
,
'\$'
,
5
)
mySSH
.
close
()
def
AnalyzeLogFile_eNB
(
self
,
eNBlogFile
,
HTML
):
...
...
@@ -921,8 +938,9 @@ class RANManagement():
if
result
is
not
None
:
#remove 1- all useless char before relevant info 2- trailing char
line
=
line
.
replace
(
'[0m'
,
''
)
tmp
=
re
.
match
(
rf'^.*?(\b
{
k
}
\b.*)'
,
line
.
rstrip
())
#from python 3.6 we can use literal string interpolation for the variable k, using rf' in the regex
real_time_stats
[
k
]
=
tmp
.
group
(
1
)
tmp
=
re
.
match
(
rf'^.*?(\b
{
k
}
\b.*)'
,
line
.
rstrip
())
#from python 3.6 we can use literal string interpolation for the variable k, using rf' in the regex
if
tmp
!=
None
:
#with ULULULUULULULLLL at the head of the line, we skip it
real_time_stats
[
k
]
=
tmp
.
group
(
1
)
#count "problem receiving samples" msg
result
=
re
.
search
(
'\[PHY\]\s+problem receiving samples'
,
str
(
line
))
...
...
ci-scripts/reportBuildLocally.sh
View file @
3ab21d8f
...
...
@@ -576,8 +576,6 @@ function report_build {
summary_table_row
"RF 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_row
"OAI USRP device if - Release 15"
./archives/enb_eth/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./enb_eth_row7.html
summary_table_row
"NASMESH - Release 15"
./archives/enb_eth/nasmesh.Rel15.txt
"Built target nasmesh"
./enb_eth_row8.html
summary_table_row
"RB Tool - Release 15"
./archives/enb_eth/rb_tool.Rel15.txt
"Built target rb_tool"
./enb_eth_row9.html
summary_table_footer
summary_table_header
"OAI Build: 4G LTE UE -- USRP option"
./archives/ue_eth
...
...
@@ -600,9 +598,7 @@ function report_build {
summary_table_row
"Coding - Release 15"
./archives/basic_sim/coding.Rel15.txt
"Built target coding"
./basic_sim_row3.html
summary_table_row
"Conf 2 UE data - Release 15"
./archives/basic_sim/conf2uedata.Rel15.txt
"Built target conf2uedata"
./basic_sim_row4.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/basic_sim/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./basic_sim_row5.html
summary_table_row
"NASMESH - Release 15"
./archives/basic_sim/nasmesh.Rel15.txt
"Built target nasmesh"
./basic_sim_row6.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/basic_sim/params_libconfig.Rel15.txt
"Built target params_libconfig"
./basic_sim_row7.html
summary_table_row
"RB Tool - Release 15"
./archives/basic_sim/rb_tool.Rel15.txt
"Built target rb_tool"
./basic_sim_row8.html
summary_table_row
"RF Simulator - Release 15"
./archives/basic_sim/rfsimulator.Rel15.txt
"Built target rfsimulator"
./basic_sim_row9.html
summary_table_row
"TCP Bridge - Release 15"
./archives/basic_sim/tcp_bridge_oai.Rel15.txt
"Built target tcp_bridge_oai"
./basic_sim_row10.html
summary_table_row
"UE IP - Release 15"
./archives/basic_sim/ue_ip.Rel15.txt
"Built target ue_ip"
./basic_sim_row11.html
...
...
@@ -617,9 +613,7 @@ function report_build {
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 ETHERNET transport - Release 15"
./archives/gnb_usrp/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./gnb_usrp_row4.html
summary_table_row
"NASMESH - Release 15"
./archives/gnb_usrp/nasmesh.Rel15.txt
"Built target nasmesh"
./gnb_usrp_row5.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/gnb_usrp/params_libconfig.Rel15.txt
"Built target params_libconfig"
./gnb_usrp_row6.html
summary_table_row
"RB Tool - Release 15"
./archives/gnb_usrp/rb_tool.Rel15.txt
"Built target rb_tool"
./gnb_usrp_row7.html
summary_table_footer
fi
...
...
@@ -630,9 +624,7 @@ function report_build {
summary_table_row
"Coding - Release 15"
./archives/nr_ue_usrp/coding.Rel15.txt
"Built target coding"
./nr_ue_usrp_row2.html
summary_table_row
"OAI USRP device if - Release 15"
./archives/nr_ue_usrp/oai_usrpdevif.Rel15.txt
"Built target oai_usrpdevif"
./nr_ue_usrp_row3.html
summary_table_row
"OAI ETHERNET transport - Release 15"
./archives/nr_ue_usrp/oai_eth_transpro.Rel15.txt
"Built target oai_eth_transpro"
./nr_ue_usrp_row4.html
summary_table_row
"NASMESH - Release 15"
./archives/nr_ue_usrp/nasmesh.Rel15.txt
"Built target nasmesh"
./nr_ue_usrp_row5.html
summary_table_row
"Parameters Lib Config - Release 15"
./archives/nr_ue_usrp/params_libconfig.Rel15.txt
"Built target params_libconfig"
./nr_ue_usrp_row6.html
summary_table_row
"RB Tool - Release 15"
./archives/nr_ue_usrp/rb_tool.Rel15.txt
"Built target rb_tool"
./nr_ue_usrp_row7.html
summary_table_footer
fi
...
...
@@ -652,7 +644,7 @@ function report_build {
echo
" <button data-toggle=
\"
collapse
\"
data-target=
\"
#oai-compilation-details
\"
>Details for Compilation Errors and Warnings </button>"
>>
./build_results.html
echo
" <div id=
\"
oai-compilation-details
\"
class=
\"
collapse
\"
>"
>>
./build_results.html
if
[
-f
./enb_eth_row1.html
]
||
[
-f
./enb_eth_row2.html
]
||
[
-f
./enb_eth_row3.html
]
||
[
-f
./enb_eth_row4.html
]
||
[
-f
./enb_eth_row5.html
]
||
[
-f
./enb_eth_row6.html
]
||
[
-f
./enb_eth_row7.html
]
||
[
-f
./enb_eth_row8.html
]
||
[
-f
./enb_eth_row9.html
]
if
[
-f
./enb_eth_row1.html
]
||
[
-f
./enb_eth_row2.html
]
||
[
-f
./enb_eth_row3.html
]
||
[
-f
./enb_eth_row4.html
]
||
[
-f
./enb_eth_row5.html
]
||
[
-f
./enb_eth_row6.html
]
||
[
-f
./enb_eth_row7.html
]
then
for
DETAILS_TABLE
in
`
ls
./enb_eth_row
*
.html
`
do
...
...
ci-scripts/reportTestLocally.sh
View file @
3ab21d8f
...
...
@@ -717,7 +717,11 @@ function report_test {
done
echo
" </table>"
>>
./test_simulator_results.html
echo
" </div>"
>>
./test_simulator_results.html
fi
ARCHIVES_LOC
=
archives/rf5g_sim/test
if
[
-d
$ARCHIVES_LOC
]
then
echo
" <h3>5G NR RF Simulator Check</h3>"
>>
./test_simulator_results.html
if
[
-f
$ARCHIVES_LOC
/test_final_status.log
]
...
...
@@ -762,9 +766,9 @@ function report_test {
echo
" <tr bgcolor =
\"
#8FBC8F
\"
>"
>>
./test_simulator_results.html
if
[[
$CN_CONFIG
=
~ .
*
wS1.
*
]]
then
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
EPC (aka withS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
else
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
EPC (aka noS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
fi
echo
" </tr>"
>>
./test_simulator_results.html
...
...
@@ -837,9 +841,9 @@ function report_test {
echo
" <tr bgcolor =
\"
#8FBC8F
\"
>"
>>
./test_simulator_results.html
if
[[
$CN_CONFIG
=
~ .
*
wS1.
*
]]
then
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
EPC (aka withS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
else
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
EPC (aka noS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
fi
echo
" </tr>"
>>
./test_simulator_results.html
...
...
@@ -907,9 +911,9 @@ function report_test {
echo
" <tr bgcolor =
\"
#8FBC8F
\"
>"
>>
./test_simulator_results.html
if
[[
$CN_CONFIG
=
~ .
*
wS1.
*
]]
then
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
EPC (aka withS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test with
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
else
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
EPC (aka noS1)
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
echo
" <td align =
\"
center
\"
colspan = 4 >Test without
CN5G
:
${
TMODE
}
--
${
BW
}
PRB --
${
FR_MODE
}
</td>"
>>
./test_simulator_results.html
fi
echo
" </tr>"
>>
./test_simulator_results.html
...
...
ci-scripts/runTestOnVM.sh
View file @
3ab21d8f
...
...
@@ -1355,8 +1355,11 @@ function start_rf_sim_gnb {
ssh
-T
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_GNB_VM_IP_ADDR
<
$1
rm
$1
# Copy the RAW files from the gNB run for the NR-UE
scp
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_GNB_VM_IP_ADDR
:/home/ubuntu/tmp/cmake_targets/ran_build/build/rbconfig.raw
.
scp
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_GNB_VM_IP_ADDR
:/home/ubuntu/tmp/cmake_targets/ran_build/build/reconfig.raw
.
if
[
$LOC_RA_SA_TEST
-ne
2
]
then
scp
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_GNB_VM_IP_ADDR
:/home/ubuntu/tmp/cmake_targets/ran_build/build/rbconfig.raw
.
scp
-o
StrictHostKeyChecking
=
no ubuntu@
$LOC_GNB_VM_IP_ADDR
:/home/ubuntu/tmp/cmake_targets/ran_build/build/reconfig.raw
.
fi
}
function
start_rf_sim_nr_ue
{
...
...
@@ -1371,8 +1374,11 @@ function start_rf_sim_nr_ue {
local
LOC_RA_SA_TEST
=
$8
# Copy the RAW files from the gNB run
scp
-o
StrictHostKeyChecking
=
no rbconfig.raw ubuntu@
$LOC_NR_UE_VM_IP_ADDR
:/home/ubuntu/tmp
scp
-o
StrictHostKeyChecking
=
no reconfig.raw ubuntu@
$LOC_NR_UE_VM_IP_ADDR
:/home/ubuntu/tmp
if
[
$LOC_RA_SA_TEST
-ne
2
]
then
scp
-o
StrictHostKeyChecking
=
no rbconfig.raw ubuntu@
$LOC_NR_UE_VM_IP_ADDR
:/home/ubuntu/tmp
scp
-o
StrictHostKeyChecking
=
no reconfig.raw ubuntu@
$LOC_NR_UE_VM_IP_ADDR
:/home/ubuntu/tmp
fi
echo
"echo
\"
sudo apt-get --yes --quiet install daemon
\"
"
>
$1
echo
"sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1"
>>
$1
...
...
@@ -1380,8 +1386,12 @@ function start_rf_sim_nr_ue {
echo
"export RFSIMULATOR=
${
LOC_GNB_VM_IP_ADDR
}
"
>>
$1
echo
"echo
\"
cd /home/ubuntu/tmp/cmake_targets/ran_build/build/
\"
"
>>
$1
echo
"sudo chmod 777 /home/ubuntu/tmp/cmake_targets/ran_build/build/"
>>
$1
echo
"sudo cp /home/ubuntu/tmp/r*config.raw /home/ubuntu/tmp/cmake_targets/ran_build/build/"
>>
$1
echo
"sudo chmod 666 /home/ubuntu/tmp/cmake_targets/ran_build/build/r*config.raw"
>>
$1
echo
"sudo rm -f /home/ubuntu/tmp/cmake_targets/ran_build/build/r*config.raw"
>>
$1
if
[
$LOC_RA_SA_TEST
-ne
2
]
then
echo
"sudo cp /home/ubuntu/tmp/r*config.raw /home/ubuntu/tmp/cmake_targets/ran_build/build/"
>>
$1
echo
"sudo chmod 666 /home/ubuntu/tmp/cmake_targets/ran_build/build/r*config.raw"
>>
$1
fi
echo
"cd /home/ubuntu/tmp/cmake_targets/ran_build/build/"
>>
$1
if
[
$LOC_S1_CONFIGURATION
-eq
0
]
then
...
...
@@ -1472,11 +1482,13 @@ function run_test_on_vm {
UE_VM_CMDS
=
${
UE_VM_NAME
}
_cmds.txt
echo
"UE_VM_NAME =
$UE_VM_NAME
"
echo
"UE_VM_CMD_FILE =
$UE_VM_CMDS
"
GNB_VM_NAME
=
`
echo
$VM_NAME
|
sed
-e
"s#l2-sim#gnb-usrp#"
-e
"s#rf-sim#gnb-usrp#"
`
elif
[[
((
"
$RUN_OPTIONS
"
==
"complex"
)
&&
(
$VM_NAME
=
~ .
*
-rf5g-sim
.
*
))
]]
then
GNB_VM_NAME
=
`
echo
$VM_NAME
|
sed
-e
"s#rf5g-sim#gnb-usrp#"
`
GNB_VM_CMDS
=
${
GNB_VM_NAME
}
_cmds.txt
echo
"GNB_VM_NAME =
$GNB_VM_NAME
"
echo
"GNB_VM_CMD_FILE =
$GNB_VM_CMDS
"
NR_UE_VM_NAME
=
`
echo
$VM_NAME
|
sed
-e
"s#
l2-sim#nr-ue-usrp#"
-e
"s#rf
-sim#nr-ue-usrp#"
`
NR_UE_VM_NAME
=
`
echo
$VM_NAME
|
sed
-e
"s#
rf5g
-sim#nr-ue-usrp#"
`
NR_UE_VM_CMDS
=
${
UE_VM_NAME
}
_cmds.txt
echo
"NR_UE_VM_NAME =
$NR_UE_VM_NAME
"
echo
"NR_UE_VM_CMD_FILE =
$NR_UE_VM_CMDS
"
...
...
@@ -1505,6 +1517,8 @@ function run_test_on_vm {
UE_VM_IP_ADDR
=
`
uvt-kvm ip
$UE_VM_NAME
`
echo
"
$UE_VM_NAME
has for IP addr =
$UE_VM_IP_ADDR
"
elif
[[
((
"
$RUN_OPTIONS
"
==
"complex"
)
&&
(
$VM_NAME
=
~ .
*
-rf5g-sim
.
*
))
]]
then
echo
"############################################################"
echo
"Waiting for GNB VM to be started"
echo
"############################################################"
...
...
@@ -2239,14 +2253,23 @@ function run_test_on_vm {
fi
if
[[
"
$RUN_OPTIONS
"
==
"complex"
]]
&&
[[
$VM_NAME
=
~ .
*
-rf-sim
.
*
]]
if
[[
"
$RUN_OPTIONS
"
==
"complex"
]]
&&
[[
$VM_NAME
=
~ .
*
-rf
5g
-sim
.
*
]]
then
PING_STATUS
=
0
IPERF_STATUS
=
0
NR_STATUS
=
0
if
[
-d
$ARCHIVES_LOC
]
then
rm
-Rf
$ARCHIVES_LOC
fi
mkdir
--parents
$ARCHIVES_LOC
echo
"############################################################"
echo
"SA TEST"
echo
"############################################################"
#SA test, attention : has a different config file from the rest of the test
CN_CONFIG
=
"noS1"
CONF_FILE
=
gnb.band78.sa.fr1.106PRB.usrp
b210.conf
CONF_FILE
=
gnb.band78.sa.fr1.106PRB.usrp
n310.conf
S1_NOS1_CFG
=
0
PRB
=
106
FREQUENCY
=
3510
...
...
@@ -2257,7 +2280,6 @@ function run_test_on_vm {
fi
local
try_cnt
=
0
NR_STATUS
=
0
######### start of SA TEST loop
while
[
$try_cnt
-lt
5
]
#5 because it hardly succeed within CI
...
...
@@ -2314,6 +2336,7 @@ function run_test_on_vm {
echo
"try_cnt = "
$try_cnt
try_cnt
=
$((
try_cnt+1
))
else
echo
"SA test OK"
try_cnt
=
$((
try_cnt+10
))
fi
done
...
...
@@ -2339,14 +2362,14 @@ function run_test_on_vm {
fi
local
try_cnt
=
0
NR_STATUS
=
0
######### start of RA TEST loop
RA_FR2_STATUS
=
0
while
[
$try_cnt
-lt
5
]
#5 because it hardly succeed within CI
do
SYNC_STATUS
=
0
RA_
FR2_
STATUS
=
0
RA_STATUS
=
0
rm
-f
$ARCHIVES_LOC
/tdd_
${
PRB
}
prb_
${
CN_CONFIG
}*
ra_fr2_test.log
echo
"############################################################"
...
...
@@ -2390,12 +2413,15 @@ function run_test_on_vm {
# Proper check to be done when RA test is working!
check_ra_result
$ARCHIVES_LOC
/
$CURRENT_GNB_LOG_FILE
$ARCHIVES_LOC
/
$CURRENT_NR_UE_LOG_FILE
if
[
$RA_
FR2_
STATUS
-ne
0
]
if
[
$RA_STATUS
-ne
0
]
then
echo
"RA FR2 test NOT OK"
echo
"try_cnt = "
$try_cnt
try_cnt
=
$((
try_cnt+1
))
RA_FR2_STATUS
=
-1
else
echo
"RA FR2 test OK"
RA_FR2_STATUS
=
0
try_cnt
=
$((
try_cnt+10
))
fi
done
...
...
@@ -2439,8 +2465,8 @@ function run_test_on_vm {
FREQUENCY
=
3510
fi
RA_FR1_STATUS
=
0
local
try_cnt
=
0
NR_STATUS
=
0
while
[
$try_cnt
-lt
5
]
#5 because it hardly succeed within CI
do
...
...
@@ -2493,8 +2519,11 @@ function run_test_on_vm {
then
echo
"RA FR1 test NOT OK"
echo
"try_cnt = "
$try_cnt
RA_FR1_STATUS
=
-1
try_cnt
=
$((
try_cnt+1
))
else
echo
"RA FR1 test OK"
RA_FR1_STATUS
=
0
try_cnt
=
$((
try_cnt+10
))
fi
done
...
...
@@ -2629,17 +2658,17 @@ function run_test_on_vm {
if
[
$SA_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$RA_FR2_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$RA_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$RA_
FR1_
STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$SYNC_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$PING_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$IPERF_STATUS
-ne
0
]
;
then
NR_STATUS
=
-1
;
fi
if
[
$NR_STATUS
-eq
0
]
then
echo
"5G-NR RFSIM seems OK"
echo
"5G-NR: TEST_OK"
>
>
$ARCHIVES_LOC
/test_final_status.log
echo
"5G-NR: TEST_OK"
>
$ARCHIVES_LOC
/test_final_status.log
else
echo
"5G-NR RFSIM seems to FAIL"
echo
"5G-NR: TEST_KO"
>
>
$ARCHIVES_LOC
/test_final_status.log
echo
"5G-NR: TEST_KO"
>
$ARCHIVES_LOC
/test_final_status.log
STATUS
=
-1
fi
fi
...
...
ci-scripts/xml_files/fr1_gnb_build.xml
0 → 100644
View file @
3ab21d8f
<!--
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>
build-tab
</htmlTabRef>
<htmlTabName>
Build
</htmlTabName>
<htmlTabIcon>
wrench
</htmlTabIcon>
<TestCaseRequestedList>
000001
000002
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"000001"
>
<class>
Build_eNB
</class>
<desc>
Build gNB
</desc>
<Build_eNB_args>
-w USRP -c --gNB --ninja
</Build_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<backgroundBuild>
True
</backgroundBuild>
<forced_workspace_cleanup>
True
</forced_workspace_cleanup>
</testCase>
<testCase
id=
"000002"
>
<class>
WaitEndBuild_eNB
</class>
<desc>
Wait for end of Build gNB
</desc>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
</testCaseList>
ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml
0 → 100644
View file @
3ab21d8f
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>
TEST-NSA-FR1-TM1
</htmlTabRef>
<htmlTabName>
NSA Ping DL UL with QUECTEL
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
030000
040000
000002
010000
000001
050000
000001
010002
080001
080000
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010000"
>
<class>
Initialize_UE
</class>
<desc>
Initialize Quectel
</desc>
<id>
nrmodule2_quectel
</id>
<UE_Trace>
yes
</UE_Trace>
</testCase>
<testCase
id=
"010002"
>
<class>
Terminate_UE
</class>
<desc>
Terminate Quectel
</desc>
<id>
nrmodule2_quectel
</id>
</testCase>
<testCase
id=
"030000"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize eNB
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/enb.band38.nsa_2x2.100PRB.usrpn310.conf
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<air_interface>
lte
</air_interface>
<eNB_Trace>
yes
</eNB_Trace>
<USRP_IPAddress>
192.168.18.241
</USRP_IPAddress>
</testCase>
<testCase
id=
"040000"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize gNB
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf -q
</Initialize_eNB_args>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
<air_interface>
nr
</air_interface>
<USRP_IPAddress>
192.168.18.240
</USRP_IPAddress>
</testCase>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
5
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"000002"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
20
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"050000"
>
<class>
Ping
</class>
<desc>
Ping: 20pings in 20sec
</desc>
<id>
nrmodule2_quectel
</id>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
50
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"050001"
>
<class>
Ping
</class>
<desc>
Ping: 100pings in 20sec
</desc>
<id>
nrmodule2_quectel
</id>
<ping_args>
-c 100 -i 0.2
</ping_args>
<ping_packetloss_threshold>
50
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"070000"
>
<class>
Iperf
</class>
<desc>
iperf (DL/20Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 20M -t 60
</iperf_args>
<direction>
DL
</direction>
<id>
nrmodule2_quectel
</id>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"070001"
>
<class>
Iperf
</class>
<desc>
iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 3M -t 60
</iperf_args>
<direction>
UL
</direction>
<id>
nrmodule2_quectel
</id>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"080000"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate eNB
</desc>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<air_interface>
lte
</air_interface>
</testCase>
<testCase
id=
"080001"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate gNB
</desc>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
<air_interface>
nr
</air_interface>
</testCase>
</testCaseList>
ci-scripts/xml_files/fr1_sa_quectel.xml
0 → 100644
View file @
3ab21d8f
<!--
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-SA-FR1-TM1
</htmlTabRef>
<htmlTabName>
SA Ping DL UL with QUECTEL
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
040000
000002
010000
000001
050000
000001
010002
080000
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"010000"
>
<class>
Initialize_UE
</class>
<desc>
Initialize Quectel
</desc>
<id>
nrmodule2_quectel
</id>
<UE_Trace>
yes
</UE_Trace>
</testCase>
<testCase
id=
"010002"
>
<class>
Terminate_UE
</class>
<desc>
Terminate Quectel
</desc>
<id>
nrmodule2_quectel
</id>
</testCase>
<testCase
id=
"040000"
>
<class>
Initialize_eNB
</class>
<desc>
Initialize gNB
</desc>
<Initialize_eNB_args>
-O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.usrpn310.conf --sa -q
</Initialize_eNB_args>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<air_interface>
nr
</air_interface>
<eNB_Trace>
yes
</eNB_Trace>
<USRP_IPAddress>
192.168.18.240
</USRP_IPAddress>
</testCase>
<testCase
id=
"000001"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
5
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"000002"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
20
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"050000"
>
<class>
Ping
</class>
<desc>
Ping: 20pings in 20sec
</desc>
<id>
nrmodule2_quectel
</id>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
50
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"050001"
>
<class>
Ping
</class>
<desc>
Ping: 100pings in 20sec
</desc>
<id>
nrmodule2_quectel
</id>
<ping_args>
-c 100 -i 0.2
</ping_args>
<ping_packetloss_threshold>
50
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"070000"
>
<class>
Iperf
</class>
<desc>
iperf (DL/20Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 20M -t 60
</iperf_args>
<direction>
DL
</direction>
<id>
nrmodule2_quectel
</id>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"070001"
>
<class>
Iperf
</class>
<desc>
iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 3M -t 60
</iperf_args>
<direction>
UL
</direction>
<id>
nrmodule2_quectel
</id>
<iperf_packetloss_threshold>
50
</iperf_packetloss_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"080000"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate gNB
</desc>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<air_interface>
nr
</air_interface>
</testCase>
</testCaseList>
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml
View file @
3ab21d8f
...
...
@@ -40,18 +40,19 @@ services:
private_net
:
ipv4_address
:
192.168.68.3
public_net
:
ipv4_address
:
192.168.61.
2
ipv4_address
:
192.168.61.
194
environment
:
TZ
:
Europe/Paris
REALM
:
openairinterface.org
HSS_FQDN
:
hss.openairinterface.org
PREFIX
:
/openair-hss/etc
cassandra_Server_IP
:
192.168.68.2
OP_KEY
:
1006020f0a478bf6b699f15c062e42b3
LTE_K
:
fec86ba6eb707ed08905757b1bb44b8f
LTE_K
:
FEC86BA6EB707ED08905757B1BB44B8F
APN1
:
oai.ipv4
APN2
:
internet
FIRST_IMSI
:
2
22010100001120
NB_USERS
:
10
APN2
:
oai2.ipv4
FIRST_IMSI
:
2
08990100001127
NB_USERS
:
5
healthcheck
:
test
:
/bin/bash -c "pgrep oai_hss"
interval
:
10s
...
...
@@ -65,45 +66,46 @@ services:
depends_on
:
[
oai_hss
]
networks
:
public_net
:
ipv4_address
:
192.168.61.
3
ipv4_address
:
192.168.61.
195
environment
:
TZ
:
Europe/Paris
REALM
:
openairinterface.org
PREFIX
:
/openair-mme/etc
INSTANCE
:
1
PID_DIRECTORY
:
/var/run
HSS_IP_ADDR
:
192.168.61.
2
HSS_IP_ADDR
:
192.168.61.
194
HSS_HOSTNAME
:
hss
HSS_FQDN
:
hss.openairinterface.org
HSS_REALM
:
openairinterface.org
MCC
:
'
2
22
'
MNC
:
'
01
'
MCC
:
'
2
08
'
MNC
:
'
99
'
MME_GID
:
32768
MME_CODE
:
3
TAC_0
:
1
TAC_1
:
2
TAC_2
:
3
MME_FQDN
:
mme.openairinterface.org
MME_S6A_IP_ADDR
:
192.168.61.
3
MME_S6A_IP_ADDR
:
192.168.61.
195
MME_INTERFACE_NAME_FOR_S1_MME
:
eth0
MME_IPV4_ADDRESS_FOR_S1_MME
:
192.168.61.
3
MME_IPV4_ADDRESS_FOR_S1_MME
:
192.168.61.
195
MME_INTERFACE_NAME_FOR_S11
:
eth0
MME_IPV4_ADDRESS_FOR_S11
:
192.168.61.
3
MME_IPV4_ADDRESS_FOR_S11
:
192.168.61.
195
MME_INTERFACE_NAME_FOR_S10
:
lo
MME_IPV4_ADDRESS_FOR_S10
:
127.0.0.10
OUTPUT
:
CONSOLE
SGW_IPV4_ADDRESS_FOR_S11_0
:
192.168.61.
4
SGW_IPV4_ADDRESS_FOR_S11_0
:
192.168.61.
196
PEER_MME_IPV4_ADDRESS_FOR_S10_0
:
0.0.0.0
PEER_MME_IPV4_ADDRESS_FOR_S10_1
:
0.0.0.0
MCC_SGW_0
:
'
2
22
'
MNC3_SGW_0
:
'
0
01
'
MCC_SGW_0
:
'
2
08
'
MNC3_SGW_0
:
'
0
99
'
TAC_LB_SGW_0
:
'
01'
TAC_HB_SGW_0
:
'
00'
MCC_MME_0
:
'
2
22
'
MNC3_MME_0
:
'
0
01
'
MCC_MME_0
:
'
2
08
'
MNC3_MME_0
:
'
0
99
'
TAC_LB_MME_0
:
'
02'
TAC_HB_MME_0
:
'
00'
MCC_MME_1
:
'
2
22
'
MNC3_MME_1
:
'
0
01
'
MCC_MME_1
:
'
2
08
'
MNC3_MME_1
:
'
0
99
'
TAC_LB_MME_1
:
'
03'
TAC_HB_MME_1
:
'
00'
TAC_LB_SGW_TEST_0
:
'
03'
...
...
@@ -122,18 +124,25 @@ services:
container_name
:
prod-oai-spgwc
networks
:
public_net
:
ipv4_address
:
192.168.61.
4
ipv4_address
:
192.168.61.
196
environment
:
PID_DIRECTORY
:
/var/run
TZ
:
Europe/Paris
SGW_INTERFACE_NAME_FOR_S11
:
eth0
SGW_IP_FOR_S5_S8_CP
:
127.0.0.11/8
PGW_IP_FOR_S5_S8_CP
:
127.0.0.12/8
PGW_INTERFACE_NAME_FOR_SX
:
eth0
DEFAULT_APN
:
oai.ipv4
DEFAULT_DNS_IPV4_ADDRESS
:
192.168.18.129
DEFAULT_DNS_SEC_IPV4_ADDRESS
:
8.8.4.4
UE_IP_ADDRESS_POOL
:
'
12.1.1.2
-
12.1.1.254'
PUSH_PROTOCOL_OPTION
:
'
yes'
PUSH_PROTOCOL_OPTION
:
'
true'
APN_NI_1
:
oai.ipv4
APN_NI_2
:
oai2.ipv4
DEFAULT_APN_NI_1
:
oai.ipv4
UE_IP_ADDRESS_POOL_1
:
'
12.1.1.2
-
12.1.1.254'
UE_IP_ADDRESS_POOL_2
:
'
12.0.0.2
-
12.0.0.254'
MCC
:
'
208'
MNC
:
'
99'
MNC03
:
'
099'
TAC
:
1
GW_ID
:
1
REALM
:
openairinterface.org
healthcheck
:
test
:
/bin/bash -c "pgrep oai_spgwc"
interval
:
10s
...
...
@@ -147,45 +156,39 @@ services:
depends_on
:
[
oai_spgwc
]
networks
:
public_net
:
ipv4_address
:
192.168.61.
5
ipv4_address
:
192.168.61.
197
environment
:
TZ
:
Europe/Paris
PID_DIRECTORY
:
/var/run
INSTANCE
:
1
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
:
eth0
PGW_INTERFACE_NAME_FOR_SGI
:
eth0
SGW_INTERFACE_NAME_FOR_SX
:
eth0
SPGWC0_IP_ADDRESS
:
192.168.61.
4
SPGWC0_IP_ADDRESS
:
192.168.61.
196
NETWORK_UE_IP
:
'
12.1.1.0/24'
NETWORK_UE_NAT_OPTION
:
'
yes'
MCC
:
'
208'
MNC
:
'
99'
MNC03
:
'
099'
TAC
:
1
GW_ID
:
1
REALM
:
openairinterface.org
healthcheck
:
test
:
/bin/bash -c "pgrep oai_spgwu"
interval
:
10s
timeout
:
5s
retries
:
5
flexran_rtc
:
image
:
flexran-rtc:production
privileged
:
true
container_name
:
prod-flexran-rtc
networks
:
public_net
:
ipv4_address
:
192.168.61.10
healthcheck
:
test
:
/bin/bash -c "pgrep rt_controller"
interval
:
10s
timeout
:
5s
retries
:
5
trf_gen
:
image
:
trf-gen:production
privileged
:
true
container_name
:
prod-trf-gen
networks
:
public_net
:
ipv4_address
:
192.168.61.
11
entrypoint
:
/bin/bash -c "ip route add 12.1.1.0/24 via 192.168.61.
5
dev eth0; sleep infinity"
ipv4_address
:
192.168.61.
200
entrypoint
:
/bin/bash -c "ip route add 12.1.1.0/24 via 192.168.61.
197
dev eth0; sleep infinity"
healthcheck
:
test
:
/bin/bash -c "ping -c 2 192.168.61.
5
"
test
:
/bin/bash -c "ping -c 2 192.168.61.
197
"
interval
:
10s
timeout
:
5s
retries
:
5
...
...
@@ -200,4 +203,4 @@ networks:
name
:
prod-oai-public-net
ipam
:
config
:
-
subnet
:
192.168.61.
0
/26
-
subnet
:
192.168.61.
192
/26
ci-scripts/yaml_files/fr1_epc_tim/docker-compose.yml.orig
0 → 100644
View file @
3ab21d8f
version: '3.8'
services:
cassandra:
image: cassandra:2.1
container_name: prod-cassandra
networks:
private_net:
ipv4_address: 192.168.68.2
environment:
CASSANDRA_CLUSTER_NAME: "OAI HSS Cluster"
CASSANDRA_ENDPOINT_SNITCH: GossipingPropertyFileSnitch
healthcheck:
test: /bin/bash -c "nodetool status"
interval: 10s
timeout: 5s
retries: 5
db_init:
image: cassandra:2.1
container_name: prod-db-init
depends_on: [cassandra]
deploy:
restart_policy:
condition: on-failure
max_attempts: 10
networks:
private_net:
ipv4_address: 192.168.68.4
volumes:
- ./oai_db.cql:/home/oai_db.cql
entrypoint: /bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
oai_hss:
image: oai-hss:production
container_name: prod-oai-hss
privileged: true
depends_on: [cassandra]
networks:
private_net:
ipv4_address: 192.168.68.3
public_net:
ipv4_address: 192.168.61.2
environment:
REALM: openairinterface.org
HSS_FQDN: hss.openairinterface.org
PREFIX: /openair-hss/etc
cassandra_Server_IP: 192.168.68.2
OP_KEY: 1006020f0a478bf6b699f15c062e42b3
LTE_K: fec86ba6eb707ed08905757b1bb44b8f
APN1: oai.ipv4
APN2: internet
FIRST_IMSI: 222010100001120
NB_USERS: 10
healthcheck:
test: /bin/bash -c "pgrep oai_hss"
interval: 10s
timeout: 5s
retries: 5
oai_mme:
image: oai-mme:production
container_name: prod-oai-mme
privileged: true
depends_on: [oai_hss]
networks:
public_net:
ipv4_address: 192.168.61.3
environment:
REALM: openairinterface.org
PREFIX: /openair-mme/etc
INSTANCE: 1
PID_DIRECTORY: /var/run
HSS_IP_ADDR: 192.168.61.2
HSS_HOSTNAME: hss
HSS_FQDN: hss.openairinterface.org
HSS_REALM: openairinterface.org
MCC: '222'
MNC: '01'
MME_GID: 32768
MME_CODE: 3
TAC_0: 1
TAC_1: 2
TAC_2: 3
MME_FQDN: mme.openairinterface.org
MME_S6A_IP_ADDR: 192.168.61.3
MME_INTERFACE_NAME_FOR_S1_MME: eth0
MME_IPV4_ADDRESS_FOR_S1_MME: 192.168.61.3
MME_INTERFACE_NAME_FOR_S11: eth0
MME_IPV4_ADDRESS_FOR_S11: 192.168.61.3
MME_INTERFACE_NAME_FOR_S10: lo
MME_IPV4_ADDRESS_FOR_S10: 127.0.0.10
OUTPUT: CONSOLE
SGW_IPV4_ADDRESS_FOR_S11_0: 192.168.61.4
PEER_MME_IPV4_ADDRESS_FOR_S10_0: 0.0.0.0
PEER_MME_IPV4_ADDRESS_FOR_S10_1: 0.0.0.0
MCC_SGW_0: '222'
MNC3_SGW_0: '001'
TAC_LB_SGW_0: '01'
TAC_HB_SGW_0: '00'
MCC_MME_0: '222'
MNC3_MME_0: '001'
TAC_LB_MME_0: '02'
TAC_HB_MME_0: '00'
MCC_MME_1: '222'
MNC3_MME_1: '001'
TAC_LB_MME_1: '03'
TAC_HB_MME_1: '00'
TAC_LB_SGW_TEST_0: '03'
TAC_HB_SGW_TEST_0: '00'
SGW_IPV4_ADDRESS_FOR_S11_TEST_0: 0.0.0.0
healthcheck:
test: /bin/bash -c "pgrep oai_mme"
interval: 10s
timeout: 5s
retries: 5
oai_spgwc:
image: oai-spgwc:production
privileged: true
depends_on: [oai_mme]
container_name: prod-oai-spgwc
networks:
public_net:
ipv4_address: 192.168.61.4
environment:
PID_DIRECTORY: /var/run
SGW_INTERFACE_NAME_FOR_S11: eth0
SGW_IP_FOR_S5_S8_CP: 127.0.0.11/8
PGW_IP_FOR_S5_S8_CP: 127.0.0.12/8
PGW_INTERFACE_NAME_FOR_SX: eth0
DEFAULT_APN: oai.ipv4
DEFAULT_DNS_IPV4_ADDRESS: 192.168.18.129
DEFAULT_DNS_SEC_IPV4_ADDRESS: 8.8.4.4
UE_IP_ADDRESS_POOL: '12.1.1.2 - 12.1.1.254'
PUSH_PROTOCOL_OPTION: 'yes'
healthcheck:
test: /bin/bash -c "pgrep oai_spgwc"
interval: 10s
timeout: 5s
retries: 5
oai_spgwu:
image: oai-spgwu-tiny:production
privileged: true
container_name: prod-oai-spgwu-tiny
depends_on: [oai_spgwc]
networks:
public_net:
ipv4_address: 192.168.61.5
environment:
PID_DIRECTORY: /var/run
INSTANCE: 1
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP: eth0
PGW_INTERFACE_NAME_FOR_SGI: eth0
SGW_INTERFACE_NAME_FOR_SX: eth0
SPGWC0_IP_ADDRESS: 192.168.61.4
NETWORK_UE_IP: '12.1.1.0/24'
NETWORK_UE_NAT_OPTION: 'yes'
healthcheck:
test: /bin/bash -c "pgrep oai_spgwu"
interval: 10s
timeout: 5s
retries: 5
flexran_rtc:
image: flexran-rtc:production
privileged: true
container_name: prod-flexran-rtc
networks:
public_net:
ipv4_address: 192.168.61.10
healthcheck:
test: /bin/bash -c "pgrep rt_controller"
interval: 10s
timeout: 5s
retries: 5
trf_gen:
image: trf-gen:production
privileged: true
container_name: prod-trf-gen
networks:
public_net:
ipv4_address: 192.168.61.11
entrypoint: /bin/bash -c "ip route add 12.1.1.0/24 via 192.168.61.5 dev eth0; sleep infinity"
healthcheck:
test: /bin/bash -c "ping -c 2 192.168.61.5"
interval: 10s
timeout: 5s
retries: 5
networks:
private_net:
name: prod-oai-private-net
ipam:
config:
- subnet: 192.168.68.0/26
public_net:
name: prod-oai-public-net
ipam:
config:
- subnet: 192.168.61.0/26
cmake_targets/build_oai
View file @
3ab21d8f
...
...
@@ -683,21 +683,7 @@ function main() {
$build_dir
coding
\
libcoding.so
$dbin
/libcoding.so
#check if we run inside a container or not
#IS_CONTAINER variable is defined in build_helper file
#compile nasmesh and rb_tool only if NOT running in a container
if
[
$IS_CONTAINER
-eq
0
]
then
compilations
\
$build_dir
nasmesh
\
CMakeFiles/nasmesh/nasmesh.ko
$dbin
/nasmesh.ko
compilations
\
$build_dir
rb_tool
\
rb_tool
$dbin
/rb_tool
cp
$OPENAIR_DIR
/cmake_targets/tools/init_nas_nos1
$dbin
fi
#IS_CONTAINER
fi
fi
fi
...
...
executables/softmodem-common.c
View file @
3ab21d8f
...
...
@@ -89,7 +89,7 @@ void get_common_options(uint32_t execmask) {
uint32_t
online_log_messages
=
0
;
uint32_t
glog_level
=
0
;
uint32_t
start_telnetsrv
=
0
,
start_telnetclt
=
0
;
uint32_t
noS1
=
0
,
nokrnmod
=
0
,
nonbiot
=
0
;
uint32_t
noS1
=
0
,
nokrnmod
=
1
,
nonbiot
=
0
;
uint32_t
rfsim
=
0
,
basicsim
=
0
,
do_forms
=
0
;
char
*
logmem_filename
=
NULL
;
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC
;
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
3ab21d8f
...
...
@@ -586,6 +586,23 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
memset
(
cc
[
CC_id
].
vrb_map_UL
,
0
,
100
);
cc
[
CC_id
].
mcch_active
=
0
;
clear_nfapi_information
(
RC
.
mac
[
module_idP
],
CC_id
,
frameP
,
subframeP
);
/* hack: skip BCH RBs in subframe 0 for DL scheduling,
* because with high MCS we may exceed code rate 0.93
* when using those RBs (36.213 7.1.7 says the UE may
* skip decoding if the code rate is higher than 0.93)
* TODO: remove this hack, deal with physical bits properly
* i.e. reduce MCS in the scheduler if code rate > 0.93
*/
if
(
subframeP
==
0
)
{
int
i
;
int
bw
=
cc
[
CC_id
].
mib
->
message
.
dl_Bandwidth
;
/* start and count defined for RBs: 6, 15, 25, 50, 75, 100 */
int
start
[
6
]
=
{
0
,
4
,
9
,
22
,
34
,
47
};
int
count
[
6
]
=
{
6
,
7
,
7
,
6
,
7
,
6
};
for
(
i
=
0
;
i
<
count
[
bw
];
i
++
)
cc
[
CC_id
].
vrb_map
[
start
[
bw
]
+
i
]
=
1
;
}
}
/* Refresh UE list based on UEs dropped by PHY in previous subframe */
...
...
openair2/LAYER2/MAC/pre_processor.c
View file @
3ab21d8f
...
...
@@ -113,10 +113,29 @@ bool try_allocate_harq_retransmission(module_id_t Mod_id,
LOG_D
(
MAC
,
"cannot allocate UE %d: no CCE can be allocated
\n
"
,
UE_id
);
return
false
;
}
/* if nb_rb is not multiple of RBGsize, then last RBG must be free
* (it will be allocated just below)
*/
if
(
nb_rb
%
RBGsize
&&
!
rbgalloc_mask
[
N_RBG
-
1
])
{
LOG_E
(
MAC
,
"retransmission: last RBG already allocated (this should not happen)
\n
"
);
return
false
;
}
ue_ctrl
->
pre_dci_dl_pdu_idx
=
idx
;
// retransmissions: directly allocate
*
n_rbg_sched
-=
nb_rbg
;
ue_ctrl
->
pre_nb_available_rbs
[
CC_id
]
+=
nb_rb
;
if
(
nb_rb
%
RBGsize
)
{
/* special case: if nb_rb is not multiple of RBGsize, then allocate last RBG.
* If we instead allocated another RBG then we will retransmit with more
* RBs and the UE will not accept it.
* (This has been seen in a test with cots UEs, if not true, then change
* code as needed.)
* At this point rbgalloc_mask[N_RBG-1] == 1 due to the test above.
*/
ue_ctrl
->
rballoc_sub_UE
[
CC_id
][
N_RBG
-
1
]
=
1
;
rbgalloc_mask
[
N_RBG
-
1
]
=
0
;
nb_rbg
--
;
}
for
(;
nb_rbg
>
0
;
start_rbg
++
)
{
if
(
!
rbgalloc_mask
[
start_rbg
])
continue
;
...
...
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