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
zzha zzha
OpenXG-RAN
Commits
d0edbd7b
Commit
d0edbd7b
authored
Nov 18, 2022
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ci-ran-sa-tests' into integration_2022_wk46
parents
39cf6006
59c4bb86
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
419 additions
and
163 deletions
+419
-163
ci-scripts/cls_containerize.py
ci-scripts/cls_containerize.py
+64
-58
ci-scripts/conf_files/gNB_SA_CU.conf
ci-scripts/conf_files/gNB_SA_CU.conf
+1
-0
ci-scripts/conf_files/gNB_SA_DU.conf
ci-scripts/conf_files/gNB_SA_DU.conf
+4
-2
ci-scripts/conf_files/gnb.sa.band78.fr1.51PRB.usrpb210.conf
ci-scripts/conf_files/gnb.sa.band78.fr1.51PRB.usrpb210.conf
+13
-72
ci-scripts/main.py
ci-scripts/main.py
+6
-0
ci-scripts/ran.py
ci-scripts/ran.py
+5
-8
ci-scripts/xml_files/container_sa_b200_quectel.xml
ci-scripts/xml_files/container_sa_b200_quectel.xml
+7
-7
ci-scripts/xml_files/container_sa_b200_terminate.xml
ci-scripts/xml_files/container_sa_b200_terminate.xml
+3
-11
ci-scripts/xml_files/container_sa_f1_b200_quectel.xml
ci-scripts/xml_files/container_sa_f1_b200_quectel.xml
+172
-0
ci-scripts/xml_files/container_sa_f1_b200_terminate.xml
ci-scripts/xml_files/container_sa_f1_b200_terminate.xml
+48
-0
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
+1
-1
ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml
ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml
+1
-1
ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml
ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml
+89
-0
docker/scripts/generateTemplate.py
docker/scripts/generateTemplate.py
+1
-1
docker/scripts/gnb_entrypoint.sh
docker/scripts/gnb_entrypoint.sh
+1
-1
docker/scripts/gnb_parameters.yaml
docker/scripts/gnb_parameters.yaml
+1
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
+1
-0
targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
+1
-0
No files found.
ci-scripts/cls_containerize.py
View file @
d0edbd7b
...
...
@@ -773,22 +773,19 @@ class Containerize():
mySSH
.
command
(
f'sed -i -e "s#image:
{
image
}
:latest#image:
{
imageToUse
}
#" ci-docker-compose.yml'
,
'\$'
,
2
)
localMmeIpAddr
=
EPC
.
MmeIPAddress
mySSH
.
command
(
'sed -i -e "s/CI_MME_IP_ADDR/'
+
localMmeIpAddr
+
'/" ci-docker-compose.yml'
,
'\$'
,
2
)
# if self.flexranCtrlDeployed:
# mySSH.command('sed -i -e "s/FLEXRAN_ENABLED:.*/FLEXRAN_ENABLED: \'yes\'/" ci-docker-compose.yml', '\$', 2)
# mySSH.command('sed -i -e "s/CI_FLEXRAN_CTL_IP_ADDR/' + self.flexranCtrlIpAddress + '/" ci-docker-compose.yml', '\$', 2)
# else:
# mySSH.command('sed -i -e "s/FLEXRAN_ENABLED:.*$/FLEXRAN_ENABLED: \'no\'/" ci-docker-compose.yml', '\$', 2)
# mySSH.command('sed -i -e "s/CI_FLEXRAN_CTL_IP_ADDR/127.0.0.1/" ci-docker-compose.yml', '\$', 2)
# Currently support only one
mySSH
.
command
(
'echo '
+
lPassWord
+
' | sudo -S b2xx_fx3_utils --reset-device'
,
'\$'
,
15
)
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml config --services | sed -e "s@^@service=@" 2>&1'
,
'\$'
,
10
)
result
=
re
.
search
(
'service=(?P<svc_name>[a-zA-Z0-9\_]+)'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
svcName
=
result
.
group
(
'svc_name'
)
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml up -d '
+
svcName
,
'\$'
,
15
)
svcName
=
self
.
services
[
self
.
eNB_instance
]
if
svcName
==
''
:
logging
.
warning
(
'no service name given: starting all services in ci-docker-compose.yml!'
)
mySSH
.
command
(
f'docker-compose --file ci-docker-compose.yml up -d --
{
svcName
}
'
,
'\$'
,
30
)
# Checking Status
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml config'
,
'\$'
,
5
)
grep
=
''
if
svcName
!=
''
:
grep
=
f' | grep -A3
{
svcName
}
'
mySSH
.
command
(
f'docker-compose --file ci-docker-compose.yml config
{
grep
}
'
,
'\$'
,
5
)
result
=
re
.
search
(
'container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)'
,
mySSH
.
getBefore
())
unhealthyNb
=
0
healthyNb
=
0
...
...
@@ -848,8 +845,8 @@ class Containerize():
else
:
# containers are unhealthy, so we won't start. However, logs are stored at the end
# in UndeployObject so we here store the logs of the unhealthy container to report it
logfilename
=
f'
{
lSourcePath
}
/cmake_targets/
{
self
.
eNB_logFile
[
self
.
eNB_instance
]
}
'
mySSH
.
command
(
'docker logs {containerName} > {logfilename}'
,
'\$'
,
30
)
logfilename
=
f'
{
lSourcePath
}
/cmake_targets/
log/
{
self
.
eNB_logFile
[
self
.
eNB_instance
]
}
'
mySSH
.
command
(
f
'docker logs
{
containerName
}
>
{
logfilename
}
'
,
'\$'
,
30
)
mySSH
.
copyin
(
lIpAddr
,
lUserName
,
lPassWord
,
logfilename
,
'.'
)
mySSH
.
close
()
...
...
@@ -896,58 +893,67 @@ class Containerize():
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
mySSH
.
command
(
'cd '
+
lSourcePath
+
'/'
+
self
.
yamlPath
[
self
.
eNB_instance
],
'\$'
,
5
)
# Currently support only one
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml config'
,
'\$'
,
5
)
containerName
=
''
containerToKill
=
False
result
=
re
.
search
(
'container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)'
,
mySSH
.
getBefore
())
if
self
.
eNB_logFile
[
self
.
eNB_instance
]
==
''
:
self
.
eNB_logFile
[
self
.
eNB_instance
]
=
'enb_'
+
HTML
.
testCase_id
+
'.log'
if
result
is
not
None
:
containerName
=
result
.
group
(
'container_name'
)
containerToKill
=
True
if
containerToKill
:
mySSH
.
command
(
'docker inspect '
+
containerName
,
'\$'
,
30
)
result
=
re
.
search
(
'Error: No such object: '
+
containerName
,
mySSH
.
getBefore
())
if
result
is
not
None
:
containerToKill
=
False
if
containerToKill
:
mySSH
.
command
(
'docker kill --signal INT '
+
containerName
,
'\$'
,
30
)
time
.
sleep
(
5
)
mySSH
.
command
(
'docker kill --signal KILL '
+
containerName
,
'\$'
,
30
)
time
.
sleep
(
5
)
mySSH
.
command
(
'docker logs '
+
containerName
+
' > '
+
lSourcePath
+
'/cmake_targets/'
+
self
.
eNB_logFile
[
self
.
eNB_instance
],
'\$'
,
30
)
mySSH
.
command
(
'docker rm -f '
+
containerName
,
'\$'
,
30
)
# Forcing the down now to remove the networks and any artifacts
mySSH
.
command
(
'docker-compose --file ci-docker-compose.yml down'
,
'\$'
,
5
)
svcName
=
self
.
services
[
self
.
eNB_instance
]
forceDown
=
False
if
svcName
!=
''
:
logging
.
warning
(
f'service name given, but will stop all services in ci-docker-compose.yml!'
)
svcName
=
''
mySSH
.
command
(
f'docker-compose -f ci-docker-compose.yml config --services'
,
'\$'
,
5
)
# first line has command, last line has next command prompt
allServices
=
mySSH
.
getBefore
().
split
(
'
\r\n
'
)[
1
:
-
1
]
services
=
[]
for
s
in
allServices
:
mySSH
.
command
(
f'docker-compose -f ci-docker-compose.yml ps --all --
{
s
}
'
,
'\$'
,
5
,
silent
=
False
)
running
=
mySSH
.
getBefore
().
split
(
'
\r\n
'
)[
3
:
-
1
]
#logging.debug(f'running services: {running}')
if
len
(
running
)
>
0
:
# something is running for that service
services
.
append
(
s
)
logging
.
info
(
f'stopping services
{
services
}
'
)
mySSH
.
command
(
f'docker-compose -f ci-docker-compose.yml stop'
,
'\$'
,
30
)
time
.
sleep
(
5
)
# give some time to running containers to stop
for
svcName
in
services
:
# head -n -1 suppresses the final "X exited with status code Y"
filename
=
f'
{
svcName
}
-
{
HTML
.
testCase_id
}
.log'
#mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} | head -n -1 &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 30)
mySSH
.
command
(
f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix --
{
svcName
}
&>
{
lSourcePath
}
/cmake_targets/log/
{
filename
}
'
,
'\$'
,
30
)
mySSH
.
command
(
'docker-compose -f ci-docker-compose.yml down'
,
'\$'
,
5
)
# Cleaning any created tmp volume
mySSH
.
command
(
'docker volume prune --force
|| true
'
,
'\$'
,
20
)
mySSH
.
command
(
'docker volume prune --force'
,
'\$'
,
20
)
mySSH
.
close
()
# Analyzing log file!
if
containerToKill
:
copyin_res
=
mySSH
.
copyin
(
lIpAddr
,
lUserName
,
lPassWord
,
lSourcePath
+
'/cmake_targets/'
+
self
.
eNB_logFile
[
self
.
eNB_instance
],
'.'
)
else
:
copyin_res
=
0
nodeB_prefix
=
'e'
if
(
copyin_res
==
-
1
):
HTML
.
htmleNBFailureMsg
=
'Could not copy '
+
nodeB_prefix
+
'NB logfile to analyze it!'
files
=
','
.
join
([
f'
{
s
}
-
{
HTML
.
testCase_id
}
'
for
s
in
services
])
if
len
(
services
)
>
1
:
files
=
'{'
+
files
+
'}'
copyin_res
=
0
if
len
(
services
)
>
0
:
copyin_res
=
mySSH
.
copyin
(
lIpAddr
,
lUserName
,
lPassWord
,
f'
{
lSourcePath
}
/cmake_targets/log/
{
files
}
.log'
,
'.'
)
if
copyin_res
==
-
1
:
HTML
.
htmleNBFailureMsg
=
'Could not copy logfile to analyze it!'
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
CONST
.
ENB_PROCESS_NOLOGFILE_TO_ANALYZE
)
self
.
exitStatus
=
1
else
:
if
containerToKill
:
logging
.
debug
(
'
\u001B
[1m Analyzing '
+
nodeB_prefix
+
'NB logfile
\u001B
[0m '
+
self
.
eNB_logFile
[
self
.
eNB_instance
])
log
Status
=
RAN
.
AnalyzeLogFile_eNB
(
self
.
eNB_logFile
[
self
.
eNB_instance
],
HTML
,
self
.
ran_checkers
)
else
:
logStatus
=
0
if
(
logStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'KO'
,
logStatus
)
else
:
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
for
svcName
in
services
:
filename
=
f'
{
svcName
}
-
{
HTML
.
testCase_id
}
.log'
log
ging
.
debug
(
f'
\u001B
[1m Analyzing logfile
{
filename
}
\u001B
[0m'
)
logStatus
=
RAN
.
AnalyzeLogFile_eNB
(
filename
,
HTML
,
self
.
ran_checkers
)
if
(
logStatus
<
0
):
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'KO'
,
logStatus
)
self
.
exitStatus
=
1
else
:
HTML
.
CreateHtmlTestRow
(
RAN
.
runtime_stats
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
# all the xNB run logs shall be on the server 0 for logCollecting
if
containerToKill
and
self
.
eNB_serverId
[
self
.
eNB_instance
]
!=
'0'
:
mySSH
.
copyout
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
'./'
+
self
.
eNB_logFile
[
self
.
eNB_instance
],
self
.
eNBSourceCodePath
+
'/cmake_targets/'
)
logging
.
info
(
'
\u001B
[1m Undeploying OAI Object Pass
\u001B
[0m'
)
if
self
.
eNB_serverId
[
self
.
eNB_instance
]
!=
'0'
:
mySSH
.
copyout
(
self
.
eNBIPAddress
,
self
.
eNBUserName
,
self
.
eNBPassword
,
f'./
{
files
}
.log'
,
f'
{
self
.
eNBSourceCodePath
}
/cmake_targets/'
)
if
self
.
exitStatus
==
0
:
logging
.
info
(
'
\u001B
[1m Undeploying OAI Object Pass
\u001B
[0m'
)
else
:
logging
.
error
(
'
\u001B
[1m Undeploying OAI Object Failed
\u001B
[0m'
)
def
DeployGenObject
(
self
,
HTML
,
RAN
,
UE
):
self
.
exitStatus
=
0
...
...
ci-scripts/conf_files/gNB_SA_CU.conf
View file @
d0edbd7b
...
...
@@ -19,6 +19,7 @@ gNBs =
nr_cellid
=
12345678
L
;
force_256qam_off
=
1
;
tr_s_preference
=
"f1"
;
...
...
ci-scripts/conf_files/gNB_SA_DU.conf
View file @
d0edbd7b
...
...
@@ -22,6 +22,7 @@ gNBs =
//////////
Physical
parameters
:
min_rxtxtime
=
6
;
force_256qam_off
=
1
;
pdcch_ConfigSIB1
= (
{
...
...
@@ -57,7 +58,7 @@ gNBs =
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
1
;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero
=
1
1
;
initialDLBWPcontrolResourceSetZero
=
1
2
;
initialDLBWPsearchSpaceZero
=
0
;
#uplinkConfigCommon
...
...
@@ -181,7 +182,8 @@ MACRLCs = (
local_n_portd
=
2152
;
remote_n_portc
=
501
;
remote_n_portd
=
2152
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
...
...
ci-scripts/conf_files/gnb.sa.band78.fr1.
106
PRB.usrpb210.conf
→
ci-scripts/conf_files/gnb.sa.band78.fr1.
51
PRB.usrpb210.conf
View file @
d0edbd7b
...
...
@@ -17,9 +17,8 @@ gNBs =
//////////
Physical
parameters
:
min_rxtxtime
=
2
;
do_CSIRS
=
1
;
do_SRS
=
1
;
do_CSIRS
=
0
;
do_SRS
=
0
;
pdcch_ConfigSIB1
= (
{
...
...
@@ -36,21 +35,21 @@ gNBs =
# downlinkConfigCommon
#frequencyInfoDL
# this is 3
600 MHz + 43 PRBs@30kHz SCS (same as initial BWP
)
absoluteFrequencySSB
=
6
41280
;
# this is 3
300.30 MHz + (19 PRBs + 10 SCs)@30kHz SCS (GSCN: 7715
)
absoluteFrequencySSB
=
6
20736
;
dl_frequencyBand
=
78
;
# this is 3
60
0 MHz
dl_absoluteFrequencyPointA
=
6
40008
;
# this is 3
300.3
0 MHz
dl_absoluteFrequencyPointA
=
6
20020
;
#scs-SpecificCarrierList
dl_offstToCarrier
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing
=
1
;
dl_carrierBandwidth
=
106
;
dl_carrierBandwidth
=
51
;
#initialDownlinkBWP
#genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth
=
28875
;
# 6366 12925 12956 28875 12952
initialDLBWPlocationAndBandwidth
=
13750
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
1
;
...
...
@@ -66,11 +65,11 @@ gNBs =
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing
=
1
;
ul_carrierBandwidth
=
106
;
ul_carrierBandwidth
=
51
;
pMax
=
20
;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth
=
28875
;
initialULBWPlocationAndBandwidth
=
13750
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing
=
1
;
...
...
@@ -156,65 +155,6 @@ gNBs =
);
# Dedicated Serving Cell Configuration
servingCellConfigDedicated
= ({
# BWP-Downlink
# BWP 1 Configuration
dl_bwp
-
Id_1
=
1
;
dl_bwp1_locationAndBandwidth
=
28875
; //
RBstart
=
0
,
L
=
106
(
40
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_bwp1_subcarrierSpacing
=
1
;
# BWP 2 Configuration
dl_bwp
-
Id_2
=
2
;
dl_bwp2_locationAndBandwidth
=
13750
; //
RBstart
=
0
,
L
=
51
(
20
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_bwp2_subcarrierSpacing
=
1
;
# BWP 3 Configuration
dl_bwp
-
Id_3
=
3
;
dl_bwp3_locationAndBandwidth
=
6325
; //
RBstart
=
0
,
L
=
24
(
10
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_bwp3_subcarrierSpacing
=
1
;
firstActiveDownlinkBWP
-
Id
=
1
;
#BWP-Id
defaultDownlinkBWP
-
Id
=
1
;
#BWP-Id
# bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30,
# ms40,ms50, ms60, ms80,ms100, ms200,ms300, ms500,
# ms750, ms1280, ms1920, ms2560, spare10, spare9, spare8,
# spare7, spare6, spare5, spare4, spare3, spare2, spare1 }
# UplinkConfig
# BWP-Uplink
# BWP 1 Configuration
ul_bwp
-
Id_1
=
1
;
ul_bwp1_locationAndBandwidth
=
28875
; //
RBstart
=
0
,
L
=
106
(
40
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_bwp1_subcarrierSpacing
=
1
;
# BWP 2 Configuration
ul_bwp
-
Id_2
=
2
;
ul_bwp2_locationAndBandwidth
=
13750
; //
RBstart
=
0
,
L
=
51
(
20
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_bwp2_subcarrierSpacing
=
1
;
# BWP 3 Configuration
ul_bwp
-
Id_3
=
3
;
ul_bwp3_locationAndBandwidth
=
6325
; //
RBstart
=
0
,
L
=
24
(
10
MHz
BW
)
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_bwp3_subcarrierSpacing
=
1
;
firstActiveUplinkBWP
-
Id
=
1
;
#BWP-Id
}
);
# ------- SCTP definitions
SCTP
:
{
...
...
@@ -252,6 +192,7 @@ MACRLCs = (
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
ul_prbblack_SNR_threshold
=
10
;
ulsch_max_frame_inactivity
=
0
;
}
);
...
...
@@ -271,8 +212,8 @@ RUs = (
local_rf
=
"yes"
nb_tx
=
1
nb_rx
=
1
att_tx
=
1
0
;
att_rx
=
1
0
;
att_tx
=
1
4
;
att_rx
=
1
4
;
bands
= [
78
];
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
114
;
...
...
ci-scripts/main.py
View file @
d0edbd7b
...
...
@@ -423,6 +423,9 @@ def GetParametersFromXML(action):
string_field
=
test
.
findtext
(
'u_retx_th'
)
if
(
string_field
is
not
None
):
CONTAINERS
.
ran_checkers
[
'u_retx_th'
]
=
[
float
(
x
)
for
x
in
string_field
.
split
(
','
)]
string_field
=
test
.
findtext
(
'services'
)
if
string_field
is
not
None
:
CONTAINERS
.
services
[
CONTAINERS
.
eNB_instance
]
=
string_field
elif
action
==
'DeployGenObject'
or
action
==
'UndeployGenObject'
or
action
==
'StatsFromGenObject'
:
string_field
=
test
.
findtext
(
'yaml_path'
)
...
...
@@ -986,6 +989,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
RAN
.
prematureExit
=
True
elif
action
==
'Undeploy_Object'
:
CONTAINERS
.
UndeployObject
(
HTML
,
RAN
)
if
CONTAINERS
.
exitStatus
==
1
:
CiTestObj
.
AutoTerminateeNB
(
HTML
,
RAN
,
EPC
,
CONTAINERS
)
RAN
.
prematureExit
=
True
elif
action
==
'Cppcheck_Analysis'
:
SCA
.
CppCheckAnalysis
(
HTML
)
elif
action
==
'LicenceAndFormattingCheck'
:
...
...
ci-scripts/ran.py
View file @
d0edbd7b
...
...
@@ -748,7 +748,7 @@ class RANManagement():
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 enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log* iperf*.log log/*/*.log log/*/*.pcap'
,
'\$'
,
60
)
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip *.log enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log* iperf*.log log/*/*.log log/*/*.pcap'
,
'\$'
,
60
)
result
=
re
.
search
(
'core.\d+'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
mySSH
.
command
(
'echo '
+
self
.
eNBPassword
+
' | sudo -S zip enb.log.zip core* ran_build/build/{lte,nr}-softmodem'
,
'\$'
,
60
)
# add core and executable to zip
...
...
@@ -771,13 +771,13 @@ class RANManagement():
#case where numerator > denumerator with denum ==0 is disregarded, cannot hapen in principle, will lead to 0%
perc
[
i
]
=
0
if
(
retx_data
[
i
]
==
0
)
else
100
*
retx_data
[
i
+
1
]
/
retx_data
[
i
]
#treating % > 100 , % > requirement
stats
[
i
]
=
perc
[
i
]
<
100
and
perc
[
i
]
<=
checkers
[
i
]
stats
[
i
]
=
perc
[
i
]
<
=
100
and
perc
[
i
]
<=
checkers
[
i
]
return
stats
def
AnalyzeLogFile_eNB
(
self
,
eNBlogFile
,
HTML
,
checkers
=
{}):
if
(
not
os
.
path
.
isfile
(
'./'
+
eNBlogFile
)):
if
(
not
os
.
path
.
isfile
(
eNBlogFile
)):
return
-
1
enb_log_file
=
open
(
'./'
+
eNBlogFile
,
'r'
)
enb_log_file
=
open
(
eNBlogFile
,
'r'
)
exitSignalReceived
=
False
foundAssertion
=
False
msgAssertion
=
''
...
...
@@ -1048,10 +1048,7 @@ class RANManagement():
gnb_markers
[
k
].
append
(
line_cnt
)
# check whether e/gNB log finishes with "Bye." message
# Note that it is "=" not "|=" so not only is the regex
# asking for EOF (\Z) but we also only retain the last
# line's result
showedByeMsg
=
re
.
search
(
r'^Bye.\n\Z'
,
str
(
line
),
re
.
MULTILINE
)
is
not
None
showedByeMsg
|=
re
.
search
(
r'^Bye.\n'
,
str
(
line
),
re
.
MULTILINE
)
is
not
None
enb_log_file
.
close
()
...
...
ci-scripts/xml_files/container_sa_b200_quectel.xml
View file @
d0edbd7b
...
...
@@ -22,7 +22,7 @@
-->
<testCaseList>
<htmlTabRef>
TEST-SA-FR1-B200
</htmlTabRef>
<htmlTabName>
SA SanityCheck with QUECTEL
</htmlTabName>
<htmlTabName>
40 MHz TDD SA
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
...
...
@@ -34,13 +34,13 @@
000001
050000
050001
070001
070000
010002
000001
030201
</TestCaseRequestedList>
<!--
070001
070000
070002
050002
050003
...
...
@@ -126,8 +126,8 @@
<testCase
id=
"070000"
>
<class>
Iperf
</class>
<desc>
iperf (DL/
125Mbps/UDP)(6
0 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b
125M -t 60 -i 1 -fm
</iperf_args>
<desc>
iperf (DL/
30Mbps/UDP)(3
0 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b
30M -t 30 -i 1 -fm -l1400
</iperf_args>
<direction>
DL
</direction>
<id>
idefix
</id>
<iperf_packetloss_threshold>
25
</iperf_packetloss_threshold>
...
...
@@ -137,8 +137,8 @@
<testCase
id=
"070001"
>
<class>
Iperf
</class>
<desc>
iperf (UL/8Mbps/UDP)(
6
0 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 8M -t
60 -i 1 -fm
</iperf_args>
<desc>
iperf (UL/8Mbps/UDP)(
3
0 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 8M -t
30 -i 1 -fm -l1400
</iperf_args>
<direction>
UL
</direction>
<id>
idefix
</id>
<iperf_packetloss_threshold>
1
</iperf_packetloss_threshold>
...
...
ci-scripts/xml_files/container_sa_b200_terminate.xml
View file @
d0edbd7b
...
...
@@ -22,12 +22,11 @@
-->
<testCaseList>
<htmlTabRef>
TEST-SA-FR1-B200-terminate
</htmlTabRef>
<htmlTabName>
SA tear-down in case of problem
</htmlTabName>
<htmlTabName>
Tear-down
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
030201
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
...
...
@@ -35,15 +34,8 @@
<class>
Undeploy_Object
</class>
<desc>
Undeploy gNB
</desc>
<yaml_path>
ci-scripts/yaml_files/sa_b200_gnb
</yaml_path>
<eNB_instance>
1
</eNB_instance>
<eNB_serverId>
1
</eNB_serverId>
<image_tag>
sa-test
</image_tag>
</testCase>
<testCase
id=
"222222"
>
<class>
Clean_Test_Server_Images
</class>
<desc>
Clean Test Images on Test Server
</desc>
<test_svr_id>
0
</test_svr_id>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
</testCaseList>
ci-scripts/xml_files/container_sa_f1_b200_quectel.xml
0 → 100644
View file @
d0edbd7b
<!--
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-F1-B200
</htmlTabRef>
<htmlTabName>
40 MHz TDD F1 SA
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
110002
130101
130102
100001
110000
100001
150000
150001
110002
100001
130201
</TestCaseRequestedList>
<!--
070001
070000
070002
050002
050003
-->
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"110000"
>
<class>
Initialize_UE
</class>
<desc>
Initialize Quectel
</desc>
<id>
idefix
</id>
</testCase>
<testCase
id=
"110002"
>
<class>
Terminate_UE
</class>
<desc>
Terminate Quectel
</desc>
<id>
idefix
</id>
</testCase>
<testCase
id=
"130101"
>
<class>
Deploy_Object
</class>
<desc>
Deploy gNB-CU in a container
</desc>
<yaml_path>
ci-scripts/yaml_files/sa_f1_b200_gnb
</yaml_path>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<services>
gnb_cu
</services>
</testCase>
<testCase
id=
"130102"
>
<class>
Deploy_Object
</class>
<desc>
Deploy gNB-DU (TDD/Band78/40MHz/B200) in a container
</desc>
<yaml_path>
ci-scripts/yaml_files/sa_f1_b200_gnb
</yaml_path>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<services>
gnb_du_tdd
</services>
</testCase>
<testCase
id=
"100001"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
5
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"100002"
>
<class>
IdleSleep
</class>
<desc>
Sleep
</desc>
<idle_sleep_time_in_sec>
20
</idle_sleep_time_in_sec>
</testCase>
<testCase
id=
"150000"
>
<class>
Ping
</class>
<desc>
Ping: 20pings in 20sec
</desc>
<id>
idefix
</id>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
1
</ping_packetloss_threshold>
<ping_rttavg_threshold>
25
</ping_rttavg_threshold>
</testCase>
<testCase
id=
"150001"
>
<class>
Ping
</class>
<desc>
Ping: 100pings in 20sec
</desc>
<id>
idefix
</id>
<ping_args>
-c 100 -i 0.2
</ping_args>
<ping_packetloss_threshold>
1
</ping_packetloss_threshold>
<ping_rttavg_threshold>
110
</ping_rttavg_threshold>
</testCase>
<testCase
id=
"150002"
>
<class>
Ping
</class>
<desc>
Ping: 20pings in 20sec
</desc>
<id>
idefix
</id>
<ping_args>
-c 20
</ping_args>
<ping_packetloss_threshold>
1
</ping_packetloss_threshold>
<ping_rttavg_threshold>
110
</ping_rttavg_threshold>
</testCase>
<testCase
id=
"150003"
>
<class>
Ping
</class>
<desc>
Ping: 100pings in 20sec
</desc>
<id>
idefix
</id>
<ping_args>
-c 100 -i 0.2
</ping_args>
<ping_packetloss_threshold>
1
</ping_packetloss_threshold>
<ping_rttavg_threshold>
110
</ping_rttavg_threshold>
</testCase>
<testCase
id=
"170000"
>
<class>
Iperf
</class>
<desc>
iperf (DL/125Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 125M -t 60 -i 1 -fm
</iperf_args>
<direction>
DL
</direction>
<id>
idefix
</id>
<iperf_packetloss_threshold>
25
</iperf_packetloss_threshold>
<iperf_bitrate_threshold>
80
</iperf_bitrate_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"170001"
>
<class>
Iperf
</class>
<desc>
iperf (UL/8Mbps/UDP)(60 sec)(single-ue profile)
</desc>
<iperf_args>
-u -b 8M -t 60 -i 1 -fm
</iperf_args>
<direction>
UL
</direction>
<id>
idefix
</id>
<iperf_packetloss_threshold>
1
</iperf_packetloss_threshold>
<iperf_bitrate_threshold>
95
</iperf_bitrate_threshold>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"170002"
>
<class>
Iperf
</class>
<desc>
iperf (BIDIR TCP)(10 sec)(single-ue profile)
</desc>
<iperf_args>
-t 10 --bidir
</iperf_args>
<direction>
BIDIR
</direction>
<id>
idefix
</id>
<iperf_profile>
single-ue
</iperf_profile>
</testCase>
<testCase
id=
"130201"
>
<class>
Undeploy_Object
</class>
<desc>
Undeploy CU-DU
</desc>
<yaml_path>
ci-scripts/yaml_files/sa_f1_b200_gnb
</yaml_path>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
<d_retx_th>
1,100,100,100
</d_retx_th>
<u_retx_th>
1,100,100,100
</u_retx_th>
</testCase>
</testCaseList>
ci-scripts/xml_files/container_sa_f1_b200_terminate.xml
0 → 100644
View file @
d0edbd7b
<!--
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-F1-B200-terminate
</htmlTabRef>
<htmlTabName>
Tear-down
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
230201
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"230201"
>
<class>
Undeploy_Object
</class>
<desc>
Undeploy CU-DU
</desc>
<yaml_path>
ci-scripts/yaml_files/sa_f1_b200_gnb
</yaml_path>
<eNB_instance>
0
</eNB_instance>
<eNB_serverId>
0
</eNB_serverId>
</testCase>
<testCase
id=
"222222"
>
<class>
Clean_Test_Server_Images
</class>
<desc>
Clean Test Images on Test Server
</desc>
<test_svr_id>
0
</test_svr_id>
</testCase>
</testCaseList>
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
View file @
d0edbd7b
...
...
@@ -270,7 +270,7 @@ services:
container_name
:
rfsim5g-oai-du
environment
:
RFSIMULATOR
:
server
USE_SA_TDD_
C
U
:
'
yes'
USE_SA_TDD_
D
U
:
'
yes'
GNB_NAME
:
du-rfsim
TAC
:
1
MCC
:
'
208'
...
...
ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml
View file @
d0edbd7b
...
...
@@ -20,7 +20,7 @@ services:
GNB_NGA_IP_ADDRESS
:
192.168.68.194
GNB_NGU_IF_NAME
:
eth0
GNB_NGU_IP_ADDRESS
:
192.168.68.194
USE_ADDITIONAL_OPTIONS
:
--sa -
E -q -
-RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function
USE_ADDITIONAL_OPTIONS
:
--sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function
volumes
:
-
/dev:/dev
networks
:
...
...
ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml
0 → 100644
View file @
d0edbd7b
version
:
'
3.8'
services
:
gnb_cu
:
image
:
oai-gnb:latest
privileged
:
true
container_name
:
sa-cu-gnb
environment
:
USE_SA_CU
:
'
yes'
USE_B2XX
:
'
yes'
GNB_NAME
:
gNB-CU-in-docker
MCC
:
'
222'
MNC
:
'
01'
MNC_LENGTH
:
2
TAC
:
1
NSSAI_SST
:
1
NSSAI_SD0
:
1
NSSAI_SD1
:
2
AMF_IP_ADDRESS
:
172.21.16.136
GNB_NGA_IF_NAME
:
eth0
GNB_NGA_IP_ADDRESS
:
192.168.68.194
GNB_NGU_IF_NAME
:
eth0
GNB_NGU_IP_ADDRESS
:
192.168.68.194
F1_IF_NAME
:
eth0
F1_CU_IP_ADDRESS
:
192.168.68.194
F1_DU_IP_ADDRESS
:
192.168.68.195
F1_CU_D_PORT
:
2153
F1_DU_D_PORT
:
2153
USE_ADDITIONAL_OPTIONS
:
--sa --log_config.global_log_options level,nocolor,time,line_num,function
volumes
:
-
/dev:/dev
networks
:
public_net
:
ipv4_address
:
192.168.68.194
#entrypoint: /bin/bash -c "sleep infinity"
healthcheck
:
# pgrep does NOT work
test
:
/bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
interval
:
10s
timeout
:
5s
retries
:
5
gnb_du_tdd
:
image
:
oai-gnb:latest
privileged
:
true
container_name
:
sa-du-b200-gnb
environment
:
USE_SA_TDD_DU
:
'
yes'
USE_B2XX
:
'
yes'
GNB_NAME
:
gNB-DU-in-docker
MCC
:
'
222'
MNC
:
'
01'
MNC_LENGTH
:
2
TAC
:
1
NSSAI_SST
:
1
NSSAI_SD0
:
1
NSSAI_SD1
:
2
AMF_IP_ADDRESS
:
172.21.16.136
GNB_NGA_IF_NAME
:
eth0
GNB_NGA_IP_ADDRESS
:
192.168.68.194
GNB_NGU_IF_NAME
:
eth0
GNB_NGU_IP_ADDRESS
:
192.168.68.194
F1_IF_NAME
:
eth0
F1_CU_IP_ADDRESS
:
192.168.68.194
F1_DU_IP_ADDRESS
:
192.168.68.195
F1_CU_D_PORT
:
2153
F1_DU_D_PORT
:
2153
USE_ADDITIONAL_OPTIONS
:
--sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx -E --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 1 --RUs.[0].att_rx 14 --RUs.[0].att_tx
14
volumes
:
-
/dev:/dev
networks
:
public_net
:
ipv4_address
:
192.168.68.195
#entrypoint: /bin/bash -c "sleep infinity"
healthcheck
:
# pgrep does NOT work
test
:
/bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
name
:
sa-b200-gnb-net
ipam
:
config
:
-
subnet
:
192.168.68.192/26
driver_opts
:
com.docker.network.bridge.name
:
"
sa-gnb-net"
docker/scripts/generateTemplate.py
View file @
d0edbd7b
...
...
@@ -60,7 +60,7 @@ def main():
"rcc.band40.tm1.25PRB"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gnb.band78.tm1.fr1.106PRB.usrpb210.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gnb.band78.sa.fr1.106PRB.usrpn310.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gnb.sa.band78.fr1.
106
PRB.usrpb210.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gnb.sa.band78.fr1.
51
PRB.usrpb210.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gnb.sa.band66.fr1.106PRB.usrpn300.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gNB_SA_CU.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
"gNB_SA_DU.conf"
:
f'
{
data
[
0
][
"paths"
][
"dest_dir"
]
}
/
{
outputfilename
}
'
,
...
...
docker/scripts/gnb_entrypoint.sh
View file @
d0edbd7b
...
...
@@ -13,7 +13,7 @@ if [[ -v USE_SA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.tdd.conf $PREFIX/etc/gnb
if
[[
-v
USE_SA_TDD_MONO_B2XX
]]
;
then
cp
$PREFIX
/etc/gnb.sa.tdd.b2xx.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_FDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.sa.fdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_CU
]]
;
then
cp
$PREFIX
/etc/gnb.sa.cu.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_
C
U
]]
;
then
cp
$PREFIX
/etc/gnb.sa.du.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_
D
U
]]
;
then
cp
$PREFIX
/etc/gnb.sa.du.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_NFAPI_VNF
]]
;
then
cp
$PREFIX
/etc/gnb.sa.nfapi.vnf.conf
$PREFIX
/etc/gnb.conf
;
fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if
[[
-v
USE_VOLUMED_CONF
]]
;
then
cp
$PREFIX
/etc/mounted.conf
$PREFIX
/etc/gnb.conf
;
fi
...
...
docker/scripts/gnb_parameters.yaml
View file @
d0edbd7b
...
...
@@ -109,7 +109,7 @@
-
key
:
parallel_config
env
:
"
@THREAD_PARALLEL_CONFIG@"
-
filePrefix
:
gnb.sa.band78.fr1.
106
PRB.usrpb210.conf
-
filePrefix
:
gnb.sa.band78.fr1.
51
PRB.usrpb210.conf
outputfilename
:
"
gnb.sa.tdd.b2xx.conf"
config
:
-
key
:
gNB_ID
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
View file @
d0edbd7b
...
...
@@ -18,6 +18,7 @@ gNBs =
plmn_list
= ({
mcc
=
208
;
mnc
=
99
;
mnc_length
=
2
;
snssaiList
= ({
sst
=
1
}) });
nr_cellid
=
12345678
L
;
force_256qam_off
=
1
;
tr_s_preference
=
"f1"
;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
View file @
d0edbd7b
...
...
@@ -21,6 +21,7 @@ gNBs =
//////////
Physical
parameters
:
min_rxtxtime
=
6
;
force_256qam_off
=
1
;
pdcch_ConfigSIB1
= (
{
...
...
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