mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-17 06:30:31 +00:00
Compare commits
28 Commits
oru-design
...
oru
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a121f872a6 | ||
|
|
871cd49ccf | ||
|
|
2a4f5e4ce7 | ||
|
|
30725e023a | ||
|
|
76ee035622 | ||
|
|
b6c2029054 | ||
|
|
31769f57b4 | ||
|
|
cd5c331879 | ||
|
|
dcdc1b6a1c | ||
|
|
0551c32473 | ||
|
|
6138b8bf06 | ||
|
|
4ccf9e4020 | ||
|
|
0c6809c0ad | ||
|
|
704751381b | ||
|
|
9d2718d908 | ||
|
|
b08303d5ba | ||
|
|
14a4dc9dc5 | ||
|
|
d1d959d4f5 | ||
|
|
6dd0438fe7 | ||
|
|
72ab5ed110 | ||
|
|
058c889256 | ||
|
|
a9ff2f5c80 | ||
|
|
628f1e9553 | ||
|
|
233066ba05 | ||
|
|
fb3c76cd40 | ||
|
|
eb2f414e9a | ||
|
|
f813fca4a3 | ||
|
|
966770f71e |
141
CMakeLists.txt
141
CMakeLists.txt
@@ -19,6 +19,8 @@
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
|
||||
# Author: laurent THOMAS, Lionel GAUTHIER
|
||||
|
||||
cmake_minimum_required (VERSION 3.16)
|
||||
project (OpenAirInterface LANGUAGES C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@@ -171,6 +173,9 @@ else ()
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8.2-a")
|
||||
endif()
|
||||
|
||||
# add autotools definitions that were maybe used!
|
||||
add_definitions(-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP)
|
||||
|
||||
# we need -rdynamic to incorporate all symbols in shared objects, see man page
|
||||
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
||||
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
||||
@@ -358,7 +363,6 @@ add_library(ngap
|
||||
${NGAP_DIR}/ngap_gNB.c
|
||||
${NGAP_DIR}/ngap_common.c
|
||||
${NGAP_DIR}/ngap_gNB_context_management_procedures.c
|
||||
${NGAP_DIR}/ngap_gNB_mobility_management.c
|
||||
${NGAP_DIR}/ngap_gNB_decoder.c
|
||||
${NGAP_DIR}/ngap_gNB_encoder.c
|
||||
${NGAP_DIR}/ngap_gNB_handlers.c
|
||||
@@ -464,6 +468,9 @@ target_include_directories(f1ap PUBLIC F1AP_DIR)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap GTPV1U)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE f1ap_lib)
|
||||
target_include_directories(f1ap PRIVATE ${F1AP_DIR}/lib)
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(f1ap PRIVATE E2_AGENT)
|
||||
endif()
|
||||
|
||||
# LPP
|
||||
##############
|
||||
@@ -541,6 +548,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories("${OPENAIR_DIR}/executables")
|
||||
include_directories("${OPENAIR2_DIR}/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
||||
include_directories("${OPENAIR3_DIR}/COMMON")
|
||||
include_directories("${OPENAIR3_DIR}/UTILS")
|
||||
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
||||
@@ -581,7 +589,12 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
|
||||
include_directories("${OPENAIR3_DIR}/M3AP")
|
||||
include_directories("${OPENAIR3_DIR}/MME_APP")
|
||||
include_directories("${OPENAIR_DIR}/radio/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/TIMER")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
|
||||
include_directories("${OPENAIR_DIR}")
|
||||
@@ -609,6 +622,11 @@ add_library(UTIL
|
||||
${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
|
||||
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
||||
)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(cap libcap)
|
||||
if (cap_FOUND)
|
||||
@@ -923,9 +941,9 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
||||
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_csirs.c
|
||||
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_srs.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/refsig.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
|
||||
)
|
||||
|
||||
set(PHY_NR_SRC
|
||||
@@ -1148,7 +1166,6 @@ set(L2_NR_SRC
|
||||
${NR_RRC_DIR}/rrc_gNB.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_direct.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
|
||||
${NR_RRC_DIR}/rrc_gNB_asn1.c
|
||||
${NR_RRC_DIR}/rrc_gNB_nsa.c
|
||||
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
||||
${NR_RRC_DIR}/rrc_gNB_NGAP.c
|
||||
@@ -1299,6 +1316,12 @@ add_library(L2
|
||||
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
|
||||
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2 PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
|
||||
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs PUBLIC nr_ue_power_procedures nr_ue_ra_procedures)
|
||||
|
||||
@@ -1325,6 +1348,10 @@ target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc nr_co
|
||||
if(OAI_AERIAL)
|
||||
target_compile_definitions(L2_NR PRIVATE ENABLE_AERIAL)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
add_library(L2_LTE_NR
|
||||
# temporary solution until 4G/5G code completely untangled (as evidenced by deletion of the following file)
|
||||
@@ -1654,6 +1681,13 @@ include_directories(${NAS_SRC}UE/EMM/SAP)
|
||||
include_directories(${NAS_SRC}UE/ESM)
|
||||
include_directories(${NAS_SRC}UE/ESM/SAP)
|
||||
|
||||
# nbiot
|
||||
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
|
||||
set (NBIOT_SOURCES
|
||||
${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
|
||||
)
|
||||
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )
|
||||
|
||||
# Simulation library
|
||||
##########################
|
||||
set (SIMUSRC
|
||||
@@ -1679,8 +1713,9 @@ include_directories("${NFAPI_DIR}/nfapi/inc")
|
||||
include_directories("${NFAPI_DIR}/sim_common/inc")
|
||||
include_directories("${NFAPI_DIR}/pnf_sim/inc")
|
||||
|
||||
add_library(oai_iqplayer MODULE ${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c)
|
||||
target_link_libraries(oai_iqplayer PRIVATE log_headers)
|
||||
add_library(oai_iqplayer MODULE
|
||||
${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
|
||||
)
|
||||
|
||||
#################################
|
||||
# add executables for operation
|
||||
@@ -1690,6 +1725,10 @@ add_library(minimal_lib
|
||||
)
|
||||
target_link_libraries(minimal_lib PUBLIC pthread dl ${T_LIB} LOG)
|
||||
|
||||
add_executable(nfapi_test
|
||||
${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
|
||||
)
|
||||
|
||||
add_executable(measurement_display
|
||||
${OPENAIR_DIR}/common/utils/threadPool/measurement_display.c)
|
||||
target_link_libraries (measurement_display minimal_lib)
|
||||
@@ -1729,7 +1768,6 @@ target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(lte-softmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES} ${lapack_LIBRARIES})
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(lte-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1789,6 +1827,30 @@ target_link_libraries(lte-uesoftmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIE
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE
|
||||
asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
|
||||
|
||||
# nr RRU
|
||||
add_executable(oainr_ru
|
||||
${OPENAIR_DIR}/executables/nr-ru.c
|
||||
${OPENAIR_DIR}/openair1/PHY/INIT/nr_parms.c
|
||||
${OPENAIR_DIR}/openair1/SCHED_NR/phy_frame_config_nr.c
|
||||
${OPENAIR_DIR}/openair1/PHY/INIT/nr_parms.c
|
||||
${OPENAIR_DIR}/openair1/SCHED_NR/nr_prach_procedures.c
|
||||
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR_DIR}/executables/main_nr_ru.c
|
||||
${OPENAIR_DIR}/executables/nr-oru.c
|
||||
)
|
||||
target_link_libraries(oainr_ru PRIVATE
|
||||
-Wl,--start-group
|
||||
UTIL SCHED_RU_LIB PHY_COMMON PHY_RU shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
target_link_libraries(oainr_ru PRIVATE pthread m CONFIG_LIB rt ${T_LIB} utils
|
||||
barrier actor)
|
||||
target_link_libraries(oainr_ru PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs nr_phy_common time_management PHY_NR)
|
||||
|
||||
# nr-softmodem
|
||||
###################################################
|
||||
|
||||
@@ -1833,7 +1895,6 @@ if (OAI_AERIAL)
|
||||
target_link_libraries(nr-softmodem PUBLIC aerial_lib)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(nr-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1855,7 +1916,6 @@ target_link_libraries(nr-cuup PRIVATE
|
||||
CONFIG_LIB ITTI SCTP_CLIENT
|
||||
GTPV1U e1ap f1ap
|
||||
time_management
|
||||
alg
|
||||
z dl pthread shlib_loader ${T_LIB})
|
||||
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
if(E2_AGENT)
|
||||
@@ -1908,14 +1968,14 @@ target_link_libraries(nr-uesoftmodem PRIVATE
|
||||
#####################################
|
||||
|
||||
#special case for dlim TM4, which uses its own version of phy_scope code
|
||||
#add_executable(dlsim_tm4
|
||||
# ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
# ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
# )
|
||||
#target_link_libraries (dlsim_tm4
|
||||
# -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
# pthread m rt CONFIG_LIB ${T_LIB}
|
||||
# )
|
||||
add_executable(dlsim_tm4
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
)
|
||||
target_link_libraries (dlsim_tm4
|
||||
-Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
pthread m rt CONFIG_LIB ${T_LIB}
|
||||
)
|
||||
|
||||
add_executable(rftest
|
||||
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
|
||||
@@ -2040,9 +2100,7 @@ target_link_libraries(nr_ulsim PRIVATE
|
||||
)
|
||||
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
# these simulators do not compile:
|
||||
# dlsim_tm7 pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
|
||||
foreach(myExe dlsim ulsim)
|
||||
foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
|
||||
|
||||
add_executable(${myExe}
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
||||
@@ -2062,23 +2120,22 @@ endforeach(myExe)
|
||||
|
||||
#unitary tests for Core NEtwork pieces
|
||||
#################################
|
||||
#foreach(myExe
|
||||
# s1ap
|
||||
# secu_knas_encrypt_eia1
|
||||
# secu_kenb
|
||||
# aes128_ctr
|
||||
# secu_knas_encrypt_eea2
|
||||
# secu_knas secu_knas_encrypt_eea1
|
||||
# kdf
|
||||
# aes128_cmac_encrypt
|
||||
# secu_knas_encrypt_eia2)
|
||||
# add_executable(test_${myExe}
|
||||
# ${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
# )
|
||||
# target_link_libraries (test_${myExe}
|
||||
# -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
# )
|
||||
#endforeach(myExe)
|
||||
foreach(myExe s1ap
|
||||
secu_knas_encrypt_eia1
|
||||
secu_kenb
|
||||
aes128_ctr
|
||||
secu_knas_encrypt_eea2
|
||||
secu_knas secu_knas_encrypt_eea1
|
||||
kdf
|
||||
aes128_cmac_encrypt
|
||||
secu_knas_encrypt_eia2)
|
||||
add_executable(test_${myExe}
|
||||
${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
)
|
||||
target_link_libraries (test_${myExe}
|
||||
-Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
)
|
||||
endforeach(myExe)
|
||||
|
||||
#ensure that the T header files are generated before targets depending on them
|
||||
if (${T_TRACER})
|
||||
@@ -2088,17 +2145,17 @@ if (${T_TRACER})
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
||||
nr_ulschsim ldpctest polartest smallblocktest
|
||||
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
|
||||
#all "add_library" definitions
|
||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||
params_libconfig
|
||||
oai_eth_transpro HASHTABLE UTIL
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB
|
||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
oai_eth_transpro oai_mobipass HASHTABLE UTIL OMG_SUMO
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_UE_NR ngap
|
||||
GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE SIMU
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
||||
dfts config_internals nr_common crc_byte)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
@@ -2106,6 +2163,8 @@ if (${T_TRACER})
|
||||
endforeach(i)
|
||||
endif (${T_TRACER})
|
||||
|
||||
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
|
||||
|
||||
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
|
||||
set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL)
|
||||
set(ENABLE_PHYSIM_TESTS OFF CACHE STRING "Activate build of physim tests")
|
||||
|
||||
@@ -35,8 +35,6 @@ def gitCommitAuthorEmailAddr
|
||||
// list of failing stages
|
||||
def failingStages = ""
|
||||
|
||||
OAI_Registry = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label nodeExecutor
|
||||
@@ -177,28 +175,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("Ubuntu-Jetson-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-Ubuntu-Jetson-Image-Builder', 'Ubuntu-Jetson-Image-Builder')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
ubuntuJetsonBuildStatus = finalizeSlaveJob('RAN-Ubuntu-Jetson-Image-Builder')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += ubuntuJetsonBuildStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("RHEL-Cluster-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
@@ -293,29 +269,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("PhySim-GraceHopper-5G") {
|
||||
when { expression {do5Gtest || do5GUeTest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-PhySim-GraceHopper-5G', 'PhySim-GraceHopper-5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
physimGH5GStatus = finalizeSlaveJob('RAN-PhySim-GraceHopper-5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += physimGH5GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("PhySim-Cluster-4G") {
|
||||
when { expression {do4Gtest} }
|
||||
steps {
|
||||
@@ -708,29 +661,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-Handover-CN5G") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-SA-Handover-CN5G', 'SA-Handover-CN5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saHandoverStatus = finalizeSlaveJob('RAN-SA-Handover-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saHandoverStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-OAIUE-CN5G") {
|
||||
when { expression {do5Gtest || do5GUeTest} }
|
||||
steps {
|
||||
@@ -836,11 +766,11 @@ def triggerCN5GSlaveJob (jobName, gitlabStatusName) {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.gitlabMergeRequestLastCommit
|
||||
shortenShaOne = shortenShaOne.trim()
|
||||
branchName = env.gitlabSourceBranch.replaceAll("/", "-").trim()
|
||||
fullRanTag = OAI_Registry + '/oai-gnb:' + env.gitlabSourceBranch + '-' + shortenShaOne
|
||||
fullRanTag = 'porcepix.sboai.cs.eurecom.fr/oai-gnb:' + env.gitlabSourceBranch + '-' + shortenShaOne
|
||||
} else {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.GIT_COMMIT
|
||||
shortenShaOne = shortenShaOne.trim()
|
||||
fullRanTag = OAI_Registry + '/oai-gnb:develop-' + shortenShaOne
|
||||
fullRanTag = 'porcepix.sboai.cs.eurecom.fr/oai-gnb:develop-' + shortenShaOne
|
||||
}
|
||||
// Workaround for the "cancelled" GitLab pipeline notification
|
||||
// The slave job is triggered with the propagate false so the following commands are executed
|
||||
|
||||
@@ -31,9 +31,6 @@ if (params.LockResources != null && params.LockResources.trim().length() > 0)
|
||||
// Docker Hub account to push to
|
||||
def DH_Account = "oaisoftwarealliance"
|
||||
|
||||
// internal registry to use
|
||||
def OAI_Registry = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label nodeExecutor
|
||||
@@ -82,14 +79,14 @@ pipeline {
|
||||
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup", "oai-gnb-fhi72"]
|
||||
// Logging in on both registries
|
||||
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd ${OAI_Registry} > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
listOfImages.eachWithIndex { item, iindex ->
|
||||
sh "docker pull --quiet ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker pull --quiet porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:develop"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
|
||||
}
|
||||
// Proxy is not following the same pattern.
|
||||
sh "docker image tag proxy:develop ${DH_Account}/proxy:develop"
|
||||
@@ -98,7 +95,7 @@ pipeline {
|
||||
sh "docker push --quiet ${DH_Account}/proxy:${WEEK_TAG}"
|
||||
sh "docker rmi ${DH_Account}/proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
|
||||
// Logging out on both registries
|
||||
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
||||
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
sh "docker logout > /dev/null 2>&1"
|
||||
}
|
||||
}
|
||||
@@ -108,7 +105,7 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
||||
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
sh "docker logout > /dev/null 2>&1"
|
||||
echo "End of Registry Push"
|
||||
}
|
||||
|
||||
@@ -44,4 +44,4 @@ rf_driver: {
|
||||
#endif
|
||||
|
||||
tx_gain: 75.0, /* TX gain (in dB) */
|
||||
rx_gain: 52.0, /* RX gain (in dB) */
|
||||
rx_gain: 55.0, /* RX gain (in dB) */
|
||||
|
||||
@@ -12,14 +12,6 @@ idefix:
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
raspix:
|
||||
Host: raspix
|
||||
AttachScript: sudo /opt/mbim_scripts/start_quectel_mbim.sh
|
||||
DetachScript: sudo /opt/mbim_scripts/stop_quectel_mbim.sh
|
||||
NetworkScript: ip a show dev wwan0
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
up2:
|
||||
Host: up2
|
||||
AttachScript: sudo /opt/mbim/start_quectel_mbim.sh
|
||||
@@ -85,14 +77,6 @@ oc-cn5g-20897:
|
||||
Undeploy: "! scripts/oc-cn5g-undeploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72"
|
||||
LogCollect: "! scripts/oc-cn5g-logcollect.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72 %%log_dir%%"
|
||||
|
||||
oc-cn5g-00102-ho:
|
||||
Host: groot
|
||||
NetworkScript: echo "inet 172.21.6.111"
|
||||
RunIperf3Server: False
|
||||
Deploy: "! scripts/oc-cn5g-deploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho"
|
||||
Undeploy: "! scripts/oc-cn5g-undeploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho"
|
||||
LogCollect: "! scripts/oc-cn5g-logcollect.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho %%log_dir%%"
|
||||
|
||||
oc-cn5g-20897-aerial:
|
||||
Host: gracehopper1-oai
|
||||
NetworkScript: echo "inet 172.21.6.105"
|
||||
|
||||
@@ -26,26 +26,65 @@ import os
|
||||
import xml.etree.ElementTree as ET
|
||||
import json
|
||||
|
||||
# Define the mapping of physim_test values to search patterns
|
||||
PHYSIM_PATTERN_MAPPING = {
|
||||
'nr_ulsim': [
|
||||
r'(Total PHY proc rx)\s+(\d+\.\d+)\s+us', # Pattern for RX PHY processing time
|
||||
r'(ULSCH total decoding time)\s+(\d+\.\d+)\s+us', # Pattern for ULSCH decoding time
|
||||
],
|
||||
'nr_dlsim': [
|
||||
r'(PHY proc tx)\s+(\d+\.\d+)\s+us', # Pattern for TX PHY processing time
|
||||
r'(DLSCH encoding time)\s+(\d+\.\d+)\s+us', # Pattern for DLSCH encoding time
|
||||
],
|
||||
'ldpctest': [
|
||||
r'(Encoding time mean):\s+(\d+\.\d+)\s+us', # Pattern for encoding time mean
|
||||
r'(Decoding time mean):\s+(\d+\.\d+)\s+us', # Pattern for decoding time mean
|
||||
],
|
||||
}
|
||||
# Define test conditions based on the simulation type
|
||||
PHYSIM_TEST_CONDITION = {
|
||||
'nr_ulsim': 'test OK', # For nr_ulsim, check if 'test OK' is present
|
||||
'nr_dlsim': 'test OK', # For nr_dlsim, check if 'test OK' is present
|
||||
'ldpctest': None, # No condition for ldpctest, just process the patterns
|
||||
}
|
||||
|
||||
class Analysis():
|
||||
|
||||
def _get_test_description(properties):
|
||||
env_vars = None
|
||||
for p in properties:
|
||||
if p["name"] == "ENVIRONMENT":
|
||||
env_vars = p["value"] # save for later if no custom property
|
||||
if p["name"] == "TEST_DESCRIPTION":
|
||||
return p["value"]
|
||||
# if we came till here, it means there is no custom test property
|
||||
# saved in JSON. See if we have a description in environment variables
|
||||
if not env_vars:
|
||||
return "<none>"
|
||||
for ev in env_vars:
|
||||
name, value = ev.split("=", 1)
|
||||
if name == "TEST_DESCRIPTION":
|
||||
return value
|
||||
return "<none>"
|
||||
def analyze_physim(log, physim_test, options, threshold):
|
||||
search_patterns = PHYSIM_PATTERN_MAPPING.get(physim_test)
|
||||
test_condition = PHYSIM_TEST_CONDITION.get(physim_test)
|
||||
success = False
|
||||
msg = ''
|
||||
|
||||
def analyze_physim(result_junit, details_json, logPath):
|
||||
try:
|
||||
with open(log, 'r') as f:
|
||||
log_content = f.read()
|
||||
except FileNotFoundError as e:
|
||||
msg = f'{log} file not found, exception: {e}'
|
||||
return False, msg
|
||||
except Exception as e:
|
||||
msg = f'Error while parsing log file {log}: exception: {e}'
|
||||
return False, msg
|
||||
|
||||
if test_condition and test_condition not in log_content:
|
||||
msg = f"Test did not succeed, '{test_condition}' not found in log file {log}."
|
||||
return False, msg
|
||||
|
||||
time1_match = re.search(search_patterns[0], log_content)
|
||||
time2_match = re.search(search_patterns[1], log_content)
|
||||
if not(time1_match and time2_match):
|
||||
msg = f"Processing time not found in log file {log}."
|
||||
return False, msg
|
||||
|
||||
success = float(time2_match.group(2)) < float(threshold)
|
||||
if success:
|
||||
msg = f'{time1_match.group(1)}: {time1_match.group(2)} us\n{time2_match.group(1)}: {time2_match.group(2)} us'
|
||||
else:
|
||||
msg = f'{time1_match.group(1)}: {time1_match.group(2)} us\n{time2_match.group(1)}: {time2_match.group(2)} us exceeds a limit of {threshold} us'
|
||||
|
||||
return success,msg
|
||||
|
||||
def analyze_oc_physim(result_junit, details_json, logPath):
|
||||
try:
|
||||
tree = ET.parse(result_junit)
|
||||
root = tree.getroot()
|
||||
@@ -77,7 +116,7 @@ class Analysis():
|
||||
for test in root: # for each test
|
||||
test_name = test.attrib["name"]
|
||||
test_exec = json_test_desc[test_name]["properties"][1]["value"][0]
|
||||
desc = Analysis._get_test_description(json_test_desc[test_name]["properties"])
|
||||
desc = json_test_desc[test_name]["properties"][1]["value"][1]
|
||||
# get runtime and checks
|
||||
test_check = test.attrib["status"] == "run"
|
||||
time = round(float(test.attrib["time"]), 1)
|
||||
@@ -90,16 +129,13 @@ class Analysis():
|
||||
with open(f'{log_dir}/{test_name}.log', 'w') as f:
|
||||
f.write(output)
|
||||
# prepare result and info
|
||||
info = f"Runtime: {f'{time:.3f}'[:5]} s"
|
||||
resultstr = 'PASS' if (test_check and time_check and output_check) else 'FAIL'
|
||||
info = f"{test_name}.log: test {resultstr}"
|
||||
for l in output.splitlines():
|
||||
if l.startswith("CHECK "):
|
||||
info += f"\n{l}"
|
||||
if test_check:
|
||||
if not output_check:
|
||||
info += "\nTest log exceeds maximal allowed length 100 kB"
|
||||
info += " Test log exceeds maximal allowed length 100 kB"
|
||||
if not time_check:
|
||||
info += "\nTest exceeds 150s"
|
||||
info += " Test exceeds 150s"
|
||||
if not (time_check and output_check):
|
||||
nb_failed += 1 # time threshold/output length error, not counted for by ctest as of now
|
||||
test_result[test_name] = [desc, info, resultstr]
|
||||
|
||||
@@ -34,6 +34,7 @@ import time
|
||||
import os
|
||||
|
||||
import cls_oai_html
|
||||
import cls_analysis
|
||||
import constants as CONST
|
||||
import helpreadme as HELP
|
||||
import cls_containerize
|
||||
@@ -416,3 +417,34 @@ class Cluster:
|
||||
c.run(f'cp -r {ctx.logPath} {os.getcwd()}/test_log_{ctx.test_id}/')
|
||||
|
||||
return status
|
||||
|
||||
def deploy_oc_physim(self, ctx, HTML, oc_release, node):
|
||||
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
raise ValueError(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {self.ranBranch} ranCommitID {self.ranCommitID}')
|
||||
image_tag = cls_containerize.CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
logging.debug(f'Running physims from server: {node}')
|
||||
script = "scripts/oc-deploy-physims.sh"
|
||||
options = f"oaicicd-core-for-ci-ran {oc_release} {image_tag} {self.eNBSourceCodePath}"
|
||||
ret = cls_cmd.runScript(node, script, 600, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
with cls_cmd.getConnection(node) as ssh:
|
||||
details_json = archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/{oc_release}-tests.json')
|
||||
result_junit = archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/{oc_release}-run.xml')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/physim_log.txt')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/physim_pods_summary.txt')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/LastTestsFailed.log')
|
||||
test_status, test_summary, test_result = cls_analysis.Analysis.analyze_oc_physim(result_junit, details_json, ctx.logPath)
|
||||
if test_summary:
|
||||
if test_status:
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('At least one physical simulator test failed!', 'KO', ["See below for details"])
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Physical simulator failed', 'KO', [test_result])
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
return test_status
|
||||
|
||||
@@ -45,6 +45,12 @@ def getConnection(host, d=None):
|
||||
else:
|
||||
return RemoteCmd(host, d=d)
|
||||
|
||||
def runScript(host, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if is_local(host):
|
||||
return LocalCmd.exec_script(path, timeout, parameters, redirect, silent)
|
||||
else:
|
||||
return RemoteCmd.exec_script(host, path, timeout, parameters, redirect, silent)
|
||||
|
||||
# provides a partial interface for the legacy SSHconnection class (getBefore(), command())
|
||||
class Cmd(metaclass=abc.ABCMeta):
|
||||
def cd(self, d, silent=False):
|
||||
@@ -105,12 +111,12 @@ class LocalCmd(Cmd):
|
||||
logging.debug(f'Working dir is {self.cwd}')
|
||||
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
|
||||
|
||||
def exec_script(self, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
def exec_script(path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if redirect and not redirect.startswith("/"):
|
||||
raise ValueError(f"redirect must be absolute, but is {redirect}")
|
||||
c = f"{path} {parameters}" if parameters else path
|
||||
if not redirect:
|
||||
ret = sp.run(c, shell=True, cwd=self.cwd, timeout=timeout, stdout=sp.PIPE, stderr=sp.STDOUT)
|
||||
ret = sp.run(c, shell=True, timeout=timeout, stdout=sp.PIPE, stderr=sp.STDOUT)
|
||||
ret.stdout = ret.stdout.decode('utf-8').strip()
|
||||
else:
|
||||
with open(redirect, "w") as f:
|
||||
@@ -232,15 +238,18 @@ class RemoteCmd(Cmd):
|
||||
cfg['sock'] = paramiko.ProxyCommand(ucfg['proxycommand'])
|
||||
return cfg
|
||||
|
||||
def exec_script(self, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
def exec_script(host, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if redirect and not redirect.startswith("/"):
|
||||
raise ValueError(f"redirect must be absolute, but is {redirect}")
|
||||
p = parameters if parameters else ""
|
||||
r = f"> {redirect}" if redirect else ""
|
||||
if not silent:
|
||||
logging.debug(f"local> ssh {self.hostname} bash -s {p} < {path} {r}")
|
||||
logging.debug(f"local> ssh {host} bash -s {p} < {path} {r} # {path} from localhost")
|
||||
client = RemoteCmd._ssh_init()
|
||||
cfg = RemoteCmd._lookup_ssh_config(host)
|
||||
client.connect(**cfg)
|
||||
bash_opt = 'BASH_XTRACEFD=1' # write bash set -x output to stdout, see bash(1)
|
||||
stdin, stdout, stderr = self.client.exec_command(f"{bash_opt} bash -s {p} {r}", timeout=timeout)
|
||||
stdin, stdout, stderr = client.exec_command(f"{bash_opt} bash -s {p} {r}", timeout=timeout)
|
||||
# open() the file f at path, read() it and write() it into the stdin of the bash -s cmd
|
||||
with open(path) as f:
|
||||
stdin.write(f.read())
|
||||
@@ -250,6 +259,7 @@ class RemoteCmd(Cmd):
|
||||
if redirect: cmd += f" &> {redirect}"
|
||||
ret = sp.CompletedProcess(args=cmd, returncode=stdout.channel.recv_exit_status(), stdout=stdout.read(size=None) + stderr.read(size=None))
|
||||
ret.stdout = ret.stdout.decode('utf-8').strip()
|
||||
client.close()
|
||||
return ret
|
||||
|
||||
def run(self, line, timeout=300, silent=False, reportNonZero=True):
|
||||
|
||||
@@ -53,7 +53,6 @@ from cls_ci_helper import archiveArtifact
|
||||
# (e.g., cls_cluster.py)
|
||||
#-----------------------------------------------------------
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-enb-asan', 'oai-gnb-asan', 'oai-lte-ue-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial', 'oai-gnb-fhi72']
|
||||
DEFAULT_REGISTRY = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
def CreateWorkspace(host, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
|
||||
if ranCommitID == '':
|
||||
@@ -67,8 +66,7 @@ def CreateWorkspace(host, sourcePath, ranRepository, ranCommitID, ranTargetBranc
|
||||
ranTargetBranch = 'develop'
|
||||
options += f" {ranTargetBranch}"
|
||||
logging.info(f'execute "{script}" with options "{options}" on node {host}')
|
||||
with cls_cmd.getConnection(host) as c:
|
||||
ret = c.exec_script(script, 90, options)
|
||||
ret = cls_cmd.runScript(host, script, 90, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
return ret.returncode == 0
|
||||
|
||||
@@ -305,18 +303,13 @@ class Containerize():
|
||||
result = re.search('build_cross_arm64', self.imageKind)
|
||||
if result is not None:
|
||||
self.dockerfileprefix = '.ubuntu.cross-arm64'
|
||||
result = re.search('native_armv9', self.imageKind)
|
||||
result = re.search('native_arm', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
imageNames.append(('ran-build-fhi72', 'build.fhi72.native_arm', 'ran-build-fhi72', ''))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup', ''))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue', ''))
|
||||
imageNames.append(('oai-gnb-aerial', 'gNB.aerial', 'oai-gnb-aerial', ''))
|
||||
result = re.search('native_armv8', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup', ''))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue', ''))
|
||||
|
||||
cmd.cd(lSourcePath)
|
||||
# if asterix, copy the entitlement and subscription manager configurations
|
||||
@@ -369,6 +362,7 @@ class Containerize():
|
||||
cmd.close()
|
||||
logging.error('\u001B[1m Building OAI Images Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow(self.imageKind, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
else:
|
||||
result = re.search(r'Size *= *(?P<size>[0-9\-]+) *bytes', cmd.getBefore())
|
||||
@@ -492,6 +486,7 @@ class Containerize():
|
||||
logging.error('\u001B[1m Build of L2sim proxy failed\u001B[0m')
|
||||
ssh.close()
|
||||
HTML.CreateHtmlTestRow('commit ' + tag, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
else:
|
||||
logging.debug('L2sim proxy image for tag ' + tag + ' already exists, skipping build')
|
||||
@@ -560,6 +555,7 @@ class Containerize():
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'No {baseImage} image present, cannot build tests')
|
||||
HTML.CreateHtmlTestRow(self.imageKind, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
# build ran-unittests image
|
||||
@@ -570,6 +566,7 @@ class Containerize():
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'Cannot build unit tests')
|
||||
HTML.CreateHtmlTestRow("Unit test build failed", 'KO', [dockerfile])
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
HTML.CreateHtmlTestRowQueue("Build unit tests", 'OK', [dockerfile])
|
||||
@@ -588,16 +585,18 @@ class Containerize():
|
||||
|
||||
if ret.returncode == 0:
|
||||
HTML.CreateHtmlTestRowQueue('Unit tests succeeded', 'OK', [ret.stdout])
|
||||
HTML.CreateHtmlTabFooter(True)
|
||||
return True
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Unit tests failed (see also doc/UnitTests.md)', 'KO', [ret.stdout])
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
def Push_Image_to_Local_Registry(self, node, HTML, tag_prefix=""):
|
||||
lSourcePath = self.eNBSourceCodePath
|
||||
logging.debug('Pushing images to server: ' + node)
|
||||
ssh = cls_cmd.getConnection(node)
|
||||
imagePrefix = DEFAULT_REGISTRY
|
||||
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||
ret = ssh.run(f'docker login -u oaicicd -p oaicicd {imagePrefix}')
|
||||
if ret.returncode != 0:
|
||||
msg = 'Could not log into local registry'
|
||||
@@ -668,7 +667,7 @@ class Containerize():
|
||||
msg = "Pulled Images:\n" + '\n'.join(pulled_images)
|
||||
return True, msg
|
||||
|
||||
def Pull_Image_from_Registry(self, HTML, node, images, tag=None, tag_prefix="", registry=DEFAULT_REGISTRY, username="oaicicd", password="oaicicd"):
|
||||
def Pull_Image_from_Registry(self, HTML, node, images, tag=None, tag_prefix="", registry="porcepix.sboai.cs.eurecom.fr", username="oaicicd", password="oaicicd"):
|
||||
logging.debug(f'\u001B[1m Pulling image(s) on server: {node}\u001B[0m')
|
||||
if not tag:
|
||||
tag = CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
|
||||
@@ -77,8 +77,7 @@ class CoreNetwork:
|
||||
words = line[1:].strip().split(" ")
|
||||
script_name = words[0]
|
||||
options = " ".join(words[1:])
|
||||
with cls_cmd.getConnection(host) as c:
|
||||
ret = c.exec_script(script_name, 300, parameters=options, silent=silent)
|
||||
ret = cls_cmd.runScript(host, script_name, 300, parameters=options, silent=silent)
|
||||
return ret
|
||||
|
||||
def _command(self, cmd_list, must_succeed=False, silent=False):
|
||||
|
||||
@@ -64,3 +64,18 @@ class Native():
|
||||
logging.error('\u001B[1m Building OAI Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow(options, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return success
|
||||
|
||||
def Run_Physim(ctx, HTML, host, directory, options, physim_test, threshold):
|
||||
logging.debug(f'Runnin {physim_test} on server: {host}')
|
||||
workSpacePath = f'{directory}/cmake_targets'
|
||||
runLogFile=f'{workSpacePath}/physim.log'
|
||||
with cls_cmd.getConnection(host) as cmd:
|
||||
cmd.run(f'sudo LD_LIBRARY_PATH=.:{DPDK_PATH}/lib64/ {workSpacePath}/ran_build/build/{physim_test} {options} > {runLogFile} 2>&1')
|
||||
physim_file = archiveArtifact(cmd, ctx, runLogFile)
|
||||
success, msg = cls_analysis.Analysis.analyze_physim(physim_file, physim_test, options, threshold)
|
||||
if success:
|
||||
HTML.CreateHtmlTestRowQueue(options, 'OK', [msg])
|
||||
else:
|
||||
logging.error(msg)
|
||||
HTML.CreateHtmlTestRowQueue(options, 'KO', [msg])
|
||||
return success
|
||||
|
||||
@@ -247,7 +247,7 @@ class HTMLManagement():
|
||||
self.htmlFile.write(' </tr>\n')
|
||||
self.htmlFile.write(' </table>\n')
|
||||
self.htmlFile.write(' <p></p>\n')
|
||||
self.htmlFile.write(' <div class="well well-lg">End of Test Report -- Copyright <span class="glyphicon glyphicon-copyright-mark"></span> 2025 <a href="http://www.openairinterface.org/">OpenAirInterface</a>. All Rights Reserved.</div>\n')
|
||||
self.htmlFile.write(' <div class="well well-lg">End of Test Report -- Copyright <span class="glyphicon glyphicon-copyright-mark"></span> 2018 <a href="http://www.openairinterface.org/">OpenAirInterface</a>. All Rights Reserved.</div>\n')
|
||||
self.htmlFile.write('</div></body>\n')
|
||||
self.htmlFile.write('</html>\n')
|
||||
self.htmlFile.close()
|
||||
@@ -533,6 +533,6 @@ class HTMLManagement():
|
||||
self.htmlFile.write(' <td bgcolor = "green" ><font color="white"><b>' + value[2] + '</b></font></td>\n')
|
||||
else:
|
||||
self.htmlFile.write(' <td bgcolor = "red" ><font color="white"><b>' + value[2] + '</b></font></td>\n')
|
||||
self.htmlFile.write(f' <td colspan="2" bgcolor = "lightcyan"><pre style="display: inline flow-root list-item; margin: 0 3px 0 3px; min-width: 24em;">{value[1]}</pre></td>\n')
|
||||
self.htmlFile.write(' <td bgcolor = "lightcyan">' + value[1] + '</td>\n')
|
||||
|
||||
self.htmlFile.close()
|
||||
|
||||
@@ -46,7 +46,6 @@ import constants as CONST
|
||||
|
||||
import cls_module
|
||||
import cls_corenetwork
|
||||
import cls_analysis
|
||||
import cls_cmd
|
||||
from cls_ci_helper import archiveArtifact
|
||||
|
||||
@@ -235,8 +234,7 @@ def Custom_Command(HTML, node, command):
|
||||
|
||||
def Custom_Script(HTML, node, script):
|
||||
logging.info(f"Executing custom script on {node}")
|
||||
with cls_cmd.getConnection(node) as c:
|
||||
ret = c.exec_script(script, 90)
|
||||
ret = cls_cmd.runScript(node, script, 90)
|
||||
logging.debug(f"Custom_Script: {script} on node: {node} - return code {ret.returncode}, output:\n{ret.stdout}")
|
||||
status = 'OK'
|
||||
message = [ret.stdout]
|
||||
@@ -251,34 +249,6 @@ def IdleSleep(HTML, idle_sleep_time):
|
||||
HTML.CreateHtmlTestRow(f"{idle_sleep_time} sec", 'OK', CONST.ALL_PROCESSES_OK)
|
||||
return True
|
||||
|
||||
def Deploy_Physim(ctx, HTML, node, workdir, script, options):
|
||||
logging.debug(f'Running physims on server {node} workdir {workdir}')
|
||||
with cls_cmd.getConnection(node) as c:
|
||||
sys_info = c.exec_script("scripts/sys-info.sh", 5)
|
||||
ret = c.exec_script(script, 1000, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
HTML.CreateHtmlTestRowQueue('Query system info', 'OK', [sys_info.stdout])
|
||||
with cls_cmd.getConnection(node) as ssh:
|
||||
details_json = archiveArtifact(ssh, ctx, f'{workdir}/desc-tests.json')
|
||||
result_junit = archiveArtifact(ssh, ctx, f'{workdir}/results-run.xml')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/physim_log.txt')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/LastTestsFailed.log')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/LastTest.log')
|
||||
test_status, test_summary, test_result = cls_analysis.Analysis.analyze_physim(result_junit, details_json, ctx.logPath)
|
||||
if test_summary:
|
||||
if test_status:
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('At least one physical simulator test failed!', 'KO', ["See below for details"])
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Physical simulator failed', 'KO', [test_result])
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
return test_status
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# OaiCiTest Class Definition
|
||||
#-----------------------------------------------------------
|
||||
|
||||
@@ -15,7 +15,7 @@ gNBs =
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
@include "neighbour-config.conf"
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
Active_gNBs = ( "oai-cu");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "oai-cu";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1 }) });
|
||||
|
||||
@include "neighbour-config-ho.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "172.21.19.98";
|
||||
remote_s_address = "0.0.0.0";
|
||||
local_s_portd = 2153;
|
||||
remote_s_portd = 2154;
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.109"; });
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.19.98/22";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.19.98/22";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="info";
|
||||
};
|
||||
@@ -1,82 +0,0 @@
|
||||
Active_gNBs = ( "cu-cp-0");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "cu-cp-0";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
@include "neighbour-config.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "192.168.71.150";
|
||||
remote_s_address = "192.168.71.171";
|
||||
local_s_portd = 2153;
|
||||
remote_s_portd = 2153;
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "192.168.71.132"; });
|
||||
|
||||
E1_INTERFACE =
|
||||
(
|
||||
{
|
||||
type = "cp";
|
||||
ipv4_cucp = "192.168.71.150";
|
||||
port_cucp = 38462;
|
||||
ipv4_cuup = "0.0.0.0"; # multiple CU-UPs
|
||||
port_cuup = 38462;
|
||||
}
|
||||
)
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.150";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
rrc_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
ngap_log_level = "info";
|
||||
};
|
||||
@@ -146,8 +146,18 @@ gNBs =
|
||||
|
||||
);
|
||||
|
||||
first_active_bwp = 1;
|
||||
bwp_list = ({ scs = 1; bwpStart = 0; bwpSize = 106;});
|
||||
servingCellConfigDedicated = ({
|
||||
dl_bwp-Id_1 = 1;
|
||||
dl_bwp1_locationAndBandwidth = 28875; # RBstart=0, L=106 (275*(L-1))+RBstart
|
||||
dl_bwp1_subcarrierSpacing = 1;
|
||||
firstActiveDownlinkBWP-Id = 1;
|
||||
defaultDownlinkBWP-Id = 1;
|
||||
ul_bwp-Id_1 = 1;
|
||||
ul_bwp1_locationAndBandwidth = 28875; # RBstart=0, L=106 (275*(L-1))+RBstart
|
||||
ul_bwp1_subcarrierSpacing = 1;
|
||||
firstActiveUplinkBWP-Id = 1;
|
||||
});
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
Active_gNBs = ( "oai-du0");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe00;
|
||||
gNB_name = "oai-du0";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1; }) });
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.98";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
# ul_prbblack_SNR_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
# USRP is connected to an Octoclock in order to establish synchroniation with other USRPs
|
||||
clock_src = "external";
|
||||
time_src = "external";
|
||||
}
|
||||
);
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
@@ -1,212 +0,0 @@
|
||||
Active_gNBs = ( "oai-du1");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe01;
|
||||
gNB_name = "oai-du1";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1; }) });
|
||||
|
||||
nr_cellid = 11111111L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 1;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.99";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
# ul_prbblack_SNR_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
# USRP is connected to an Octoclock in order to establish synchroniation with other USRPs
|
||||
clock_src = "external";
|
||||
time_src = "external";
|
||||
}
|
||||
);
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
@@ -197,6 +197,7 @@ MACRLCs = (
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 200; # 150;
|
||||
pucch_TargetSNRx10 = 200; #200;
|
||||
ulsch_max_frame_inactivity = 10;
|
||||
dl_max_mcs = 28;
|
||||
ul_max_mcs = 28;
|
||||
}
|
||||
|
||||
@@ -198,6 +198,7 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
# ulsch_max_frame_inactivity = 0;
|
||||
pusch_TargetSNRx10 = 150;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
dl_max_mcs = 9;
|
||||
|
||||
@@ -16,7 +16,6 @@ gNBs =
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
do_SINR = 1;
|
||||
min_rxtxtime = 6;
|
||||
disable_harq = 1;
|
||||
cu_sibs = [2];
|
||||
@@ -206,6 +205,7 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
# ulsch_max_frame_inactivity = 0;
|
||||
pusch_TargetSNRx10 = 150;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
dl_max_mcs = 9;
|
||||
|
||||
@@ -24,7 +24,6 @@ gNBs =
|
||||
pusch_AntennaPorts = 2;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 1;
|
||||
uess_agg_levels = [4,2,0,0,0];
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
@@ -140,9 +139,9 @@ gNBs =
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 1;
|
||||
nrofDownlinkSlots = 2;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 3;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -20;
|
||||
@@ -179,12 +178,11 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 320;
|
||||
pucch_TargetSNRx10 = 320;
|
||||
pusch_TargetSNRx10 = 300;
|
||||
pucch_TargetSNRx10 = 300;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
pusch_FailureThres = 100;
|
||||
ul_max_mcs = 28;
|
||||
ul_bler_target_upper = 0.20;
|
||||
ul_bler_target_lower = 0.10;
|
||||
ul_max_mcs = 28;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -193,6 +193,8 @@ RUs = (
|
||||
eNB_instances = [0];
|
||||
ru_thread_core = 6;
|
||||
sl_ahead = 10; #5;
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
|
||||
tr_preference = "raw_if4p5"; # important: activate FHI7.2
|
||||
do_precoding = 0; # needs to match O-RU configuration
|
||||
}
|
||||
|
||||
@@ -175,6 +175,7 @@ MACRLCs = (
|
||||
pusch_TargetSNRx10 = 270;
|
||||
pucch_TargetSNRx10 = 270;
|
||||
pusch_FailureThres = 1000;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
ul_max_mcs = 25;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -184,7 +184,7 @@ L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 150;
|
||||
prach_dtx_threshold = 130;
|
||||
#pucch0_dtx_threshold = 150;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -145,10 +145,64 @@ gNBs =
|
||||
|
||||
);
|
||||
|
||||
first_active_bwp = 1;
|
||||
bwp_list = ({ scs = 1; bwpStart = 0; bwpSize = 106;},
|
||||
{ scs = 1; bwpStart = 0; bwpSize = 51;},
|
||||
{ scs = 1; bwpStart = 0; bwpSize = 24;});
|
||||
# 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
|
||||
@@ -179,6 +233,7 @@ MACRLCs = (
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 250;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
neighbour_list = (
|
||||
{
|
||||
nr_cellid = 12345678;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe01;
|
||||
nr_cellid = 11111111;
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
},
|
||||
{
|
||||
nr_cellid = 11111111;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 12345678;
|
||||
physical_cellId = 0;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
nr_measurement_configuration = {
|
||||
Periodical = {
|
||||
enable = 1;
|
||||
includeBeamMeasurements = 1;
|
||||
maxNrofRS_IndexesToReport = 4;
|
||||
};
|
||||
|
||||
A2 = {
|
||||
enable = 1;
|
||||
threshold = 110;
|
||||
timeToTrigger = 1;
|
||||
};
|
||||
|
||||
A3 = ({
|
||||
cell_id = -1; #Default
|
||||
offset = 10;
|
||||
hysteresis = 0;
|
||||
timeToTrigger = 1
|
||||
})
|
||||
};
|
||||
@@ -1,51 +1,52 @@
|
||||
############################################################
|
||||
# gNB-to-gNB neighbour list + measurement configuration #
|
||||
# for the 2-cell rfsim setup (gNB_ID 0xe00 & 0xb00) #
|
||||
############################################################
|
||||
|
||||
neighbour_list = (
|
||||
##########################################################
|
||||
# Entry USED BY gNB_ID = 0xe00 (nr_cellid = 1) #
|
||||
##########################################################
|
||||
{
|
||||
nr_cellid = 0; # Serving cell of gNB 0xe00
|
||||
nr_cellid = 1;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xb00;
|
||||
nr_cellid = 1; # Cell served by gNB 0xb00
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB= 621312;
|
||||
subcarrierSpacing = 1; # 30 kHz
|
||||
band = 78;
|
||||
plmn = { mcc = 208; mnc = 99; mnc_length = 2 };
|
||||
tracking_area_code = 1;
|
||||
gNB_ID = 0xb00;
|
||||
nr_cellid = 2;
|
||||
physical_cellId = 0x002;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 216; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 2;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xa00;
|
||||
nr_cellid = 3;
|
||||
physical_cellId = 0x003;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 3;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xc00;
|
||||
nr_cellid = 4;
|
||||
physical_cellId = 0x004;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 4;
|
||||
}
|
||||
);
|
||||
)
|
||||
},
|
||||
|
||||
##########################################################
|
||||
# Entry USED BY gNB_ID = 0xb00 (nr_cellid = 2) #
|
||||
##########################################################
|
||||
{
|
||||
nr_cellid = 1; # Serving cell of gNB 0xb00
|
||||
nr_cellid = 2;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 0; # Cell served by gNB 0xe00
|
||||
physical_cellId = 0;
|
||||
absoluteFrequencySSB= 641280;
|
||||
subcarrierSpacing = 1; # 30 kHz
|
||||
band = 78;
|
||||
plmn = { mcc = 208; mnc = 99; mnc_length = 2 };
|
||||
tracking_area_code = 1;
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 1;
|
||||
physical_cellId = 0x000;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 001; mnc = 01; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
);
|
||||
)
|
||||
}
|
||||
);
|
||||
);
|
||||
|
||||
############################################################
|
||||
# Common NR measurement-event configuration #
|
||||
############################################################
|
||||
|
||||
nr_measurement_configuration = {
|
||||
Periodical = {
|
||||
|
||||
@@ -86,7 +86,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -100,8 +100,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -96,8 +96,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -105,8 +105,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -80,7 +80,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -85,7 +85,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -84,7 +84,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -83,7 +83,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -82,7 +82,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#/*
|
||||
# * 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
|
||||
# */
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for Ubuntu 24.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:develop AS ran-tests
|
||||
|
||||
#RUN apt-get update && \
|
||||
# DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||
# DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
# libgtest-dev \
|
||||
# libyaml-cpp-dev
|
||||
|
||||
RUN rm -Rf /oai-ran
|
||||
WORKDIR /oai-ran
|
||||
COPY . .
|
||||
|
||||
WORKDIR /oai-ran/build
|
||||
# TODO should SANITIZE be ON? it makes it compile much longer
|
||||
RUN cmake -GNinja -DENABLE_PHYSIM_TESTS=ON \
|
||||
-DSANITIZE_UNDEFINED=OFF -DSANITIZE_ADDRESS=OFF \
|
||||
-DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror \
|
||||
-DPHYSIM_CHECK_FILES="ThresholdsGracehopper.cmake" \
|
||||
.. && \
|
||||
ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim
|
||||
@@ -242,22 +242,10 @@ def ExecuteActionWithParam(action, ctx):
|
||||
st = test.findtext('idle_sleep_time_in_sec') or "5"
|
||||
success = cls_oaicitest.IdleSleep(HTML, int(st))
|
||||
|
||||
elif action == 'Deploy_Run_OC_PhySim':
|
||||
elif action == 'Deploy_Run_PhySim':
|
||||
oc_release = test.findtext('oc_release')
|
||||
node = test.findtext('node') or None
|
||||
script = "scripts/oc-deploy-physims.sh"
|
||||
image_tag = cls_containerize.CreateTag(CLUSTER.ranCommitID, CLUSTER.ranBranch, CLUSTER.ranAllowMerge)
|
||||
options = f"oaicicd-core-for-ci-ran {oc_release} {image_tag} {CLUSTER.eNBSourceCodePath}"
|
||||
workdir = CLUSTER.eNBSourceCodePath
|
||||
success = cls_oaicitest.Deploy_Physim(ctx, HTML, node, workdir, script, options)
|
||||
|
||||
elif action == 'Build_Deploy_Docker_PhySim' or action == 'Build_Deploy_Source_PhySim':
|
||||
node = test.findtext('node') or None
|
||||
ctest_opt = test.findtext('ctest-opt') or ''
|
||||
script = "scripts/docker-build-and-deploy-physims.sh" if action == 'Build_Deploy_Docker_PhySim' else 'scripts/source-deploy-physims.sh'
|
||||
options = f"{CONTAINERS.eNBSourceCodePath} {ctest_opt}"
|
||||
workdir = CONTAINERS.eNBSourceCodePath
|
||||
success = cls_oaicitest.Deploy_Physim(ctx, HTML, node, workdir, script, options)
|
||||
success = CLUSTER.deploy_oc_physim(ctx, HTML, oc_release, node)
|
||||
|
||||
elif action == 'DeployCoreNetwork' or action == 'UndeployCoreNetwork':
|
||||
cn_id = test.findtext('cn_id')
|
||||
@@ -286,6 +274,13 @@ def ExecuteActionWithParam(action, ctx):
|
||||
return True
|
||||
success = CONTAINERS.Create_Workspace(node, HTML)
|
||||
|
||||
elif action == 'Run_Physim':
|
||||
physim_options = test.findtext('physim_run_args')
|
||||
physim_test = test.findtext('physim_test')
|
||||
physim_threshold = test.findtext('physim_time_threshold') or 'inf'
|
||||
node = test.findtext('node')
|
||||
success = cls_native.Native.Run_Physim(ctx, HTML, node, RAN.eNBSourceCodePath, physim_options, physim_test, physim_threshold)
|
||||
|
||||
elif action == 'LicenceAndFormattingCheck':
|
||||
node = test.findtext('node')
|
||||
success = SCA.LicenceAndFormattingCheck(ctx, node, HTML)
|
||||
|
||||
@@ -15,18 +15,16 @@ fi
|
||||
|
||||
# The script assumes you've build the following images:
|
||||
#
|
||||
# docker build . -f docker/Dockerfile.gNB.ubuntu -t oai-gnb
|
||||
# docker build . -f docker/Dockerfile.nr-cuup.ubuntu -t oai-nr-cuup
|
||||
# docker build . -f docker/Dockerfile.nrUE.ubuntu -t oai-nr-ue
|
||||
# docker build . -f docker/Dockerfile.gNB.ubuntu22 -t oai-gnb
|
||||
# docker build . -f docker/Dockerfile.nrUE.ubuntu22 -t oai-nr-ue
|
||||
#
|
||||
# The images above depend on the following images:
|
||||
#
|
||||
# docker build . -f docker/Dockerfile.build.ubuntu -t ran-build
|
||||
# docker build . -f docker/Dockerfile.base.ubuntu -t ran-base
|
||||
# docker build . -f docker/Dockerfile.build.ubuntu22 -t ran-build
|
||||
# dokcer build . -f docker/Dockerfile.base.ubuntu22 -t ran-base
|
||||
|
||||
docker tag oai-nr-ue oai-ci/oai-nr-ue:develop-${SHORT_COMMIT_SHA}
|
||||
docker tag oai-gnb oai-ci/oai-gnb:develop-${SHORT_COMMIT_SHA}
|
||||
docker tag oai-nr-cuup oai-ci/oai-nr-cuup:develop-${SHORT_COMMIT_SHA}
|
||||
|
||||
python3 main.py --mode=InitiateHtml --ranRepository=NONE --ranBranch=${CURRENT_BRANCH} \
|
||||
--ranCommitID=${COMMIT_SHA} --ranAllowMerge=false \
|
||||
|
||||
@@ -22,5 +22,5 @@ git config user.name "OAI Jenkins"
|
||||
git config advice.detachedHead false
|
||||
mkdir -p cmake_targets/log
|
||||
git checkout -f ${ref}
|
||||
[ -n "${merge}" ] && git fetch origin ${merge} && git merge --ff FETCH_HEAD -m "Temporary merge for CI"
|
||||
[ -n "${merge}" ] && git merge --ff ${merge} -m "Temporary merge for CI"
|
||||
exit 0
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -ge 1 ] || die "usage: $0 <directory> [ctest-options]"
|
||||
|
||||
IMAGE=ran-physimtests:ci-temp
|
||||
CONTAINER=ran-physimtests
|
||||
function cleanup-docker() {
|
||||
docker stop ${CONTAINER}
|
||||
docker rm ${CONTAINER}
|
||||
docker rmi ${IMAGE}
|
||||
docker volume prune --force
|
||||
}
|
||||
trap cleanup-docker EXIT
|
||||
|
||||
set -x
|
||||
DIR=$1
|
||||
RESULT_DIR=${DIR}/
|
||||
shift
|
||||
CTEST_OPT=$@
|
||||
|
||||
# build physims
|
||||
docker build --progress=plain --tag ${IMAGE} --file ${DIR}/ci-scripts/docker/Dockerfile.physim.ubuntu ${DIR} &>> ${RESULT_DIR}/physim_log.txt
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build of physims failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# get a JSON description of all tests to run
|
||||
docker run -a STDOUT --workdir /oai-ran/build/ --env LD_LIBRARY_PATH=/oai-ran/build/ --rm --name ${CONTAINER} ${IMAGE} ctest ${CTEST_OPT} --show-only=json-v1 &> ${RESULT_DIR}/desc-tests.json
|
||||
JSON_RES=$?
|
||||
|
||||
# run the actual tests: we don't suppy --rm as we have to copy the files
|
||||
# similar to unit tests, we can't mount the file where we write physims-5g-run.xml to
|
||||
# as it would write a file as root, but this script is run as a normal user
|
||||
docker run -a STDOUT --workdir /oai-ran/build/ --env LD_LIBRARY_PATH=/oai-ran/build/ --name ${CONTAINER} ${IMAGE} ctest ${CTEST_OPT} --output-junit results-run.xml --test-output-size-passed 100000 --test-output-size-failed 100000 &>> ${RESULT_DIR}/physim_log.txt
|
||||
RUN_RES=$?
|
||||
docker cp ${CONTAINER}:/oai-ran/build/results-run.xml ${RESULT_DIR}/
|
||||
docker cp ${CONTAINER}:/oai-ran/build/Testing/Temporary/LastTestsFailed.log ${RESULT_DIR}/
|
||||
docker cp ${CONTAINER}:/oai-ran/build/Testing/Temporary/LastTest.log ${RESULT_DIR}/
|
||||
|
||||
# if both were successful, return 0
|
||||
# TODO not sure
|
||||
#[[ $JSON_RES -eq 0 && $RUN_RES -eq 0 ]] && exit 0
|
||||
|
||||
exit 0
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -eq 4 ] || die "usage: $0 <namespace> <release> <image tag> <oai directory>"
|
||||
|
||||
@@ -9,31 +11,23 @@ IMG_TAG=${3}
|
||||
OAI_DIR=${4}
|
||||
|
||||
cat /opt/oc-password | oc login -u oaicicd --server https://api.oai.cs.eurecom.fr:6443 > /dev/null
|
||||
set -x
|
||||
oc project ${OC_NS} > /dev/null
|
||||
oc tag oaicicd-ran/oai-physim:${IMG_TAG} ${OC_NS}/oai-physim:${IMG_TAG}
|
||||
helm install ${OC_RELEASE} ${OAI_DIR}/charts/${OC_RELEASE} --set global.image.version=${IMG_TAG} --wait --timeout 120s
|
||||
set +x
|
||||
helm install ${OC_RELEASE} ${OAI_DIR}/charts/${OC_RELEASE} --set global.image.version=${IMG_TAG} --wait
|
||||
POD_ID=$(oc get pods | grep oai-${OC_RELEASE} | awk '{print $1}')
|
||||
wait_creating=30
|
||||
while [[ $(oc describe pod "$POD_ID" | grep "ContainerCreating") && ${wait_creating} > 0 ]]; do
|
||||
sleep 1;
|
||||
let wait_creating=$wait_creating-1
|
||||
done
|
||||
sleep 10
|
||||
echo "Monitoring logs for 'FINISHED' in pod '$POD_ID'"
|
||||
oc logs -f -n ${OC_NS} "$POD_ID" | while read -r line; do
|
||||
if [[ "$line" == *"FINISHED"* ]]; then
|
||||
echo "'FINISHED' detected in logs. Copying logs..."
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTestsFailed.log ${OAI_DIR}/LastTestsFailed.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTest.log ${OAI_DIR}/LastTest.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-tests.json ${OAI_DIR}/desc-tests.json
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-run.xml ${OAI_DIR}/results-run.xml
|
||||
oc logs -n ${OC_NS} "$POD_ID" >> ${OAI_DIR}/ci-scripts/physim_log.txt
|
||||
oc describe pod $POD_ID >> ${OAI_DIR}/ci-scripts/physim_pods_summary.txt
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTestsFailed.log ${OAI_DIR}/ci-scripts/LastTestsFailed.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-tests.json ${OAI_DIR}/ci-scripts/${OC_RELEASE}-tests.json
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-run.xml ${OAI_DIR}/ci-scripts/${OC_RELEASE}-run.xml
|
||||
break
|
||||
fi
|
||||
done
|
||||
set -x
|
||||
oc logs -n ${OC_NS} "$POD_ID" >> ${OAI_DIR}/physim_log.txt
|
||||
oc describe pod $POD_ID >> ${OAI_DIR}/physim_log.txt
|
||||
helm uninstall ${OC_RELEASE} --wait
|
||||
oc delete istag oai-physim:${IMG_TAG} -n ${OC_NS}
|
||||
oc logout > /dev/null
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -ge 1 ] || die "usage: $0 <directory> [ctest-options]"
|
||||
|
||||
set -x
|
||||
DIR=$1
|
||||
shift
|
||||
CTEST_OPT=$@
|
||||
|
||||
cd ${DIR}/cmake_targets/ran_build/build
|
||||
ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim
|
||||
|
||||
# get a JSON description of all tests to run
|
||||
ctest ${CTEST_OPT} --show-only=json-v1 &> ${DIR}/desc-tests.json
|
||||
JSON_RES=$?
|
||||
|
||||
# we run the T2 offload tests, so provide some additional permissions
|
||||
# to be able to initialize DPDK
|
||||
sudo setcap cap_dac_override,cap_sys_admin+ep nr_ulsim
|
||||
sudo setcap cap_dac_override,cap_sys_admin+ep nr_dlsim
|
||||
ctest ${CTEST_OPT} --output-junit ${DIR}/results-run.xml --test-output-size-passed 100000 --test-output-size-failed 100000 &>> ${DIR}/physim_log.txt
|
||||
RUN_RES=$?
|
||||
cp Testing/Temporary/LastTestsFailed.log ${DIR}/
|
||||
cp Testing/Temporary/LastTest.log ${DIR}/
|
||||
|
||||
# if both were successful, return 0
|
||||
# TODO not sure
|
||||
#[[ $JSON_RES -eq 0 && $RUN_RES -eq 0 ]] && exit 0
|
||||
|
||||
exit 0
|
||||
@@ -1,17 +0,0 @@
|
||||
CORES=$(nproc)
|
||||
MODEL=$(lscpu | awk -F: '/Model name/ {print $2; exit}' | xargs)
|
||||
MAX_FREQ=$(lscpu | awk -F: '/CPU max MHz/ {printf "%.2f MHz", $2; exit}')
|
||||
CURRENT_FREQ=$(awk -F: '/cpu MHz/ {printf " %.2f MHz", $2; exit}' /proc/cpuinfo)
|
||||
RAM=$(free -h --si | awk '/Mem:/ {print $2}')
|
||||
# sudo -n: non-interactive, will silently fail in case we don't have privileges
|
||||
DMID=$(sudo -n dmidecode -t memory 2>/dev/null)
|
||||
if [ $? -eq 0 ]; then
|
||||
RAM_TYPE=$(echo "$DMID" | awk -F: '/Type:/ {print $2}' | grep -Ev 'Unknown|Other|None' | head -1 | xargs)
|
||||
else
|
||||
RAM_TYPE="can't query"
|
||||
fi
|
||||
|
||||
|
||||
echo "CPU: model ${MODEL}"
|
||||
echo "${CORES} cores, max CPU freq ${MAX_FREQ}, current ${CURRENT_FREQ}"
|
||||
echo "RAM ${RAM} type ${RAM_TYPE}"
|
||||
@@ -36,20 +36,17 @@ class TestCmd(unittest.TestCase):
|
||||
self.assertEqual(ret.stdout, "test")
|
||||
|
||||
def test_local_script(self):
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-world.sh", 1)
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-world.sh", 1)
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
|
||||
self.assertEqual(ret.returncode, 0)
|
||||
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
|
||||
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "TESTFAIL")
|
||||
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "")
|
||||
@@ -78,20 +75,17 @@ class TestCmd(unittest.TestCase):
|
||||
|
||||
@unittest.skip("need to be able to passwordlessly SSH to localhost, also disable stty -ixon")
|
||||
def test_remote_script(self):
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-world.sh", 1)
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-world.sh", 1)
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
|
||||
self.assertEqual(ret.returncode, 0)
|
||||
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
|
||||
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "TESTFAIL")
|
||||
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "")
|
||||
|
||||
@@ -26,7 +26,7 @@ class TestDeploymentMethods(unittest.TestCase):
|
||||
# the pull function has the authentication at the internal cluster hardcoded
|
||||
# this is a refactoring opportunity: we should do it in a separate step
|
||||
# and allow to have pull work with any registry
|
||||
registry = cls_containerize.DEFAULT_REGISTRY
|
||||
registry = "porcepix.sboai.cs.eurecom.fr"
|
||||
with cls_cmd.getConnection("localhost") as cmd:
|
||||
ret = cmd.run(f"ping -c1 -w1 {registry}")
|
||||
if ret.returncode != 0: # could not ping once -> skip test
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
- Build_Proxy
|
||||
- Build_Cluster_Image
|
||||
- Pull_Cluster_Image
|
||||
- Run_Physim
|
||||
- Build_eNB
|
||||
- Initialize_eNB
|
||||
- Terminate_eNB
|
||||
@@ -22,9 +23,7 @@
|
||||
- Deploy_Object
|
||||
- Undeploy_Object
|
||||
- Cppcheck_Analysis
|
||||
- Deploy_Run_OC_PhySim
|
||||
- Build_Deploy_Docker_PhySim
|
||||
- Build_Deploy_Source_PhySim
|
||||
- Deploy_Run_PhySim
|
||||
- LicenceAndFormattingCheck
|
||||
- Push_Local_Registry
|
||||
- Pull_Local_Registry
|
||||
|
||||
@@ -134,8 +134,8 @@
|
||||
|
||||
<testCase id="030021">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<desc>Iperf (DL/5Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 5M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
|
||||
@@ -1,204 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>rfsim-5gnr-f1-n2-ho</htmlTabRef>
|
||||
<htmlTabName>F1 SA TDD N2 Handover</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
020001
|
||||
000004
|
||||
040001
|
||||
050001
|
||||
020001
|
||||
020002
|
||||
050002
|
||||
030001
|
||||
030002
|
||||
050003
|
||||
020001
|
||||
020002
|
||||
050004
|
||||
050001
|
||||
020001
|
||||
020002
|
||||
050002
|
||||
100001
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 0 + UE RFsim SA</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-0 oai-cuup-0 oai-du-0 oai-nr-ue</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 1 RFsim SA</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-1 oai-cuup-1 oai-du-1</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020002">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>10</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030002">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/4Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 1?</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050003">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci trigger_n2_ho 0,1 | ncat 192.168.71.180 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050004">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 0?</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<d_retx_th>10,100,100,100</d_retx_th>
|
||||
<u_retx_th>10,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -40,7 +40,7 @@
|
||||
<class>Build_Image</class>
|
||||
<desc>Build all Images</desc>
|
||||
<node>gracehopper3-oai</node>
|
||||
<kind>native_armv9</kind>
|
||||
<kind>native_arm</kind>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
<!--
|
||||
|
||||
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 Container Images for ARM</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
000001
|
||||
000010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for server 0</desc>
|
||||
<node>jetson3-oai</node>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Build_Image</class>
|
||||
<desc>Build all Images</desc>
|
||||
<node>jetson3-oai</node>
|
||||
<kind>native_armv8</kind>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Push_Local_Registry</class>
|
||||
<desc>Push Images to Local Registry</desc>
|
||||
<node>jetson3-oai</node>
|
||||
<tag_prefix>armv8_</tag_prefix>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -36,6 +36,18 @@
|
||||
102002
|
||||
302002
|
||||
102003
|
||||
102004
|
||||
102005
|
||||
102006
|
||||
102007
|
||||
102008
|
||||
102009
|
||||
102010
|
||||
102011
|
||||
102012
|
||||
102013
|
||||
102014
|
||||
102015
|
||||
100100
|
||||
100010
|
||||
100020
|
||||
@@ -106,8 +118,80 @@
|
||||
|
||||
<testCase id="102003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 3 - 15</desc>
|
||||
<id>amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15</id>
|
||||
<desc>Attach UE 3</desc>
|
||||
<id>amarisoft_ue_3</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 4</desc>
|
||||
<id>amarisoft_ue_4</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102005">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 5</desc>
|
||||
<id>amarisoft_ue_5</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102006">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 6</desc>
|
||||
<id>amarisoft_ue_6</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102007">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 7</desc>
|
||||
<id>amarisoft_ue_7</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 8</desc>
|
||||
<id>amarisoft_ue_8</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102009">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 9</desc>
|
||||
<id>amarisoft_ue_9</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102010">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 10</desc>
|
||||
<id>amarisoft_ue_10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102011">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 11</desc>
|
||||
<id>amarisoft_ue_11</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102012">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 12</desc>
|
||||
<id>amarisoft_ue_12</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102013">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 13</desc>
|
||||
<id>amarisoft_ue_13</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102014">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 14</desc>
|
||||
<id>amarisoft_ue_14</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 15</desc>
|
||||
<id>amarisoft_ue_15</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100010">
|
||||
|
||||
@@ -1,251 +0,0 @@
|
||||
<!--
|
||||
|
||||
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-F1-HO-B210</htmlTabRef>
|
||||
<htmlTabName>F1 Handover 20 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000004
|
||||
000005
|
||||
000006
|
||||
000007
|
||||
000008
|
||||
000009
|
||||
000010
|
||||
000011
|
||||
000012
|
||||
000013
|
||||
000014
|
||||
000015
|
||||
000016
|
||||
000017
|
||||
000018
|
||||
000019
|
||||
000020
|
||||
000021
|
||||
000022
|
||||
000023
|
||||
000024
|
||||
000025
|
||||
000026
|
||||
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for groot</desc>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace on rocket</desc>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-CU in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>groot</node>
|
||||
<services>oai_cu</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU0 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<services>oai_du0</services>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU1 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>rocket</node>
|
||||
<services>oai_du1</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU0?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Detach_UE</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy CU-DU0</desc>
|
||||
<node>groot</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy DU1 </desc>
|
||||
<node>rocket</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>groot</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>rocket</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-SA-FR1-N310-2x2-60MHz</htmlTabRef>
|
||||
<htmlTabName>60 MHz 2x2 TDD SA DSUUU</htmlTabName>
|
||||
<htmlTabName>60 MHz 2x2 TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100000
|
||||
@@ -114,8 +114,8 @@
|
||||
|
||||
<testCase id="071000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/150Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 150M -t 30 -R</iperf_args>
|
||||
<desc>iperf (DL/200Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 200M -t 30 -R</iperf_args>
|
||||
<svr_id>matix-cn5g</svr_id>
|
||||
<id>up2</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
@@ -124,8 +124,8 @@
|
||||
|
||||
<testCase id="071001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/250Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 250M -t 30</iperf_args>
|
||||
<desc>iperf (UL/180Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 180M -t 30</iperf_args>
|
||||
<svr_id>matix-cn5g</svr_id>
|
||||
<id>up2</id>
|
||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
||||
@@ -147,8 +147,8 @@
|
||||
<node>matix</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<d_retx_th>15,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
<d_retx_th>10,100,100,100</d_retx_th>
|
||||
<u_retx_th>10,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
|
||||
@@ -1,179 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>LONGRUN-5G-NRUE</htmlTabRef>
|
||||
<htmlTabName>Longrun 40 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
060000
|
||||
010000 010001
|
||||
800813
|
||||
020000
|
||||
800814
|
||||
020001
|
||||
000001
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
040001 040000
|
||||
333333
|
||||
444444
|
||||
060001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="060000">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010001">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-nr-ue</images>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020000">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800814">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy nrUE (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
<node>caracal</node>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAIUE</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000100">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/10Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 10M -t 600 -i 1 -R</iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000200">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/2Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 2M -t 600 -i 1 </iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="001000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20pings in 20sec</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>25</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040000">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<d_retx_th>20,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040001">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy nr UE</desc>
|
||||
<node>caracal</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>avra</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444444">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>caracal</node>
|
||||
<images>oai-nr-ue</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="060001">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -42,7 +42,7 @@
|
||||
<class>Build_eNB</class>
|
||||
<desc>Build gNB (USRP)</desc>
|
||||
<node>caracal</node>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c --cmake-opt -DPHYSIM_CHECK_FILES="ThresholdsOffload.cmake"</Build_eNB_args>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c</Build_eNB_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100000">
|
||||
|
||||
396
ci-scripts/xml_files/ldpc_gpu_test.xml
Normal file
396
ci-scripts/xml_files/ldpc_gpu_test.xml
Normal file
@@ -0,0 +1,396 @@
|
||||
<!--
|
||||
|
||||
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
|
||||
|
||||
030105 040301 040502 040606 040601 040603 040608 040605 040646 040641 040643 040648 040645 040401 040201 030201
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>test-ldpc-gpu</htmlTabRef>
|
||||
<htmlTabName>Test-ldpc-GPU</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000002 000003 000004 000005 000006 000007 000008 000009 000010 000011 000012 000013 000014 000015 000016 000017 000018 000019 000020 000021
|
||||
000022 000023 000024 000025 000026 000027 000028 000029 000030 000031 000032 000033 000034 000035 000036 000037 000038 000039 000040 000041
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3872 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3872 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4224 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4224 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4576 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4576 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4928 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4928 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5280 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5280 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5632 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5632 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 6336 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 6336 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7040 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7040 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7744 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7744 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 8448 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 8448 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 1 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 1 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 100 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 100 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 193 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000027">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 193 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000028">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 500 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000029">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 500 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000030">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 561 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000031">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 561 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000032">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 600 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000033">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 600 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000034">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 641 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000035">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 641 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000036">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 2000 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000037">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 2000 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000038">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3000 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000039">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3000 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000040">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3840 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000041">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3840 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
</testCaseList>
|
||||
@@ -37,7 +37,7 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Deploy_Run_OC_PhySim</class>
|
||||
<class>Deploy_Run_PhySim</class>
|
||||
<desc>Deploy and run physical simulator on openshift</desc>
|
||||
<oc_release>physims-4g</oc_release>
|
||||
<node>avra</node>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Deploy_Run_OC_PhySim</class>
|
||||
<class>Deploy_Run_PhySim</class>
|
||||
<desc>Deploy and run physical simulator on openshift</desc>
|
||||
<oc_release>physims-5g</oc_release>
|
||||
<node>avra</node>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>physim-tab</htmlTabRef>
|
||||
<htmlTabName>PhySim</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
010201
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Build_Deploy_Docker_PhySim</class>
|
||||
<desc>Build and Deploy PhySim</desc>
|
||||
<node>localhost</node>
|
||||
<ctest-opt>-R 5g -E "nr_dlsim|nr_ulsim|ldpctest" -j32</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -1,46 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>physim-timed-tab</htmlTabRef>
|
||||
<htmlTabName>PhySim with timing check</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
010202
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010202">
|
||||
<class>Build_Deploy_Docker_PhySim</class>
|
||||
<desc>Build and Deploy PhySim with timing check</desc>
|
||||
<node>localhost</node>
|
||||
<ctest-opt>-R 5g -R "nr_dlsim|nr_ulsim|ldpctest" -E physim.5g.nr_dlsim.mcs.mimo.test9 -j1</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
230
ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml
Normal file
230
ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml
Normal file
@@ -0,0 +1,230 @@
|
||||
<!--
|
||||
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-t2-offload-dec</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload Decoder</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
010204
|
||||
010111 010112 010121 010122 010131 010132
|
||||
010211 010212 010221 010222 010231 010232
|
||||
010311 010312 010321 010322 010331 010332
|
||||
402010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="010204">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="402010">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010111">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010112">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010121">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010122">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010131">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010132">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010211">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010212">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010221">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010222">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010231">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010232">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>550</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010311">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010312">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010321">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>600</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010322">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>650</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010331">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>650</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010332">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>1100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
290
ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml
Normal file
290
ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml
Normal file
@@ -0,0 +1,290 @@
|
||||
<!--
|
||||
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-t2-offload-enc</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload Encoder</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
102040
|
||||
000111 000112 000121 000122 000131 000132
|
||||
000211 000212 000221 000222 000231 000232
|
||||
000311 000312 000321 000322 000331 000332
|
||||
000411 000412 000421 000422 000431 000432
|
||||
040201
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="102040">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040201">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000111">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>230</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000112">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000121">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000122">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000131">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000132">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000211">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000212">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000221">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000222">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000231">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000232">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000311">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000312">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000321">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000322">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000331">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000332">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000411">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000412">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000421">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 20, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000422">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 20, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000431">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 27, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000432">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 27, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
@@ -1,54 +0,0 @@
|
||||
<!--
|
||||
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-t2-offload-enc-dec</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
010204
|
||||
111111
|
||||
402010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="010204">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="402010">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Build_Deploy_Source_PhySim</class>
|
||||
<desc>Build and Deploy PhySim T2 Offload tests</desc>
|
||||
<node>caracal</node>
|
||||
<ctest-opt>-R 5g-offload -j1</ctest-opt>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
@@ -100,6 +100,7 @@ services:
|
||||
- SYS_NICE
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--rfsimulator.options chanmod
|
||||
--gNBs.[0].remote_s_address 0.0.0.0
|
||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.150
|
||||
--telnetsrv.shrmod ci
|
||||
@@ -110,7 +111,6 @@ services:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.150
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cu.sa.band78.106prb.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
|
||||
@@ -88,7 +88,7 @@ services:
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --rfsim --log_config.global_log_options level,nocolor,time --gNBs.[0].TIMERS.t300 1000
|
||||
USE_ADDITIONAL_OPTIONS: -E --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
|
||||
@@ -1,306 +0,0 @@
|
||||
services:
|
||||
mysql:
|
||||
container_name: "rfsim5g-mysql"
|
||||
image: mysql:8.0
|
||||
volumes:
|
||||
- ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
|
||||
- ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
- MYSQL_DATABASE=oai_db
|
||||
- MYSQL_USER=test
|
||||
- MYSQL_PASSWORD=test
|
||||
- MYSQL_ROOT_PASSWORD=linux
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 30
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.131
|
||||
oai-amf:
|
||||
container_name: "rfsim5g-oai-amf"
|
||||
image: oaisoftwarealliance/oai-amf:ci-tmp-pr-372-26c14bcd
|
||||
environment:
|
||||
- TZ=Europe/paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-amf/etc/config.yaml
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.132
|
||||
oai-smf:
|
||||
container_name: "rfsim5g-oai-smf"
|
||||
image: oaisoftwarealliance/oai-smf:v2.1.9
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-smf/etc/config.yaml
|
||||
depends_on:
|
||||
- oai-amf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.133
|
||||
oai-upf:
|
||||
container_name: "rfsim5g-oai-upf"
|
||||
image: oaisoftwarealliance/oai-upf:v2.1.9
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-upf/etc/config.yaml
|
||||
depends_on:
|
||||
- oai-smf
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
cap_drop:
|
||||
- ALL
|
||||
privileged: true
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.134
|
||||
interface_name: eth0
|
||||
traffic_net:
|
||||
ipv4_address: 192.168.72.134
|
||||
interface_name: eth1
|
||||
oai-ext-dn:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-ext-dn
|
||||
image: oaisoftwarealliance/trf-gen-cn5g:focal
|
||||
entrypoint: /bin/bash -c \
|
||||
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
|
||||
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
|
||||
depends_on:
|
||||
- oai-upf
|
||||
networks:
|
||||
traffic_net:
|
||||
ipv4_address: 192.168.72.135
|
||||
healthcheck:
|
||||
test: /bin/bash -c "ping -c 2 192.168.72.134"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cucp-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cucp-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.shrmod ci
|
||||
--telnetsrv.listenaddr 192.168.71.150
|
||||
--gNBs.[0].nr_cellid 0
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-amf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.150
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cucp.sa.e1-ho-n2.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cuup-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cuup-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.150
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.151
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.151
|
||||
--gNBs.[0].local_s_address 192.168.71.151
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.151
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cuup.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-cuup"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
|
||||
oai-du-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-du-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].nr_cellid 0
|
||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
|
||||
--telnetsrv.shrmod ci
|
||||
--rfsimulator.serveraddr 192.168.71.190
|
||||
--gNBs.[0].servingCellConfigCommon.[0].ra_ResponseWindow 5
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.171
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-nr-ue:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- NET_ADMIN # for interface bringup
|
||||
- NET_RAW # for ping
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim --rfsimulator.serveraddr server
|
||||
--band 78 -C 3619200000 -r 106 --numerology 1 --ssb 516
|
||||
--uicc0.imsi 208990100001100
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.190
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cucp-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cucp-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.shrmod ci
|
||||
--telnetsrv.listenaddr 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.181
|
||||
--gNBs.[0].local_s_address 192.168.71.180
|
||||
--gNBs.[0].remote_s_address 192.168.71.181
|
||||
--gNBs.[0].gNB_ID 0xb00
|
||||
--gNBs.[0].nr_cellid 1
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NG_AMF 192.168.71.180
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.180
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.180
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cucp.sa.e1-ho-n2.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cuup-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cuup-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.181
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.181
|
||||
--gNBs.[0].local_s_address 192.168.71.181
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.181
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cuup.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-cuup"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-du-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-du-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim
|
||||
--rfsimulator.serveraddr 192.168.71.190
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].gNB_DU_ID 1234
|
||||
--gNBs.[0].gNB_ID 0xb00
|
||||
--gNBs.[0].nr_cellid 1
|
||||
--gNBs.[0].servingCellConfigCommon.[0].physCellId 1
|
||||
--gNBs.[0].servingCellConfigCommon.[0].absoluteFrequencySSB 621312
|
||||
--gNBs.[0].servingCellConfigCommon.[0].dl_absoluteFrequencyPointA 620040
|
||||
--MACRLCs.[0].local_n_address 192.168.71.182
|
||||
--MACRLCs.[0].remote_n_address 192.168.71.180
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-cucp-1
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.182
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
driver: bridge
|
||||
name: rfsim5g-oai-public-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.71.128/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "rfsim5g-public"
|
||||
traffic_net:
|
||||
driver: bridge
|
||||
name: rfsim5g-oai-traffic-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.72.128/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "rfsim5g-traffic"
|
||||
@@ -1,90 +0,0 @@
|
||||
services:
|
||||
oai_cu:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-cu
|
||||
cap_drop:
|
||||
- ALL
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.listenport 9090 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cu.sa.f1.ho.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- ../../conf_files/neighbour-config-ho.conf:/opt/oai-gnb/etc/neighbour-config-ho.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#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
|
||||
|
||||
oai_du0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du0
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=30AD30F
|
||||
--telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.51prb.usrpb210.ho-pci0.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#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
|
||||
|
||||
oai_du1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du1
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=31F8010
|
||||
--telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.51prb.usrpb210.ho-pci1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#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
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
container_name: oai-gnb
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --thread-pool 7,8,9,10,11,12
|
||||
USE_ADDITIONAL_OPTIONS: --sa --thread-pool 7,8,9,10,11,12
|
||||
devices:
|
||||
- /dev/vfio:/dev/vfio/
|
||||
volumes:
|
||||
|
||||
@@ -23,7 +23,7 @@ services:
|
||||
- ../../../cmake_targets/share:/opt/cuBB/share
|
||||
userns_mode: host
|
||||
ipc: "shareable"
|
||||
image: cubb-build:25-2-srs
|
||||
image: cubb-build:25-2
|
||||
environment:
|
||||
- cuBB_SDK=/opt/nvidia/cuBB
|
||||
command: bash -c "sudo rm -rf /tmp/phy.log && sudo chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
|
||||
|
||||
@@ -82,6 +82,8 @@ Options:
|
||||
Makes the NR softmodem
|
||||
--RU
|
||||
Makes the OAI RRU
|
||||
--nrRU
|
||||
Makes the OAI nrRRU
|
||||
--UE
|
||||
Makes the UE specific parts (usim, nvram) from the given configuration file
|
||||
--nrUE
|
||||
@@ -227,6 +229,11 @@ function main() {
|
||||
TARGET_LIST="$TARGET_LIST oairu"
|
||||
echo_info "Will compile RRU"
|
||||
shift;;
|
||||
--nrRU)
|
||||
nrRU=1
|
||||
TARGET_LIST="$TARGET_LIST oainr_ru"
|
||||
echo_info "Will compile nrRRU"
|
||||
shift;;
|
||||
--UE)
|
||||
UE=1
|
||||
TARGET_LIST="$TARGET_LIST lte-uesoftmodem conf2uedata usim nvram"
|
||||
@@ -456,7 +463,7 @@ function main() {
|
||||
if [[ $TARGET_LIST != "" ]] && [[ -f $OPENAIR_DIR/CMakeLists.txt ]]; then
|
||||
# add some default libraries that should always be built
|
||||
# for eNB, gNB, UEs, simulators
|
||||
if [[ $gNB == 1 || $eNB == 1 || $UE == 1 || $nrUE == 1 || $SIMUS_PHY == 1 || $RU == 1 ]]; then
|
||||
if [[ $gNB == 1 || $eNB == 1 || $UE == 1 || $nrUE == 1 || $SIMUS_PHY == 1 || $RU == 1 || $nrRU == 1 ]]; then
|
||||
TARGET_LIST="$TARGET_LIST params_libconfig coding rfsimulator dfts params_yaml vrtsim rf_emulator"
|
||||
fi
|
||||
|
||||
|
||||
@@ -55,53 +55,4 @@ typedef enum {
|
||||
|
||||
typedef enum { NON_DYNAMIC, DYNAMIC } fiveQI_t;
|
||||
|
||||
/* QoS Priority Level */
|
||||
typedef enum {
|
||||
QOS_PRIORITY_SPARE = 0,
|
||||
QOS_PRIORITY_HIGHEST,
|
||||
QOS_PRIORITY_2,
|
||||
QOS_PRIORITY_3,
|
||||
QOS_PRIORITY_4,
|
||||
QOS_PRIORITY_5,
|
||||
QOS_PRIORITY_6,
|
||||
QOS_PRIORITY_7,
|
||||
QOS_PRIORITY_8,
|
||||
QOS_PRIORITY_9,
|
||||
QOS_PRIORITY_10,
|
||||
QOS_PRIORITY_11,
|
||||
QOS_PRIORITY_12,
|
||||
QOS_PRIORITY_13,
|
||||
QOS_PRIORITY_LOWEST,
|
||||
QOS_NO_PRIORITY
|
||||
} qos_priority_t;
|
||||
|
||||
/* Pre-emption Capability */
|
||||
typedef enum {
|
||||
PEC_SHALL_NOT_TRIGGER_PREEMPTION = 0,
|
||||
PEC_MAY_TRIGGER_PREEMPTION,
|
||||
PEC_MAX,
|
||||
} qos_pec_t;
|
||||
|
||||
/* Pre-emption Vulnerability */
|
||||
typedef enum {
|
||||
PEV_NOT_PREEMPTABLE = 0,
|
||||
PEV_PREEMPTABLE = 1,
|
||||
PEV_MAX,
|
||||
} qos_pev_t;
|
||||
|
||||
/* Allocation Retention Priority */
|
||||
typedef struct {
|
||||
qos_priority_t priority_level;
|
||||
qos_pec_t pre_emp_capability;
|
||||
qos_pev_t pre_emp_vulnerability;
|
||||
} qos_arp_t;
|
||||
|
||||
typedef struct pdusession_level_qos_parameter_s {
|
||||
uint8_t qfi;
|
||||
uint64_t fiveQI;
|
||||
uint64_t qos_priority;
|
||||
fiveQI_t fiveQI_type;
|
||||
qos_arp_t arp;
|
||||
} pdusession_level_qos_parameter_t;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -300,16 +300,12 @@ configmodule_interface_t *load_configmodule(int argc,
|
||||
cfgmode = strdup(CONFIG_LIBCONFIGFILE);
|
||||
}
|
||||
}
|
||||
static configmodule_interface_t *cfgptr = NULL;
|
||||
static configmodule_interface_t *cfgptr;
|
||||
if (cfgptr)
|
||||
fprintf(stderr, "ERROR: Call load_configmodule more than one time\n");
|
||||
|
||||
// The macros are not thread safe print_params and similar
|
||||
cfgptr = calloc(sizeof(configmodule_interface_t), 1);
|
||||
if (!cfgptr) {
|
||||
fprintf(stderr, "ERROR: cannot allocate a memory for configuration\n");
|
||||
return NULL;
|
||||
}
|
||||
/* argv_info is used to memorize command line options which have been recognized */
|
||||
/* and to detect unrecognized command line options which might have been specified */
|
||||
cfgptr->argv_info = calloc(sizeof(int32_t), argc+10);
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "common/config/config_paramdesc.h"
|
||||
#include "common/utils/T/T.h"
|
||||
#define CONFIG_MAX_OOPT_PARAMS 10 // maximum number of parameters in the -O option (-O <cfgmode>:P1:P2...
|
||||
#define CONFIG_MAX_ALLOCATEDPTRS 32768 // maximum number of parameters that can be dynamicaly allocated in the config module
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ else()
|
||||
endif()
|
||||
|
||||
add_library(params_yaml_static config_yaml.cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
if (ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
add_library(params_yaml MODULE config_yaml.cpp)
|
||||
target_link_libraries(params_yaml PUBLIC yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
set_target_properties(params_yaml PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
add_executable(test_yaml_config test_yaml_config.cpp)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest CONFIG_LIB)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest)
|
||||
add_dependencies(tests test_yaml_config)
|
||||
add_test(NAME test_yaml_config
|
||||
COMMAND ./test_yaml_config)
|
||||
|
||||
@@ -97,7 +97,4 @@
|
||||
#define UNUSED_VARIABLE(vARIABLE) (void)(vARIABLE)
|
||||
#define NUM_PRACH_RX_FOR_NOISE_ESTIMATE 100
|
||||
|
||||
// SDAP
|
||||
#define MAX_QOS_FLOWS 64
|
||||
|
||||
#endif /* __PLATFORM_CONSTANTS_H__ */
|
||||
|
||||
@@ -4,12 +4,10 @@ target_link_libraries(log_headers INTERFACE T_headers)
|
||||
|
||||
set(log_sources log.c)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
set(log_sources ${log_sources} lttng-tp.c)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
add_library(LOG ${log_sources})
|
||||
target_include_directories(LOG PUBLIC .)
|
||||
target_link_libraries(LOG PRIVATE CONFIG_LIB)
|
||||
target_link_libraries(LOG PUBLIC log_headers)
|
||||
if (ENABLE_LTTNG)
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
#include <common/utils/utils.h>
|
||||
#include "common/utils/T/T.h"
|
||||
#if ENABLE_LTTNG
|
||||
#include "lttng-log.h"
|
||||
#endif
|
||||
|
||||
@@ -47,7 +47,7 @@ add_custom_target(generate_T DEPENDS T_IDs.h check_vcd)
|
||||
# even if T is off, we need the headers as many targets depend on it
|
||||
# for this, create an INTERFACE (header-only) library T_headers. To ensure the
|
||||
# headers have really been created, we make this headers library explicitly
|
||||
# depend on the generate_T target.
|
||||
# depend on the generated headers.
|
||||
add_library(T_headers INTERFACE)
|
||||
add_dependencies(T_headers T_IDs.h generate_T)
|
||||
target_include_directories(T_headers INTERFACE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -143,10 +143,6 @@ ID = GNB_PHY_UL_TIME_CHANNEL_ESTIMATE
|
||||
DESC = gNodeB channel estimation in the time domain
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,chest_t
|
||||
ID = GNB_PHY_UL_SNR_ESTIMATE
|
||||
DESC = gNodeB SNR estimation based on SRS
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,snr
|
||||
ID = GNB_PHY_PRACH_INPUT_SIGNAL
|
||||
DESC = gNodeB input data in the time domain for slots with PRACH detection
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
|
||||
@@ -19,7 +19,6 @@ typedef struct {
|
||||
widget *pucch_pusch_iq_plot;
|
||||
widget *ul_freq_estimate_ue_xy_plot;
|
||||
widget *ul_time_estimate_ue_xy_plot;
|
||||
widget *ul_snr_estimate_ue_xy_plot;
|
||||
widget *current_ue_label;
|
||||
widget *current_ue_button;
|
||||
widget *prev_ue_button;
|
||||
@@ -27,7 +26,6 @@ typedef struct {
|
||||
logger *pucch_pusch_iq_logger;
|
||||
logger *ul_freq_estimate_ue_logger;
|
||||
logger *ul_time_estimate_ue_logger;
|
||||
logger *ul_snr_ue_logger;
|
||||
} gnb_gui;
|
||||
|
||||
typedef struct {
|
||||
@@ -100,9 +98,6 @@ static void set_current_ue(gui *g, gnb_data *e, int ue)
|
||||
|
||||
sprintf(s, "UL channel estimation in time domain [UE %d]", ue);
|
||||
xy_plot_set_title(g, e->e->ul_time_estimate_ue_xy_plot, s);
|
||||
|
||||
sprintf(s, "UL SNR per RB based on SRS [UE %d]", ue);
|
||||
xy_plot_set_title(g, e->e->ul_snr_estimate_ue_xy_plot, s);
|
||||
}
|
||||
|
||||
void reset_ue_ids(void)
|
||||
@@ -151,13 +146,12 @@ static void gnb_main_gui(gnb_gui *e, gui *g, event_handler *h, void *database, g
|
||||
logger *l;
|
||||
view *v;
|
||||
|
||||
main_window = new_toplevel_window(g, 1500, 460, "gNB tracer");
|
||||
main_window = new_toplevel_window(g, 1500, 230, "gNB tracer");
|
||||
top_container = new_container(g, VERTICAL);
|
||||
widget_add_child(g, main_window, top_container, -1);
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
|
||||
logo = new_image(g, openair_logo_png, openair_logo_png_len);
|
||||
|
||||
/* logo + prev/next UE buttons */
|
||||
@@ -212,21 +206,6 @@ static void gnb_main_gui(gnb_gui *e, gui *g, event_handler *h, void *database, g
|
||||
logger_add_view(l, v);
|
||||
e->ul_time_estimate_ue_logger = l;
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
|
||||
/* UL SNR based on SRS */
|
||||
w = new_xy_plot(g, 1280, 200, "", 190);
|
||||
e->ul_snr_estimate_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 273, -10, 65);
|
||||
l = new_framelog(h, database, "GNB_PHY_UL_SNR_ESTIMATE", "subframe", "snr");
|
||||
framelog_set_update_only_at_sf9(l, 0);
|
||||
framelog_set_type_buffer_db(l);
|
||||
v = new_view_xy(273, 10, g, w, new_color(g, "#0c0c72"), XY_LOOP_MODE);
|
||||
logger_add_view(l, v);
|
||||
e->ul_snr_ue_logger = l;
|
||||
|
||||
set_current_ue(g, ed, ed->ue);
|
||||
register_notifier(g, "click", e->current_ue_button, click, ed);
|
||||
register_notifier(g, "click", e->prev_ue_button, click, ed);
|
||||
@@ -272,7 +251,6 @@ int main(int n, char **v)
|
||||
on_off(database, "GNB_PHY_PUCCH_PUSCH_IQ", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_TIME_CHANNEL_ESTIMATE", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_SNR_ESTIMATE", is_on, 1);
|
||||
|
||||
gnb_data.ue = 0;
|
||||
gnb_data.e = ⪚
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
typedef enum {
|
||||
FRAMELOG_BUFFER,
|
||||
FRAMELOG_BUFFER_dB,
|
||||
} framelog_buffer_type_t;
|
||||
|
||||
struct framelog {
|
||||
struct logger common;
|
||||
void *database;
|
||||
@@ -27,7 +22,6 @@ struct framelog {
|
||||
int skip_current; /* internal data for the skip mechanism */
|
||||
int skip_on; /* internal data for the skip mechanism */
|
||||
int update_only_at_sf9;
|
||||
framelog_buffer_type_t type;
|
||||
};
|
||||
|
||||
static void _event(void *p, event e)
|
||||
@@ -58,10 +52,7 @@ static void _event(void *p, event e)
|
||||
}
|
||||
if (l->skip_on) return;
|
||||
|
||||
if (l->type == FRAMELOG_BUFFER)
|
||||
nsamples = bsize / (2 * sizeof(int16_t));
|
||||
else
|
||||
nsamples = bsize / sizeof(int16_t);
|
||||
nsamples = bsize / (2*sizeof(int16_t));
|
||||
|
||||
if (l->blength != nsamples * 10) {
|
||||
l->blength = nsamples * 10;
|
||||
@@ -80,15 +71,10 @@ static void _event(void *p, event e)
|
||||
}
|
||||
|
||||
/* TODO: compute the LOGs in the plotter (too much useless computations) */
|
||||
if (l->type == FRAMELOG_BUFFER_dB) {
|
||||
for (i = 0; i < nsamples; i++)
|
||||
l->buffer[subframe * nsamples + i] = ((int16_t *)buffer)[i];
|
||||
} else {
|
||||
for (i = 0; i < nsamples; i++) {
|
||||
int I = ((int16_t *)buffer)[i * 2];
|
||||
int Q = ((int16_t *)buffer)[i * 2 + 1];
|
||||
l->buffer[subframe * nsamples + i] = 10 * log10(1.0 + (float)(I * I + Q * Q));
|
||||
}
|
||||
for (i = 0; i < nsamples; i++) {
|
||||
int I = ((int16_t *)buffer)[i*2];
|
||||
int Q = ((int16_t *)buffer)[i*2+1];
|
||||
l->buffer[subframe * nsamples + i] = 10*log10(1.0+(float)(I*I+Q*Q));
|
||||
}
|
||||
|
||||
if (l->update_only_at_sf9 == 0 || subframe == 9)
|
||||
@@ -146,8 +132,6 @@ logger *new_framelog(event_handler *h, void *database,
|
||||
abort();
|
||||
}
|
||||
|
||||
ret->type = FRAMELOG_BUFFER;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -169,9 +153,3 @@ void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9)
|
||||
struct framelog *l = _this;
|
||||
l->update_only_at_sf9 = update_only_at_sf9;
|
||||
}
|
||||
|
||||
void framelog_set_type_buffer_db(logger *_this)
|
||||
{
|
||||
struct framelog *l = _this;
|
||||
l->type = FRAMELOG_BUFFER_dB;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ logger *new_iqdotlog(void *event_handler, void *database,
|
||||
|
||||
void framelog_set_skip(logger *_this, int skip_delay);
|
||||
void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9);
|
||||
void framelog_set_type_buffer_db(logger *_this);
|
||||
|
||||
void textlog_dump_buffer(logger *_this, int dump_buffer);
|
||||
void textlog_raw_time(logger *_this, int raw_time);
|
||||
|
||||
@@ -25,6 +25,52 @@
|
||||
#include "common/utils/mem/oai_memory.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
|
||||
/****************************************************************************
|
||||
** **
|
||||
** Name: memory_get_path() **
|
||||
** **
|
||||
** Description: Gets the absolute path of the file where non-volatile **
|
||||
** data are located **
|
||||
** **
|
||||
** Inputs: dirname: The directory where data file is located **
|
||||
** filename: The name of the data file **
|
||||
** Others: None **
|
||||
** **
|
||||
** Outputs: None **
|
||||
** Return: The absolute path of the non-volatile data **
|
||||
** file. The returned value is a dynamically **
|
||||
** allocated octet string that needs to be **
|
||||
** freed after usage. **
|
||||
** Others: None **
|
||||
** **
|
||||
***************************************************************************/
|
||||
char* memory_get_path(const char* dirname, const char* filename)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
const char* path = getenv(dirname);
|
||||
|
||||
if (path == NULL) {
|
||||
path = getenv(DEFAULT_NAS_PATH);
|
||||
}
|
||||
|
||||
if (path == NULL) {
|
||||
path = ".";
|
||||
}
|
||||
|
||||
/* Append non-volatile data file name */
|
||||
size_t size = strlen(path) + strlen(filename) + 1;
|
||||
char* data_filename = (char*)malloc(size + 1);
|
||||
|
||||
if (data_filename != NULL) {
|
||||
if (size != sprintf(data_filename, "%s/%s", path, filename)) {
|
||||
free(data_filename);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return data_filename;
|
||||
}
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
|
||||
@@ -35,6 +35,8 @@ typedef unsigned char uint8_t;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
char* memory_get_path(const char* dirname, const char* filename);
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid);
|
||||
|
||||
int memory_read(const char* datafile, void* data, size_t size);
|
||||
|
||||
@@ -175,17 +175,6 @@ typedef struct {
|
||||
uint32_t step;
|
||||
} NR_timer_t;
|
||||
|
||||
typedef struct val_init {
|
||||
int val;
|
||||
bool init;
|
||||
} val_init_t;
|
||||
|
||||
typedef struct meas_s {
|
||||
uint16_t Nid_cell;
|
||||
val_init_t ss_rsrp_dBm;
|
||||
val_init_t csi_rsrp_dBm;
|
||||
} meas_t;
|
||||
|
||||
/**
|
||||
* @brief To start a timer
|
||||
* @param timer Timer to be started
|
||||
|
||||
@@ -44,7 +44,7 @@ add_library(telnetsrv_enb MODULE
|
||||
telnetsrv_enb_phycmd.c
|
||||
)
|
||||
add_dependencies(telnetsrv telnetsrv_enb)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs log_headers)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
message(STATUS "No specific telnet functions for gnb")
|
||||
|
||||
|
||||
@@ -375,32 +375,32 @@ char *telnet_getvarvalue(telnetshell_vardef_t *var, int varindex)
|
||||
char *val;
|
||||
switch (var[varindex].vartype) {
|
||||
case TELNET_VARTYPE_INT32:
|
||||
val = calloc_or_fail(1, 64);
|
||||
val = malloc(64);
|
||||
snprintf(val, 64, "%i", *(int32_t *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT64:
|
||||
val = calloc_or_fail(1, 128);
|
||||
val = malloc(128);
|
||||
snprintf(val, 128, "%lli", (long long)*(int64_t *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT16:
|
||||
val = calloc_or_fail(1, 16);
|
||||
val = malloc(16);
|
||||
snprintf(val, 16, "%hi", *(short *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT8:
|
||||
val = calloc_or_fail(1, 16);
|
||||
val = malloc(16);
|
||||
snprintf(val, 16, "%i", (int)(*(int8_t *)(var[varindex].varvalptr)));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_UINT:
|
||||
val = calloc_or_fail(1, 64);
|
||||
val = malloc(64);
|
||||
snprintf(val, 64, "%u", *(unsigned int *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_DOUBLE:
|
||||
val = calloc_or_fail(1, 32);
|
||||
val = malloc(32);
|
||||
snprintf(val, 32, "%g\n", *(double *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
@@ -409,7 +409,7 @@ char *telnet_getvarvalue(telnetshell_vardef_t *var, int varindex)
|
||||
break;
|
||||
|
||||
default:
|
||||
val = calloc_or_fail(1, 64);
|
||||
val = malloc(64);
|
||||
snprintf(val, 64, "ERR:var %i unknown type", varindex);
|
||||
break;
|
||||
}
|
||||
@@ -927,7 +927,7 @@ int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmdde
|
||||
for (int j = 0; cmd[j].cmdfunc != NULL; j++) {
|
||||
if (cmd[j].cmdflags & TELNETSRV_CMDFLAG_PUSHINTPOOLQ) {
|
||||
if (afifo == NULL) {
|
||||
afifo = calloc_or_fail(1, sizeof(notifiedFIFO_t));
|
||||
afifo = malloc(sizeof(notifiedFIFO_t));
|
||||
initNotifiedFIFO(afifo);
|
||||
}
|
||||
cmd[j].qptr = afifo;
|
||||
@@ -956,8 +956,8 @@ int telnetsrv_checkbuildver(char *mainexec_buildversion, char **shlib_buildvers
|
||||
}
|
||||
|
||||
int telnetsrv_getfarray(loader_shlibfunc_t **farray) {
|
||||
int const num_func_tln_srv = 3;
|
||||
*farray = calloc_or_fail(num_func_tln_srv, sizeof(loader_shlibfunc_t));
|
||||
int const num_func_tln_srv = 3;
|
||||
*farray = malloc(sizeof(loader_shlibfunc_t) * num_func_tln_srv);
|
||||
(*farray)[0].fname=TELNET_ADDCMD_FNAME;
|
||||
(*farray)[0].fptr=(int (*)(void) )add_telnetcmd;
|
||||
(*farray)[1].fname=TELNET_POLLCMDQ_FNAME;
|
||||
|
||||
@@ -86,7 +86,7 @@ int get_measurgroups(telnet_measurgroupdef_t **measurgroups) {
|
||||
|
||||
void measurcmd_display_phycpu(telnet_printfunc_t prnt) {
|
||||
PHY_VARS_NR_UE *UE = PHY_vars_UE_g[0][0];
|
||||
telnet_cpumeasurdef_t cpumeasur[MAX_CPU_STAT_TYPE] = {};
|
||||
telnet_cpumeasurdef_t cpumeasur[MAX_CPU_STAT_TYPE];
|
||||
for (int i = 0; i < MAX_CPU_STAT_TYPE; i++) {
|
||||
sprintf(cpumeasur[i].statname, "%s", UE->phy_cpu_stats.cpu_time_stats[i].meas_name);
|
||||
cpumeasur[i].astatptr = &UE->phy_cpu_stats.cpu_time_stats[i];
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#include "openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h"
|
||||
#include "openair2/LAYER2/nr_rlc/nr_rlc_entity_am.h"
|
||||
#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h"
|
||||
#include "openair2/RRC/NR/rrc_gNB_mobility.h"
|
||||
|
||||
#define TELNETSERVERCODE
|
||||
#include "telnetsrv.h"
|
||||
@@ -197,53 +196,6 @@ int rrc_gNB_trigger_f1_ho(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern void nr_HO_N2_trigger_telnet(gNB_RRC_INST *rrc, uint32_t neighbour_pci, uint32_t rrc_ue_id);
|
||||
|
||||
/** @brief Trigger N2 handover for UE
|
||||
* @param buf: Neighbour PCI, SCell PCI, RRC UE ID
|
||||
* @param debug: Debug flag
|
||||
* @param prnt: Print function
|
||||
* @return 0 on success, -1 on failure */
|
||||
int rrc_gNB_trigger_n2_ho(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
{
|
||||
if (!RC.nrrrc)
|
||||
ERROR_MSG_RET("no RRC present, cannot list counts\n");
|
||||
|
||||
if (!buf) {
|
||||
ERROR_MSG_RET("Please provide neighbour cell id and ue id\n");
|
||||
} else {
|
||||
// Parse neighbour cell PCI
|
||||
char *token = strtok(buf, ",");
|
||||
if (!token) {
|
||||
ERROR_MSG_RET("Invalid input. Expected format: Neighbour PCI, ueId\n");
|
||||
}
|
||||
uint32_t neighbour_pci = strtol(token, NULL, 10);
|
||||
|
||||
// Parse ueId
|
||||
token = strtok(NULL, ",");
|
||||
if (!token) {
|
||||
ERROR_MSG_RET("Missing UE ID\n");
|
||||
}
|
||||
uint32_t ueId = strtol(token, NULL, 10);
|
||||
|
||||
// Retrieve UE context
|
||||
rrc_gNB_ue_context_t *ue_p = rrc_gNB_get_ue_context(RC.nrrrc[0], ueId);
|
||||
if (!ue_p) {
|
||||
ERROR_MSG_RET("UE with id %u not found\n", ueId);
|
||||
}
|
||||
gNB_RRC_UE_t *UE = &ue_p->ue_context;
|
||||
|
||||
// Trigger N2 handover
|
||||
nr_HO_N2_trigger_telnet(RC.nrrrc[0], neighbour_pci, UE->rrc_ue_id);
|
||||
|
||||
// Print success message
|
||||
prnt("RRC N2 handover triggered for UE %u with neighbour cell id %u\n",
|
||||
ueId,
|
||||
neighbour_pci);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int force_ul_failure(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
{
|
||||
if (!RC.nrmac)
|
||||
@@ -293,7 +245,6 @@ static telnetshell_cmddef_t cicmds[] = {
|
||||
{"trigger_f1_ho", "[rrc_ue_id(int,opt)]", rrc_gNB_trigger_f1_ho},
|
||||
{"fetch_du_by_ue_id", "[rrc_ue_id(int,opt)]", fetch_du_by_ue_id},
|
||||
{"get_current_bwp", "[rnti(hex,opt)]", get_current_bwp},
|
||||
{"trigger_n2_ho", "[neighbour_pci(uint32_t),ueId(uint32_t)]", rrc_gNB_trigger_n2_ho},
|
||||
{"", "", NULL},
|
||||
};
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ void measurcmd_display_rlcstats(telnet_printfunc_t prnt) {
|
||||
UE_info_t *UE_info = &(RC.mac[eNB_id]->UE_info);
|
||||
telnet_ltemeasurdef_t statsptr[]=LTE_RLCMEASURE;
|
||||
int num_rlcmeasure = sizeof(statsptr)/sizeof(telnet_ltemeasurdef_t );
|
||||
unsigned int *rlcstats = calloc_or_fail(num_rlcmeasure,sizeof(unsigned int));
|
||||
unsigned int *rlcstats = malloc(num_rlcmeasure*sizeof(unsigned int));
|
||||
eNB_MAC_INST *eNB = RC.mac[eNB_id];
|
||||
|
||||
for(int i=0; i <num_rlcmeasure ; i++) {
|
||||
|
||||
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
while ( 1 ) {
|
||||
if ( read(fd,&doneRequest, sizeof(doneRequest)) == sizeof(doneRequest)) {
|
||||
printf("%lu" SEP "%llu" SEP "%llu" SEP "%llu" "\n",
|
||||
printf("%lu" SEP "%lu" SEP "%lu" SEP "%lu" "\n",
|
||||
doneRequest.key,
|
||||
(doneRequest.startProcessingTime-doneRequest.creationTime)/cpuCyclesMicroSec,
|
||||
(doneRequest.endProcessingTime-doneRequest.startProcessingTime)/cpuCyclesMicroSec,
|
||||
|
||||
@@ -7,7 +7,7 @@ add_library(time_management_core OBJECT
|
||||
time_client.c)
|
||||
|
||||
target_link_libraries(time_management PUBLIC time_management_core)
|
||||
target_link_libraries(time_management_core PRIVATE log_headers)
|
||||
target_link_libraries(time_management_core PRIVATE ${T_LIB})
|
||||
|
||||
if(ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
|
||||
@@ -66,8 +66,6 @@ The UEs that have been tested and confirmed working with Aerial are the followin
|
||||
To set up the L1 and install the components manually refer to this [instructions page](https://docs.nvidia.com/aerial/cuda-accelerated-ran/index.html).
|
||||
|
||||
**Note**:
|
||||
- As of wk36, the L1 must be compiled with the following CMake flag: `-DSCF_FAPI_10_04_SRS=ON` , this is due to the usage
|
||||
of the FAPI 10.04 version of the SRS PDU, and RX_Beamforming PDU.
|
||||
- To configure the Gigabyte server please refer to these [instructions](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/2025.w13/doc/Aerial_FAPI_Split_Tutorial.md)
|
||||
- The last release to support the Gigabyte server is **Aerial CUDA-Accelerated RAN 24-1**.
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ PROJECT_BRIEF = "Full experimental OpenSource LTE and NR implementation
|
||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/images/oai_logo.png
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/oai_logo.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[[_TOC_]]
|
||||
|
||||
## 1. Introduction
|
||||
# 1. Introduction
|
||||
|
||||
E1 is the interface that lies between the nodes CU Control Plane (CUCP) and CU User Plane (CUUP). Once the nodes are configured, all user plane traffic flows through CUUP.
|
||||
|
||||
@@ -77,11 +77,11 @@ sequenceDiagram
|
||||
```
|
||||
More details about the E1AP procedures in OAI are available in this document: [E1 Procedures](./e1ap_procedures.md).
|
||||
|
||||
## 2. Running the E1 Split
|
||||
# 2. Running the E1 Split
|
||||
|
||||
The setup is assuming that all modules are running on the same machine. The user can refer to the [F1 design document](./../F1AP/F1-design.md) for local deployment of the DU.
|
||||
|
||||
### 2.1 Configuration File
|
||||
## 2.1 Configuration File
|
||||
|
||||
The gNB is started based on the node type that is specified in the configuration file. The following parameters must be configured accordingly.
|
||||
|
||||
@@ -130,9 +130,9 @@ The CUUP uses the IP address specified in `gNBs.[0].local_s_address` for F1-U an
|
||||
|
||||
Alternatively, you can use the config files `ci-scripts/conf_files/gnb-cucp.sa.f1.conf` and `ci-scripts/conf_files/gnb-cuup.sa.f1.conf`.
|
||||
|
||||
### 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
## 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](../NR_SA_Tutorial_OAI_CN5G.md).
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md).
|
||||
|
||||
0. Open wireshark to capture the E1AP messages. You might set the capture filter
|
||||
to `sctp` to limit the number of captured packages.
|
||||
@@ -165,7 +165,7 @@ OAI UE:
|
||||
sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --rfsimulator.serveraddr 127.0.0.1
|
||||
```
|
||||
|
||||
## 3. Configuration file IP addresses of network functions
|
||||
# 3. Configuration file IP addresses of network functions
|
||||
|
||||
You can also run the nodes on different machines. If you do so please change the interface parameters accordingly and make sure the interfaces are reachable. Please refer to the following figure for an overview of all parameters.
|
||||
|
||||
@@ -173,7 +173,7 @@ You can also run the nodes on different machines. If you do so please change the
|
||||
|
||||
[PDF version](./images/e1-archi.pdf) | [LaTeX/TikZ version](./images/e1-archi.tex) if you want to modify to reflect your setup
|
||||
|
||||
## 4. Multiple CU-UP
|
||||
# 4. Multiple CU-UP
|
||||
|
||||
It is possible to connect multiple CU-UP to the same CU-CP. In the handler of
|
||||
the E1 Setup Request, the CU-CP verifies that the PLMN(s) (MCC, MNC) between
|
||||
@@ -195,6 +195,6 @@ that you have to restart the CU-CP if you want to connect the CU-UP again
|
||||
(e.g., after a crash). The CU-CP might also misfunction during attach if a
|
||||
CU-UP was connected, but disconnected in the meantime.
|
||||
|
||||
## 5. Abnormal conditions
|
||||
# 5. Abnormal conditions
|
||||
|
||||
* The CU-UP goes offline during normal operation (e.g. UEs have a valid PDU Session and are exchanging data on the UP): after restarting the CU-UP, the UP is not restored and the user will notice GTP errors. In this case the UEs have to reconnect.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="../images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
## Introduction
|
||||
# Introduction
|
||||
|
||||
The F1 interface is the functional split of 3GPP between the CU (centralized
|
||||
unit: PDCP, RRC, SDAP) and the DU (distributed unit: RLC, MAC, PHY). It is
|
||||
@@ -33,17 +33,17 @@ F1-U:
|
||||
|
||||
No equivalent for 4G exists.
|
||||
|
||||
### Control plane (F1-C)
|
||||
## Control plane (F1-C)
|
||||
|
||||
The interface F1-C is designed for the exchange of signalling messages between the
|
||||
Radio Network Layer (RNL) and the Transport Network Layer (TNL). It
|
||||
consists of F1 Application Protocol messages (F1-AP) exchanged over SCTP.
|
||||
|
||||
### Data plane (F1-U)
|
||||
## Data plane (F1-U)
|
||||
|
||||
F1-U uses GTP-U for information exchange.
|
||||
|
||||
## OAI Implementation Status
|
||||
# OAI Implementation Status
|
||||
|
||||
The implementation of F1AP messages is seamlessly integrated into OAI, supporting both Monolithic SA
|
||||
and CU/DU functional split modes. The F1 code is therefore always compiled with nr-softmodem.
|
||||
@@ -63,13 +63,13 @@ This is the current status:
|
||||
- Not supported:
|
||||
* NSA
|
||||
|
||||
### F1-C
|
||||
## F1-C
|
||||
|
||||
#### F1AP messages
|
||||
### F1AP messages
|
||||
|
||||
Refer to [FEATURE_SET.md](../FEATURE_SET.md#gnb-f1ap) to learn about the current F1AP implementation status.
|
||||
Refer to [FEATURE_SET.md](FEATURE_SET.md#gNB-F1AP) to learn about the current F1AP implementation status.
|
||||
|
||||
#### High-level F1-C code structure
|
||||
### High-level F1-C code structure
|
||||
|
||||
The F1 interface is used internally between CU (mostly RRC) and DU (mostly MAC)
|
||||
to exchange information. In DL, the CU sends messages as defined by the
|
||||
@@ -170,7 +170,7 @@ sequenceDiagram
|
||||
TASK_MAC_GNB->>+TASK_RRC_GNB: raw F1AP message (ITTI)
|
||||
```
|
||||
|
||||
### F1-U
|
||||
## F1-U
|
||||
|
||||
Current status:
|
||||
|
||||
@@ -178,7 +178,7 @@ Current status:
|
||||
* Each packet is acknowledged individually
|
||||
* Support of multiple DUs per CU
|
||||
|
||||
## How to run
|
||||
# How to run
|
||||
|
||||
As mentioned earlier, OAI uses F1 internally. It is always compiled in.
|
||||
To start CU/DU, you use `./nr-softmodem` with the appropriate configuration
|
||||
@@ -190,7 +190,7 @@ sudo cmake_targets/ran_build/build/nr-softmodem -O ci-scripts/conf_files/gnb-du.
|
||||
```
|
||||
|
||||
These files are tested in the CI, and are configured for use in docker,
|
||||
see [this `docker-compose` file](../../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
see [this `docker-compose` file](../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
|
||||
The rules to decide if a config triggers a start of a DU, CU, or monolithic
|
||||
gNB, are, in order:
|
||||
@@ -200,7 +200,7 @@ gNB, are, in order:
|
||||
(`tr_s_preference`), it is a CU.
|
||||
3. It is a (monolithic) gNB.
|
||||
|
||||
### F1 IP configuration for Local network deployment of F1
|
||||
## F1 IP configuration for Local network deployment of F1
|
||||
|
||||
The following paragraphs explain the IP configuration for F1 in the OAI config
|
||||
files on the example of a a local deployment. We assume that the CU will bind
|
||||
@@ -242,7 +242,7 @@ the options `MACRLCs.[0].local_n_address` and
|
||||
`MACRLCs.[0].local_n_address_f1u`, respectively. Note that this is not foreseen
|
||||
for the CU; in the case of the CU, please use separate CU-UP and CU-CP.
|
||||
|
||||
### Configuration of multiple DUs
|
||||
## Configuration of multiple DUs
|
||||
|
||||
Upon F1 Setup Request of a new DU, the CU cross-checks that
|
||||
|
||||
@@ -260,9 +260,9 @@ You have to of course make sure that the local interface of the DU
|
||||
Assuming you use RFsim, you should make the RFsimulator server side (typically
|
||||
the gNB) bind on different hosts (`rfsimulator.serverport`).
|
||||
|
||||
## Code documentation
|
||||
# Code documentation
|
||||
|
||||
### Common multi-threading architecture
|
||||
## Common multi-threading architecture
|
||||
|
||||
The CU and DU interfaces are based on ITTI threads (see `common/utils/ocp_itti/itti.md`)
|
||||
adopted by all OAI upper layers to run isolated threads dedicated to one feature.
|
||||
@@ -301,7 +301,7 @@ All GTP-U tunnels are managed in a Linux Thread, that have partially ITTI design
|
||||
3. incoming packets are sent to the tunnel creator using a C callback (the callback function is given in tunnel creation order). The callback should not block
|
||||
|
||||
|
||||
### F1-C messages towards the CU
|
||||
## F1-C messages towards the CU
|
||||
|
||||
The CU thread starts when the CU starts. It opens listening socket on the
|
||||
configuration-specified IP/port by sending the appropriate message to
|
||||
@@ -332,7 +332,7 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
| UE Context Release Request | `F1AP_UE_CONTEXT_RELEASE_REQ` | `rrc_CU_process_ue_context_release_request()` | RRC will trigger UE release |
|
||||
| UE Context Release Complete | `F1AP_UE_CONTEXT_RELEASE_COMPLETE` | `rrc_CU_process_ue_context_release_complete()` | frees UE Context, signals to NGAP |
|
||||
|
||||
### F1-C Messages towards the DU
|
||||
## F1-C Messages towards the DU
|
||||
|
||||
The task "gNB app", after reading the configuration file, sends a message
|
||||
`F1AP_DU_REGISTER_REQ` to the DU task. This message contains network
|
||||
@@ -371,9 +371,9 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
a reconfiguration has to be triggered if the CU receives a CellGroupConfig,
|
||||
originating at the DU. See also flag `expect_reconfiguration`.
|
||||
|
||||
### F1-U messages
|
||||
## F1-U messages
|
||||
|
||||
#### General
|
||||
### General
|
||||
|
||||
In the DU in UL, RLC checks in `deliver_sdu()` if we are operating in split
|
||||
mode, and either (direct) calls `pdcp_data_ind` (DRB) or (f1ap) sends a GTP
|
||||
@@ -390,7 +390,7 @@ In the DU in DL, assuming the GTP-U tunnel exists, GTP decapsulates the packet
|
||||
and calls the reception call back `nr_rlc_data_req()`, which enqueues the
|
||||
packet into the UE's RLC buffer.
|
||||
|
||||
### Tunnel Setup
|
||||
## Tunnel Setup
|
||||
|
||||
In GTP-U, TS 29.281 specifies a optional header (NR RAN Container). This
|
||||
extension header may be transmitted in a G-PDU over the X2-U, Xn-U and F1-U user
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user