Compare commits

..

1 Commits

Author SHA1 Message Date
Nick Hedberg
4509ee7201 Add throughput plotting 2024-07-24 00:57:00 -07:00
584 changed files with 22826 additions and 10124 deletions

View File

@@ -84,6 +84,7 @@ set (OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
set (OPENAIR_CMAKE ${OPENAIR_DIR}/cmake_targets)
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
project (OpenAirInterface)
@@ -253,6 +254,12 @@ if(GIT_FOUND)
)
endif()
# Below is a hard-coded info
set (FIRMWARE_VERSION "No svn information")
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
add_definitions("-DPACKAGE_VERSION=\"Branch: ${GIT_BRANCH} Abrev. Hash: ${GIT_COMMIT_HASH} Date: ${GIT_COMMIT_DATE}\"")
add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
# Debug related options
#########################################
add_boolean_option(DEBUG_ASN1 False "Enable ASN1 debug logs" OFF)
@@ -501,6 +508,9 @@ include_directories ("${OPENAIR_DIR}/radio/COMMON")
# ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE" ON)
add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE" ON)
add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE" ON)
@@ -537,8 +547,16 @@ add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)"
add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the LTE RLC mode to AM for the default bearer, otherwise it is UM." ON)
# add the binary tree to the search path for include files
# We will find common/oai_version.h after generation in target directory
include_directories(${CMAKE_CURRENT_BINARY_DIR})
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
# the internal rule is to use generic names such as defs.h
# but to make it uniq name as adding the relative path in the include directtive
# example: #include "RRC/LTE/rrc_defs.h"
#find_path (include_dirs_all *.h ${OPENAIR_DIR})
#find_path (include_dirs_all *.h PATHS /usr/include NO_CMAKE_PATH)
#include_directories("${include_dirs_all}")
# Legacy exact order
@@ -999,7 +1017,6 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/refsig.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
)
@@ -1025,6 +1042,7 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
@@ -1137,10 +1155,6 @@ add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
add_library(PHY_NR ${PHY_NR_SRC})
target_link_libraries(PHY_NR nr_phy_common nr_common)
add_library(PHY_NR_NO_AVX_256 ${PHY_NR_SRC})
target_link_libraries(PHY_NR_NO_AVX_256 nr_phy_common nr_common)
target_compile_definitions(PHY_NR_NO_AVX_256 PUBLIC USE_128BIT)
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs nr_phy_common nr_common)
@@ -1469,6 +1483,10 @@ add_library(L2_UE_LTE_NR
)
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
@@ -1867,6 +1885,13 @@ set (SIMUSRC
add_library(SIMU STATIC ${SIMUSRC} )
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
add_library(SIMU_ETH STATIC
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
)
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
include_directories("${NFAPI_DIR}/nfapi/public_inc")
include_directories("${NFAPI_DIR}/common/public_inc")
include_directories("${NFAPI_DIR}/pnf/public_inc")
@@ -1915,6 +1940,8 @@ add_executable(lte-softmodem
${OPENAIR_DIR}/executables/create_tasks_mbms.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${PHY_INTERFACE_DIR}/queue_t.c
${OPENAIR_DIR}/common/utils/lte/ue_power.c
@@ -1927,7 +1954,7 @@ target_link_libraries(lte-softmodem PRIVATE
-Wl,--start-group
lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
${NAS_UE_LIB} ITTI SIMU shlib_loader
${NAS_UE_LIB} ITTI SIMU SIMU_ETH shlib_loader
-Wl,--end-group z dl)
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
@@ -1971,17 +1998,22 @@ add_executable(lte-uesoftmodem
${OPENAIR_DIR}/executables/create_tasks_ue.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${OPENAIR_DIR}/common/utils/lte/ue_power.c
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
)
if (NOT ${NOS1})
target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
endif()
target_link_libraries(lte-uesoftmodem PRIVATE
-Wl,--start-group
lte_rrc nr_rrc s1ap x2ap m2ap m3ap
SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
PHY_UE PHY_RU L2_UE L2_LTE SIMU NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
PHY_UE PHY_RU L2_UE L2_LTE SIMU SIMU_ETH NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
${NAS_UE_LIB} ITTI shlib_loader
-Wl,--end-group z dl)
@@ -2006,6 +2038,8 @@ add_executable(nr-softmodem
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR_DIR}/common/utils/lte/ue_power.c
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
${PHY_INTERFACE_DIR}/queue_t.c
@@ -2016,7 +2050,7 @@ target_link_libraries(nr-softmodem PRIVATE
-Wl,--start-group
UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECURITY
ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU SIMU_ETH
x2ap f1ap m2ap m3ap e1ap shlib_loader
-Wl,--end-group z dl)
@@ -2047,6 +2081,7 @@ target_link_libraries(nr-softmodem PRIVATE
add_executable(nr-cuup
executables/nr-cuup.c
executables/softmodem-common.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${NR_RRC_DIR}/rrc_gNB_UE_context.c
${OPENAIR2_DIR}/E1AP/e1ap_setup.c
${NR_PDCP_SRC}
@@ -2055,7 +2090,7 @@ add_executable(nr-cuup
target_link_libraries(nr-cuup PRIVATE
CONFIG_LIB ITTI SCTP_CLIENT
GTPV1U e1ap f1ap
GTPV1U e1ap f1ap SIMU_ETH
z sctp dl pthread shlib_loader ${T_LIB})
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
if(E2_AGENT)
@@ -2074,7 +2109,9 @@ add_executable(nr-uesoftmodem
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
)
@@ -2084,10 +2121,10 @@ target_link_libraries(nr-uesoftmodem PRIVATE
nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
PHY_COMMON PHY_NR_COMMON PHY_NR_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_LIB NFAPI_PNF_LIB
NFAPI_USER_LIB MISC_NFAPI_NR_LIB
ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU shlib_loader
ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH shlib_loader
-Wl,--end-group z dl)
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt nr_ue_phy_meas)
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
@@ -2184,13 +2221,14 @@ add_executable(nr_psbchsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${NR_UE_RRC_DIR}/rrc_nsa.c
${NFAPI_USER_DIR}/nfapi.c
${NFAPI_USER_DIR}/gnb_ind_vars.c
${PHY_INTERFACE_DIR}/queue_t.c
)
target_link_libraries(nr_psbchsim PRIVATE
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -lz -Wl,--end-group
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -lz -Wl,--end-group
m pthread ${T_LIB} ITTI dl shlib_loader
)
target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
@@ -2210,14 +2248,15 @@ add_executable(nr_dlsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${NR_UE_RRC_DIR}/rrc_nsa.c
${NFAPI_USER_DIR}/nfapi.c
${NFAPI_USER_DIR}/gnb_ind_vars.c
${PHY_INTERFACE_DIR}/queue_t.c
)
target_link_libraries(nr_dlsim PRIVATE
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
m pthread ${T_LIB} ITTI dl shlib_loader
)
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
@@ -2245,6 +2284,7 @@ add_executable(nr_ulsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${NR_UE_RRC_DIR}/rrc_nsa.c
${NFAPI_USER_DIR}/nfapi.c
${NFAPI_USER_DIR}/gnb_ind_vars.c
@@ -2256,8 +2296,8 @@ if (ENABLE_LDPC_T2)
endif()
target_link_libraries(nr_ulsim PRIVATE
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
m pthread ${T_LIB} ITTI dl shlib_loader
)
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
@@ -2304,7 +2344,7 @@ endforeach(myExe)
#ensure that the T header files are generated before targets depending on them
if (${T_TRACER})
foreach(i
#all "add_executable" definitions (except tests, updatefw)
#all "add_executable" definitions (except tests, rb_tool, updatefw)
lte-softmodem lte-uesoftmodem nr-softmodem
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
@@ -2319,7 +2359,7 @@ if (${T_TRACER})
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
ldpc_orig ldpc_optim ldpc_optim8seg ldpc_t2 ldpc_cl ldpc_cuda ldpc dfts config_internals nr_common)
if (TARGET ${i})
add_dependencies(${i} generate_T)
@@ -2327,6 +2367,86 @@ if (${T_TRACER})
endforeach(i)
endif (${T_TRACER})
##################################################
# Generated specific cases is not regular code
###############################################
################
# Kernel modules
###############
# Set compiler options for kernel modules
# we need to get out cmake to use the regular Linux Kernel process
# this is documented as https://www.kernel.org/doc/Documentation/kbuild/modules.txt
######################################
# retrieve the compiler options to send it to gccxml
get_directory_property(DirDefs COMPILE_DEFINITIONS )
foreach( d ${DirDefs} )
set(module_cc_opt "${module_cc_opt} -D${d}")
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
set(module_cc_opt "${module_cc_opt} -I${d}")
endforeach()
EXECUTE_PROCESS(COMMAND uname -r
OUTPUT_VARIABLE os_release
OUTPUT_STRIP_TRAILING_WHITESPACE)
SET(module_build_path /lib/modules/${os_release}/build)
function(make_driver name dir)
file(MAKE_DIRECTORY ${OPENAIR_BIN_DIR}/${name})
foreach(f IN ITEMS ${ARGN})
list(APPEND src_path_list ${dir}/${f})
string(REGEX REPLACE "c *$" "o" obj ${f})
set(objs "${objs} ${obj}")
endforeach()
CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
add_custom_command(OUTPUT ${name}.ko
COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
WORKING_DIRECTORY ${OPENAIR_BIN_DIR}/${name}
COMMENT "building ${module}.ko"
VERBATIM
SOURCES ${src_path_list}
)
add_custom_target(${name} DEPENDS ${name}.ko)
endfunction(make_driver name dir src)
# nashmesh module
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
# legacy Makefile was using NAS_NETLINK flag, but other drivers the hereafter flag
# so, this cmake use OAI_NW_DRIVER_USE_NETLINK everywhere
if (OAI_NW_DRIVER_USE_NETLINK)
list(APPEND nasmesh_src netlink.c)
endif()
make_driver(nasmesh ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
# user space tool for configuring MESH IP driver
################
add_executable(rb_tool
${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/RB_TOOL/rb_tool.c
)
target_include_directories(rb_tool PRIVATE ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/)
# ???
####################
list(APPEND oai_nw_drv_src device.c common.c ioctl.c classifier.c tool.c)
if(OAI_NW_DRIVER_USE_NETLINK)
list(APPEND oai_nw_drv_src netlink.c)
endif()
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
# ue_ip: purpose ???
###############
list(APPEND ue_ip_src device.c common.c)
if(OAI_NW_DRIVER_USE_NETLINK)
list(APPEND ue_ip_src netlink.c)
endif()
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
@@ -2352,19 +2472,6 @@ if(ENABLE_TESTS)
add_library(GTest::gtest ALIAS gtest)
add_library(GTest::gtest_main ALIAS gtest_main)
endif()
find_package(benchmark)
if (NOT benchmark_FOUND)
message(STATUS "benchmark package not found, will download benchmark automatically. To prevent that install google benchmark on your system (libbenchmark-dev)")
include(FetchContent)
set(BENCHMARK_ENABLE_TESTING OFF)
FetchContent_Declare(
benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG v1.9.0
)
FetchContent_MakeAvailable(benchmark)
endif()
endif()
add_subdirectory(common)

View File

@@ -4,6 +4,15 @@ For more details of the license, refer to [LICENSE](LICENSE) file in the same di
However, the source code also contains third party software that is acknowledged here for reference.
## Credits for LFDS user space source code located in folder openair2/UTILS/LFDS/ ##
See on [liblfds website](https://liblfds.org/) the license section.
<pre>
"There is no license. You are free to use this software in any way, for any purpose. Go forth and create wealth!
If however for legal reasons a licence is required, the license of your choice will be granted."
</pre>
## Credits for source code common/utils/collection/queue.h: ##
The Regents of the University of California: BSD 3-Clause Licence.

View File

@@ -585,29 +585,6 @@ pipeline {
}
}
}
stage ("SA-FHI72-CN5G") {
when { expression {do5Gtest} }
steps {
script {
triggerSlaveJob ('RAN-SA-FHI72-CN5G', 'SA-FHI72-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
saFHI72Status = finalizeSlaveJob('RAN-SA-FHI72-CN5G')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
failingStages += saFHI72Status
}
}
}
}
stage ("SA-OAIUE-CN5G") {
when { expression {do5Gtest} }
steps {

View File

@@ -18,14 +18,6 @@ up2:
IF: wwan0
MTU: 1500
up2-fhi72:
Host: up2
AttachScript: sudo /opt/mbim-fhi72/start_quectel_mbim.sh
DetachScript: sudo /opt/mbim-fhi72/stop_quectel_mbim.sh
NetworkScript: ip a show dev wwan0
IF: wwan0
MTU: 1500
sphex_quectel:
Host: sphex
InitScript: sudo stdbuf -oL /home/oaicicd/quectel-CM/quectel-CM -4 -s oai.ipv4 &> /tmp/quecel-cm.log &
@@ -66,18 +58,9 @@ adb_ue_2:
oc-cn5g:
Host: avra
Namespace: "oaicicd-core-for-ci-ran"
CNPath: "/opt/oai-cn5g-fed-develop-2024-april-00102"
NetworkScript: echo "inet 172.21.6.102"
RunIperf3Server: False
oc-cn5g-20897:
Host: cacofonix
Namespace: "oaicicd-core-for-fhi72"
CNPath: "/opt/oai-cn5g-fed-develop-2024-april-20897"
NetworkScript: echo "inet 172.21.6.105"
RunIperf3Server: False
matix-cn5g:
Host: matix
NetworkScript: docker exec prod-trf-gen ip a show dev eth0
@@ -116,10 +99,6 @@ amarisoft_ue:
Host: amariue
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-00102-2x2.cfg &
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
amarisoft_ue_fhi72:
Host: amariue
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_fhi72_asue_2x2_benetel550/fhi72-multi-20897-2x2.cfg &
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
amarisoft_ue_1:
Host: amariue
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
@@ -249,13 +228,13 @@ lte_oai_ue_carabe:
MTU: 1500
rfsim5g_gnb_nos1:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-gnb ip a show dev oaitun_enb1
CmdPrefix: docker exec rfsim5g-oai-gnb
IF: oaitun_enb1
rfsim5g_ue:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue
IF: oaitun_ue1
@@ -264,7 +243,7 @@ rfsim5g_ue:
MTU: 1500
rfsim5g_ue2:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue2 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue2
IF: oaitun_ue1
@@ -273,7 +252,7 @@ rfsim5g_ue2:
MTU: 1500
rfsim5g_ue3:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue3 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue3
IF: oaitun_ue1
@@ -282,7 +261,7 @@ rfsim5g_ue3:
MTU: 1500
rfsim5g_ue4:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue4 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue4
IF: oaitun_ue1
@@ -291,7 +270,7 @@ rfsim5g_ue4:
MTU: 1500
rfsim5g_ue5:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue5 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue5
IF: oaitun_ue1
@@ -300,7 +279,7 @@ rfsim5g_ue5:
MTU: 1500
rfsim5g_ue6:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue6 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue6
IF: oaitun_ue1
@@ -309,7 +288,7 @@ rfsim5g_ue6:
MTU: 1500
rfsim5g_ue7:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue7 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue7
IF: oaitun_ue1
@@ -318,7 +297,7 @@ rfsim5g_ue7:
MTU: 1500
rfsim5g_ue8:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue8 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue8
IF: oaitun_ue1
@@ -327,7 +306,7 @@ rfsim5g_ue8:
MTU: 1500
rfsim5g_ue9:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue9 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue9
IF: oaitun_ue1
@@ -336,7 +315,7 @@ rfsim5g_ue9:
MTU: 1500
rfsim5g_ue10:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-nr-ue10 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim5g-oai-nr-ue10
IF: oaitun_ue1
@@ -345,12 +324,12 @@ rfsim5g_ue10:
MTU: 1500
rfsim5g_ext_dn:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim5g-oai-ext-dn ip a show dev eth0
CmdPrefix: docker exec rfsim5g-oai-ext-dn
rfsim4g_ue:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim4g-oai-lte-ue0 ip a show dev oaitun_ue1
CmdPrefix: docker exec rfsim4g-oai-lte-ue0
IF: oaitun_ue1
@@ -359,30 +338,30 @@ rfsim4g_ue:
MTU: 1500
rfsim4g_ext_dn:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim4g-trf-gen ip a show dev eth0
CmdPrefix: docker exec rfsim4g-trf-gen
rfsim4g_enb_nos1:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim4g-oai-enb ip a show dev oaitun_enb1
CmdPrefix: docker exec rfsim4g-oai-enb
IF: oaitun_enb1
rfsim4g_enb_fembms:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim4g-oai-enb ip a show dev oaitun_enm1
CmdPrefix: docker exec rfsim4g-oai-enb
IF: oaitun_enm1
rfsim4g_ue_fembms:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec rfsim4g-oai-lte-ue0 ip a show dev oaitun_uem1
CmdPrefix: docker exec rfsim4g-oai-lte-ue0
IF: oaitun_uem1
l2sim5g_ue:
Host: "%%current_host%%"
Host: localhost
AttachScript: docker start l2sim-oai-nr-ue0
DetachScript: docker stop l2sim-oai-nr-ue0
NetworkScript: docker exec l2sim-oai-nr-ue0 ip a show dev oaitun_ue1
@@ -391,12 +370,12 @@ l2sim5g_ue:
MTU: 1500
l2sim5g_ext_dn:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec l2sim-oai-ext-dn ip a show dev eth0
CmdPrefix: docker exec l2sim-oai-ext-dn
l2sim4g_ue:
Host: "%%current_host%%"
Host: localhost
AttachScript: docker start l2sim4g-oai-lte-ue1
DetachScript: docker stop l2sim4g-oai-lte-ue1
NetworkScript: docker exec l2sim4g-oai-lte-ue1 ip a show dev oaitun_ue1
@@ -405,6 +384,6 @@ l2sim4g_ue:
MTU: 1500
l2sim4g_ext_dn:
Host: "%%current_host%%"
Host: localhost
NetworkScript: docker exec l2sim4g-trf-gen ip a show dev eth0
CmdPrefix: docker exec l2sim4g-trf-gen

View File

@@ -41,8 +41,9 @@ import cls_cmd
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
NAMESPACE = "oaicicd-ran"
OCUrl = "https://api.oai.cs.eurecom.fr:6443"
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr"
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
CI_OC_RAN_NAMESPACE = "oaicicd-ran"
CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran"
CN_IMAGES = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-upf", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm", "-c udr", ""]
@@ -51,8 +52,8 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter: no OC Credentials')
if OCRegistry.startswith("http") or OCRegistry.endswith("/"):
sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and not end on a slash /')
if OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and end on a slash /')
ret = cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {OCUrl}')
if ret.returncode != 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
@@ -67,9 +68,10 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
def OC_logout(cmd):
cmd.run(f'oc logout')
def OC_deploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path):
logging.debug(f'OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster: {ocNamespace}')
succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace)
def OC_deploy_CN(cmd, ocUserName, ocPassword):
logging.debug('OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster')
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
if not succeeded:
return False, CONST.OC_LOGIN_FAIL
cmd.run('helm uninstall oai5gcn --wait --timeout 60s')
@@ -82,9 +84,10 @@ def OC_deploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path):
OC_logout(cmd)
return True, report
def OC_undeploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path):
logging.debug(f'OC OAI CN5G: Terminating CN on Openshift Cluster: {ocNamespace}')
succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace)
def OC_undeploy_CN(cmd, ocUserName, ocPassword):
logging.debug('OC OAI CN5G: Terminating CN on Openshift Cluster')
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
if not succeeded:
return False, CONST.OC_LOGIN_FAIL
cmd.run(f'rm -Rf {path}/logs')
@@ -118,8 +121,8 @@ class Cluster:
self.OCUserName = ""
self.OCPassword = ""
self.OCProjectName = ""
self.OCUrl = OCUrl
self.OCRegistry = OCRegistry
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
self.ranRepository = ""
self.ranBranch = ""
self.ranCommitID = ""
@@ -248,7 +251,6 @@ class Cluster:
logging.debug(f'Pull OC image {self.imageToPull} to server {self.testSvrId}')
self.testCase_id = HTML.testCase_id
cmd = cls_cmd.getConnection(self.testSvrId)
logging.info(cmd.run('docker --version'))
succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, CI_OC_RAN_NAMESPACE)
if not succeeded:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
@@ -262,7 +264,7 @@ class Cluster:
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
return False
for image in self.imageToPull:
imagePrefix = f'{self.OCRegistry}/{CI_OC_RAN_NAMESPACE}'
imagePrefix = f'{self.OCRegistry}{CI_OC_RAN_NAMESPACE}'
imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}')
if ret.returncode != 0:
@@ -292,8 +294,8 @@ class Cluster:
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter: no OC Credentials')
if self.OCRegistry.startswith("http") or self.OCRegistry.endswith("/"):
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and not end on a slash /')
if self.OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and end on a slash /')
logging.debug(f'Building on cluster triggered from server: {lIpAddr}')
self.cmd = cls_cmd.RemoteCmd(lIpAddr)
@@ -301,7 +303,10 @@ class Cluster:
self.testCase_id = HTML.testCase_id
# Workaround for some servers, we need to erase completely the workspace
self.cmd.cd(lSourcePath)
if self.forcedWorkspaceCleanup:
self.cmd.run(f'rm -Rf {lSourcePath}')
cls_containerize.CreateWorkspace(self.cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# to reduce the amount of data send to OpenShift, we
# manually delete all generated files in the workspace
self.cmd.run(f'rm -rf {lSourcePath}/cmake_targets/ran_build');

View File

@@ -67,7 +67,7 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
sshSession.command(f'rm -rf {sourcePath}', '\$', 10)
sshSession.command('mkdir -p ' + sourcePath, '\$', 5)
(sshSession.cd(sourcePath) if isinstance(sshSession, cls_cmd.Cmd) else sshSession.command('cd ' + sourcePath, '\$', 5))
sshSession.command('cd ' + sourcePath, '\$', 5)
# Recent version of git (>2.20?) should handle missing .git extension # without problems
if ranTargetBranch == 'null':
ranTargetBranch = 'develop'
@@ -83,9 +83,7 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
sshSession.command(f'git checkout -f {ranCommitID}', '\$', 30)
if sshSession.getBefore().count(f'HEAD is now at {ranCommitID[:6]}') != 1:
sshSession.command('git log --oneline | head -n5', '\$', 5)
logging.error(f'problems during checkout, is at: {sshSession.getBefore()}')
self.exitStatus = 1
HTML.CreateHtmlTestRowQueue('N/A', 'KO', "could not checkout correctly")
logging.warning(f'problems during checkout, is at: {sshSession.getBefore()}')
else:
logging.debug('successful checkout')
# if the branch is not develop, then it is a merge request and we need to do
@@ -171,125 +169,6 @@ def AnalyzeBuildLogs(buildRoot, images, globalStatus):
collectInfo[image] = files
return collectInfo
def GetCredentials(instance):
server_id = instance.eNB_serverId[instance.eNB_instance]
if server_id == '0':
return (instance.eNBIPAddress, instance.eNBUserName, instance.eNBPassword, instance.eNBSourceCodePath)
elif server_id == '1':
return (instance.eNB1IPAddress, instance.eNB1UserName, instance.eNB1Password, instance.eNB1SourceCodePath)
elif server_id == '2':
return (instance.eNB2IPAddress, instance.eNB2UserName, instance.eNB2Password, instance.eNB2SourceCodePath)
else:
raise Exception ("Only supports maximum of 3 servers")
def GetContainerName(mySSH, svcName):
ret = mySSH.run(f"docker compose -f docker-compose.y*ml config --format json {svcName} | jq -r '.services.\"{svcName}\".container_name'")
containerName = ret.stdout
return containerName
def GetImageInfo(mySSH, containerName):
usedImage = ''
ret = mySSH.run('docker inspect --format="{{.Config.Image}}" ' + containerName)
usedImage = ret.stdout.strip()
logging.debug('Used image is: ' + usedImage)
if usedImage:
ret = mySSH.run('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage)
imageInfo = f"Used image is {usedImage}\n{ret.stdout}\n"
return imageInfo
else:
return f"Could not retrieve used image info for {containerName}!\n"
def GetContainerHealth(mySSH, containerName):
if containerName is None:
return 0, 0
unhealthyNb = 0
healthyNb = 0
time.sleep(5)
for _ in range(3):
if containerName != 'db_init':
result = mySSH.run(f'docker inspect --format="{{{{.State.Health.Status}}}}" {containerName}')
unhealthyNb = result.stdout.count('unhealthy')
healthyNb = result.stdout.count('healthy') - unhealthyNb
if healthyNb == 1:
break
else:
time.sleep(10)
else:
unhealthyNb = 0
healthyNb = 1
break
return healthyNb, unhealthyNb
def ReTagImages(mySSH,IMAGES,ranCommitID,ranBranch,ranAllowMerge,displayedNewTags):
mySSH.run('cp docker-compose.y*ml ci-docker-compose.yml', 5)
for image in IMAGES:
imageTag = ImageTagToUse(image, ranCommitID, ranBranch, ranAllowMerge)
if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup':
ret = mySSH.run(f'docker image inspect oai-ci/{imageTag}', reportNonZero=False, silent=False)
if ret.returncode != 0:
imageTag = imageTag.replace('oai-gnb', 'oai-gnb-asan')
imageTag = imageTag.replace('oai-nr-ue', 'oai-nr-ue-asan')
imageTag = imageTag.replace('oai-nr-cuup', 'oai-nr-cuup-asan')
if not displayedNewTags:
logging.debug(f'\u001B[1m Using sanitized version of {image} with {imageTag}\u001B[0m')
mySSH.run(f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{imageTag}@" ci-docker-compose.yml',silent=True)
def DeployServices(mySSH,svcName):
allServices = []
if svcName == '':
logging.warning('No service name given: starting all services in ci-docker-compose.yml!')
ret = mySSH.run(f'docker compose -f ci-docker-compose.yml config --services')
allServices = ret.stdout.splitlines()
deployStatus = mySSH.run(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', 50)
return deployStatus.returncode,allServices
def CopyinContainerLog(mySSH,lSourcePath,ymlPath,containerName,filename):
logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}'
os.system(f'mkdir -p {logPath}')
mySSH.run(f'docker logs {containerName} > {lSourcePath}/cmake_targets/log/{filename} 2>&1')
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', os.path.join(logPath, filename))
return copyin_res
def GetRunningServices(mySSH,yamlDir):
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services')
allServices = ret.stdout.splitlines()
services = []
for s in allServices:
# outputs the hash if the container is running
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
c = ret.stdout
logging.debug(f'running service {s} with container id {c}')
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
services.append((s, c))
logging.info(f'stopping services {[s for s, _ in services]}')
return services
def CheckLogs(self,mySSH,ymlPath,service_name,HTML,RAN):
logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}'
filename = f'{logPath}/{service_name}-{HTML.testCase_id}.log'
isFailed = 0
if (any(sub in service_name for sub in ['oai_ue','oai-nr-ue','lte_ue'])):
logging.debug(f'\u001B[1m Analyzing UE logfile {filename} \u001B[0m')
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(filename, HTML, RAN)
if (logStatus < 0):
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
isFailed = 1
else:
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
elif service_name == 'nv-cubb':
msg = 'Undeploy PNF/Nvidia CUBB'
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
elif (any(sub in service_name for sub in ['enb','rru','rcc','cu','du','gnb'])):
logging.debug(f'\u001B[1m Analyzing XnB logfile {filename}\u001B[0m')
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
if (logStatus < 0):
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
isFailed = 1
else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
else:
logging.info(f'Skipping to analyze log for service name {service_name}')
return isFailed
# pyshark livecapture launches 2 processes:
# * One using dumpcap -i lIfs -w - (ie redirecting the packets to STDOUT)
# * One using tshark -i - -w loFile (ie capturing from STDIN from previous process)
@@ -446,8 +325,14 @@ class Containerize():
if result is not None:
self.dockerfileprefix = '.ubuntu22.cross-arm64'
# Workaround for some servers, we need to erase completely the workspace
if self.forcedWorkspaceCleanup:
cmd.run(f'sudo -S rm -Rf {lSourcePath}')
self.testCase_id = HTML.testCase_id
cmd.cd(lSourcePath)
CreateWorkspace(cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# if asterix, copy the entitlement and subscription manager configurations
if self.host == 'Red Hat':
cmd.run('mkdir -p ./etc-pki-entitlement ./rhsm-conf ./rhsm-ca')
@@ -647,7 +532,7 @@ class Containerize():
self.ranRepository = 'https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git'
self.ranAllowMerge = False
self.ranTargetBranch = 'master'
mySSH.command('cd ' +lSourcePath, '\$', 3)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# to prevent accidentally overwriting data that might be used later
self.ranCommitID = oldRanCommidID
self.ranRepository = oldRanRepository
@@ -977,7 +862,7 @@ class Containerize():
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def Create_Workspace(self,HTML):
def DeployObject(self, HTML, EPC):
if self.eNB_serverId[self.eNB_instance] == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
@@ -996,76 +881,333 @@ class Containerize():
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.info(f"Running on server {lIpAddr}")
sshSession = cls_cmd.getConnection(lIpAddr)
CreateWorkspace(sshSession, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
def DeployObject(self, HTML, EPC):
lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self)
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.debug('\u001B[1m Deploying OAI Object on server: ' + lIpAddr + '\u001B[0m')
self.deployKind[self.eNB_instance] = True
mySSH = cls_cmd.getConnection(lIpAddr, f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}')
logging.info(f'Current working directory: {lSourcePath}/{self.yamlPath[self.eNB_instance]}')
ReTagImages(mySSH,IMAGES,self.ranCommitID, self.ranBranch, self.ranAllowMerge, self.displayedNewTags)
deployStatus,allServices = DeployServices(mySSH,self.services[self.eNB_instance])
if deployStatus != 0:
mySSH.close()
self.exitStatus = 1
logging.error('Could not deploy')
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
return
services_list = allServices if self.services[self.eNB_instance].split() == [] else self.services[self.eNB_instance].split()
status = True
imagesInfo=""
for svcName in services_list:
containerName = GetContainerName(mySSH, svcName)
healthyNb,unhealthyNb = GetContainerHealth(mySSH,containerName)
self.testCase_id = HTML.testCase_id
self.eNB_logFile[self.eNB_instance] = f'{svcName}-{self.testCase_id}.log'
if unhealthyNb:
logging.warning(f"Deployment Failed: Trying to copy container logs {self.eNB_logFile[self.eNB_instance]}")
CopyinContainerLog(mySSH,lSourcePath,self.yamlPath[0].split('/'),containerName,self.eNB_logFile[self.eNB_instance])
status = False
imagesInfo += (GetImageInfo(mySSH, containerName))
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
for image in IMAGES:
imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: oai-ci/{imageTag}#" ci-docker-compose.yml', '\$', 2)
# Currently support only one
svcName = self.services[self.eNB_instance]
if svcName == '':
logging.warning('no service name given: starting all services in ci-docker-compose.yml!')
mySSH.command(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', '\$', 30)
# Checking Status
mySSH.command(f'docker compose --file ci-docker-compose.yml config {svcName}', '\$', 5)
result = re.search('container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)', mySSH.getBefore())
unhealthyNb = 0
healthyNb = 0
startingNb = 0
containerName = ''
usedImage = ''
imageInfo = ''
if result is not None:
containerName = result.group('container_name')
time.sleep(5)
cnt = 0
while (cnt < 3):
mySSH.command('docker inspect --format="{{.State.Health.Status}}" ' + containerName, '\$', 5)
unhealthyNb = mySSH.getBefore().count('unhealthy')
healthyNb = mySSH.getBefore().count('healthy') - unhealthyNb
startingNb = mySSH.getBefore().count('starting')
if healthyNb == 1:
cnt = 10
else:
time.sleep(10)
cnt += 1
mySSH.command('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, '\$', 5)
for stdoutLine in mySSH.getBefore().split('\n'):
if stdoutLine.count('ImageUsed: oai-ci'):
usedImage = stdoutLine.replace('ImageUsed: oai-ci', 'oai-ci').strip()
logging.debug('Used image is ' + usedImage)
if usedImage != '':
mySSH.command('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage, '\$', 5, silent=True)
for stdoutLine in mySSH.getBefore().split('\n'):
if re.search('Size = [0-9]', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
if re.search('Creation = [0-9]', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
if re.search('Id = sha256', stdoutLine) is not None:
imageInfo += stdoutLine.strip() + '\n'
logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)')
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
self.testCase_id = HTML.testCase_id
self.eNB_logFile[self.eNB_instance] = 'enb_' + self.testCase_id + '.log'
status = False
if healthyNb == 1:
cnt = 0
while (cnt < 20):
mySSH.command('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting|ready"', '\$', 30)
result = re.search('got sync|Starting E1AP at CU UP|Starting F1AP at CU|Got sync|Waiting for RUs to be configured|cuPHYController initialized|Received CONFIG.response, gNB is ready', mySSH.getBefore())
if result is None:
time.sleep(6)
cnt += 1
else:
cnt = 100
status = True
logging.info('\u001B[1m Deploying OAI object Pass\u001B[0m')
else:
# containers are unhealthy, so we won't start. However, logs are stored at the end
# in UndeployObject so we here store the logs of the unhealthy container to report it
logfilename = f'{lSourcePath}/cmake_targets/log/{self.eNB_logFile[self.eNB_instance]}'
mySSH.command(f'docker logs {containerName} > {logfilename}', '\$', 30)
mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
mySSH.close()
imagesInfo += ("\n")
message = ''
if usedImage != '':
message += f'Used Image = {usedImage} :\n'
message += imageInfo
else:
message += 'Could not retrieve used image info!\n'
if status:
imagesInfo += ("Healthy deployment!")
HTML.CreateHtmlTestRowQueue('N/A', 'OK', [(imagesInfo)])
message += '\nHealthy deployment!\n'
else:
message += '\nUnhealthy deployment! -- Check logs for reason!\n'
if status:
HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message])
else:
self.exitStatus = 1
imagesInfo += ("Unhealthy deployment! -- Check logs for reason!")
HTML.CreateHtmlTestRowQueue('N/A', 'KO', [(imagesInfo)])
HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message])
def UndeployObject(self, HTML, RAN):
lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self)
if self.eNB_serverId[self.eNB_instance] == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
elif self.eNB_serverId[self.eNB_instance] == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
lSourcePath = self.eNB1SourceCodePath
elif self.eNB_serverId[self.eNB_instance] == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
lSourcePath = self.eNB2SourceCodePath
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.debug(f'\u001B[1m Undeploying OAI Object from server: {lIpAddr}\u001B[0m')
mySSH = cls_cmd.getConnection(lIpAddr)
yamlDir = f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}'
services = GetRunningServices(mySSH, yamlDir)
mySSH.run(f'cd {yamlDir}')
svcName = self.services[self.eNB_instance]
forceDown = False
if svcName != '':
logging.warning(f'service name given, but will stop all services in ci-docker-compose.yml!')
svcName = ''
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services')
if ret.returncode != 0:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', "cannot enumerate running services")
self.exitStatus = 1
return
# first line has command, last line has next command prompt
allServices = ret.stdout.splitlines()
services = []
for s in allServices:
# outputs the hash if the container is running
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
c = ret.stdout
logging.debug(f'running service {s} with container id {c}')
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
services.append((s, c))
logging.info(f'stopping services {[s for s, _ in services]}')
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
copyin_res = True
copyin_res = all(CopyinContainerLog(mySSH, lSourcePath, self.yamlPath[0].split('/'), container_id, f'{service_name}-{HTML.testCase_id}.log') for service_name, container_id in services)
for service_name, container_id in services:
# head -n -1 suppresses the final "X exited with status code Y"
filename = f'{service_name}-{HTML.testCase_id}.log'
mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
# Analyzing log file!
if not copyin_res:
HTML.htmleNBFailureMsg='Could not copy logfile(s) to analyze it!'
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
self.exitStatus = 1
# use function for UE log analysis, when oai-nr-ue container is used
elif any(service_name == 'oai-nr-ue' or service_name == 'lte_ue0' for service_name, _ in services):
self.exitStatus == 0
logging.debug(f'Analyzing UE logfile {filename}')
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
if (logStatus < 0):
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
self.exitStatus = 1
else:
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
else:
log_results = [CheckLogs(self, mySSH, self.yamlPath[0].split('/'), service_name, HTML, RAN) for service_name, _ in services]
self.exitStatus = 1 if any(log_results) else 0
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') if self.exitStatus == 0 else logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
for service_name, _ in services:
if service_name == 'nv-cubb':
msg = 'Undeploy PNF/Nvidia CUBB'
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
else:
filename = f'{service_name}-{HTML.testCase_id}.log'
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
if (logStatus < 0):
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
self.exitStatus = 1
else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
# all the xNB run logs shall be on the server 0 for logCollecting
if self.eNB_serverId[self.eNB_instance] != '0':
mySSH.copyout(f'./*.log', f'{lSourcePath}/cmake_targets/', recursive=True)
if self.exitStatus == 0:
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
else:
logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
mySSH.close()
def DeployGenObject(self, HTML, RAN, UE):
self.exitStatus = 0
logging.debug('\u001B[1m Checking Services to deploy\u001B[0m')
# Implicitly we are running locally
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
self.deployKind[0] = False
cmd = 'docker-compose config --services'
listServices = myCmd.run(cmd)
if listServices.returncode != 0:
myCmd.close()
self.exitStatus = 1
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
return
for reqSvc in self.services[0].split(' '):
res = re.search(reqSvc, listServices.stdout)
if res is None:
logging.error(reqSvc + ' not found in specified docker-compose')
self.exitStatus = 1
if (self.exitStatus == 1):
myCmd.close()
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
return
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
myCmd.run(cmd, silent=self.displayedNewTags)
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
for image in imageNames:
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
# In the scenario, for 5G images, we have the choice of either pulling normal images
# or -asan images. We need to detect which kind we did pull.
if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup':
ret = myCmd.run(f'docker image inspect oai-ci/{tagToUse}', reportNonZero=False, silent=self.displayedNewTags)
if ret.returncode != 0:
tagToUse = tagToUse.replace('oai-gnb', 'oai-gnb-asan')
tagToUse = tagToUse.replace('oai-nr-ue', 'oai-nr-ue-asan')
tagToUse = tagToUse.replace('oai-nr-cuup', 'oai-nr-cuup-asan')
if not self.displayedNewTags:
logging.debug(f'\u001B[1m Using sanitized version of {image} with {tagToUse}\u001B[0m')
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{tagToUse}@" docker-compose-ci.yml'
myCmd.run(cmd, silent=self.displayedNewTags)
self.displayedNewTags = True
cmd = f'docker-compose -f docker-compose-ci.yml up -d {self.services[0]}'
deployStatus = myCmd.run(cmd, timeout=100)
if deployStatus.returncode != 0:
myCmd.close()
self.exitStatus = 1
logging.error('Could not deploy')
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
return
logging.debug('\u001B[1m Checking if all deployed healthy\u001B[0m')
cmd = 'docker-compose -f docker-compose-ci.yml ps -a'
count = 0
healthy = 0
restarting = 0
newContainers = []
while (count < 10):
count += 1
containerStatus = []
deployStatus = myCmd.run(cmd, 30, silent=True)
healthy = 0
restarting = 0
for state in deployStatus.stdout.split('\n'):
state = state.strip()
res = re.search('Name|NAME|----------', state)
if res is not None:
continue
if len(state) == 0:
continue
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
if res is not None:
cName = res.group('container_name')
found = False
for alreadyDeployed in self.deployedContainers:
if cName == alreadyDeployed:
found = True
if not found:
newContainers.append(cName)
self.deployedContainers.append(cName)
if re.search('\(healthy\)', state) is not None:
healthy += 1
if re.search('rfsim4g-db-init.*Exit 0', state) is not None or re.search('rfsim4g-db-init.*Exited \(0\)', state) is not None:
myCmd.run('docker rm -f rfsim4g-db-init', timeout=30, silent=True, reportNonZero=False)
if re.search('l2sim4g-db-init.*Exit 0', state) is not None or re.search('l2sim4g-db-init.*Exited \(0\)', state) is not None:
myCmd.run('docker rm -f l2sim4g-db-init', timeout=30, silent=True, reportNonZero=False)
if re.search('Restarting', state) is None:
containerStatus.append(state)
else:
restarting += 1
if healthy == self.nb_healthy[0] and restarting == 0:
count = 100
else:
time.sleep(10)
html_cell = ''
for newCont in newContainers:
if newCont == 'rfsim4g-db-init':
continue
cmd = 'docker inspect -f "{{.Config.Image}}" ' + newCont
imageInspect = myCmd.run(cmd, timeout=30, silent=True)
imageName = str(imageInspect.stdout).strip()
cmd = 'docker image inspect --format \'{{.RepoTags}}\t{{.Size}} bytes\t{{index (split .Created ".") 0}}\n{{.Id}}\' ' + imageName
imageInspect = myCmd.run(cmd, 30, silent=True)
html_cell += imageInspect.stdout + '\n'
myCmd.close()
for cState in containerStatus:
html_cell += cState + '\n'
if count == 100 and healthy == self.nb_healthy[0]:
if self.tsharkStarted == False:
logging.debug('Starting tshark on public network')
self.CaptureOnDockerNetworks()
HTML.CreateHtmlTestRowQueue('n/a', 'OK', [html_cell])
for cState in containerStatus:
logging.debug(cState)
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
else:
HTML.CreateHtmlTestRowQueue('Could not deploy in time', 'KO', [html_cell])
for cState in containerStatus:
logging.debug(cState)
logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m')
HTML.testCase_id = 'AUTO-UNDEPLOY'
UE.testCase_id = 'AUTO-UNDEPLOY'
HTML.desc = 'Automatic Undeployment'
UE.desc = 'Automatic Undeployment'
UE.ShowTestID()
self.UndeployGenObject(HTML, RAN, UE)
self.exitStatus = 1
def CaptureOnDockerNetworks(self):
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
cmd = 'docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
@@ -1094,6 +1236,116 @@ class Containerize():
x.daemon = True
x.start()
def UndeployGenObject(self, HTML, RAN, UE):
self.exitStatus = 0
# Implicitly we are running locally
ymlPath = self.yamlPath[0].split('/')
logPath = '../cmake_targets/log/' + ymlPath[1]
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
myCmd.run(cmd)
# check which containers are running for log recovery later
cmd = 'docker-compose -f docker-compose-ci.yml ps --all'
deployStatusLogs = myCmd.run(cmd, timeout=30)
# Stop the containers to shut down objects
logging.debug('\u001B[1m Stopping containers \u001B[0m')
cmd = 'docker-compose -f docker-compose-ci.yml stop -t3'
deployStatus = myCmd.run(cmd, timeout=100)
if deployStatus.returncode != 0:
myCmd.close()
self.exitStatus = 1
logging.error('Could not stop containers')
HTML.CreateHtmlTestRow('Could not stop', 'KO', CONST.ALL_PROCESSES_OK)
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
return
anyLogs = False
logging.debug('Working dir is now . (ie ci-scripts)')
myCmd2 = cls_cmd.LocalCmd()
myCmd2.run(f'mkdir -p {logPath}')
myCmd2.cd(logPath)
for state in deployStatusLogs.stdout.split('\n'):
res = re.search('Name|NAME|----------', state)
if res is not None:
continue
if len(state) == 0:
continue
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
if res is not None:
anyLogs = True
cName = res.group('container_name')
cmd = f'docker logs {cName} > {cName}.log 2>&1'
myCmd2.run(cmd, timeout=30, reportNonZero=False)
if re.search('magma-mme', cName) is not None:
cmd = f'docker cp -L {cName}:/var/log/mme.log {cName}-full.log'
myCmd2.run(cmd, timeout=30, reportNonZero=False)
fullStatus = True
if anyLogs:
# Analyzing log file(s)!
listOfPossibleRanContainers = ['enb*', 'gnb*', 'cu*', 'du*']
for container in listOfPossibleRanContainers:
filenames = './*-oai-' + container + '.log'
cmd = f'ls {filenames}'
lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
if lsStatus.returncode != 0:
continue
filenames = str(lsStatus.stdout).strip()
for filename in filenames.split('\n'):
logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m')
logStatus = RAN.AnalyzeLogFile_eNB(f'{logPath}/{filename}', HTML, self.ran_checkers)
if (logStatus < 0):
fullStatus = False
self.exitStatus = 1
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
else:
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
listOfPossibleUeContainers = ['lte-ue*', 'nr-ue*']
for container in listOfPossibleUeContainers:
filenames = './*-oai-' + container + '.log'
cmd = f'ls {filenames}'
lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
if lsStatus.returncode != 0:
continue
filenames = str(lsStatus.stdout).strip()
for filename in filenames.split('\n'):
logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m')
logStatus = UE.AnalyzeLogFile_UE(f'{logPath}/{filename}', HTML, RAN)
if (logStatus < 0):
fullStatus = False
self.exitStatus = 1
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
else:
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
myCmd2.close()
if self.tsharkStarted:
self.tsharkStarted = StopPySharkCapture(ymlPath[1])
logging.debug('\u001B[1m Undeploying \u001B[0m')
logging.debug(f'Working dir is back {self.yamlPath[0]}')
cmd = 'docker-compose -f docker-compose-ci.yml down -v'
deployStatus = myCmd.run(cmd, timeout=100)
if deployStatus.returncode != 0:
myCmd.close()
self.exitStatus = 1
logging.error('Could not undeploy')
HTML.CreateHtmlTestRow('Could not undeploy', 'KO', CONST.ALL_PROCESSES_OK)
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
return
self.deployedContainers = []
myCmd.close()
if fullStatus:
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
logging.info('\u001B[1m Undeploying OAI Object(s) PASS\u001B[0m')
else:
HTML.CreateHtmlTestRow('n/a', 'KO', CONST.ALL_PROCESSES_OK)
logging.error('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
def StatsFromGenObject(self, HTML):
self.exitStatus = 0
ymlPath = self.yamlPath[0].split('/')

View File

@@ -41,18 +41,14 @@ import cls_cmd
class Module_UE:
def __init__(self, module_name, node=None, filename="ci_infra.yaml"):
def __init__(self, module_name, filename="ci_infra.yaml"):
with open(filename, 'r') as f:
all_ues = yaml.load(f, Loader=yaml.FullLoader)
m = all_ues.get(module_name)
if m is None:
raise Exception(f'no such module name "{module_name}" in "{filename}"')
self.module_name = module_name
self.host = m['Host'] if m['Host'] != "%%current_host%%" else None
if node is None and self.host is None:
raise Exception(f'node not provided when needed')
elif node is not None and self.host is None:
self.host = node
self.host = m['Host']
self.cmd_dict = {
"attach": m.get('AttachScript'),
"detach": m.get('DetachScript'),
@@ -69,8 +65,6 @@ class Module_UE:
self.logStore = m.get('LogStore')
self.cmd_prefix = m.get('CmdPrefix')
self.runIperf3Server = m.get('RunIperf3Server', True)
self.namespace = m.get('Namespace')
self.cnPath = m.get('CNPath')
logging.info(f'initialized {self.module_name}@{self.host} from {filename}')
def __str__(self):
@@ -196,12 +190,6 @@ class Module_UE:
def getHost(self):
return self.host
def getNamespace(self):
return self.namespace
def getCNPath(self):
return self.cnPath
def getRunIperf3Server(self):
return self.runIperf3Server

View File

@@ -96,44 +96,45 @@ def Iperf_ComputeTime(args):
return int(result.group('iperf_time'))
def Iperf_analyzeV3TCPJson(filename, iperf_tcp_rate_target):
try:
with open(filename) as f:
results = json.load(f)
sender_bitrate = round(results['end']['streams'][0]['sender']['bits_per_second'] / 1000000, 2)
receiver_bitrate = round(results['end']['streams'][0]['receiver']['bits_per_second'] / 1000000, 2)
except json.JSONDecodeError as e:
return (False, f'Could not decode JSON log file {filename}: {e}')
except KeyError as e:
e_msg = results.get('error', f'error report not found in {filename}')
return (False, f'While parsing Iperf3 results: missing key {e}, {e_msg}')
except Exception as e:
return (False, f'While parsing Iperf3 results: exception: {e}')
if (not os.path.isfile(filename)):
return (False, 'Iperf3 TCP: Log file not present')
if (os.path.getsize(filename)==0):
return (False, 'Iperf3 TCP: Log file is empty')
with open(filename) as file:
filename = json.load(file)
try:
sender_bitrate = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
receiver_bitrate = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
except Exception as e:
return (False, 'Could not compute Iperf3 bitrate!')
snd_msg = f'Sender Bitrate : {sender_bitrate} Mbps'
rcv_msg = f'Receiver Bitrate : {receiver_bitrate} Mbps'
success = True
if iperf_tcp_rate_target is not None:
success = float(receiver_bitrate) >= float(iperf_tcp_rate_target)
if success:
rcv_msg += f" (target: {iperf_tcp_rate_target})"
if (iperf_tcp_rate_target is not None):
if (int(receiver_bitrate) < int(iperf_tcp_rate_target)):
rcv_msg += f" (too low! < {iperf_tcp_rate_target} Mbps)"
success = False
else:
rcv_msg += f" (too low! < {iperf_tcp_rate_target})"
rcv_msg += f" (target : {iperf_tcp_rate_target} Mbps)"
return(success, f'{snd_msg}\n{rcv_msg}')
def Iperf_analyzeV3BIDIRJson(filename):
try:
with open(filename) as f:
results = json.load(f)
sender_bitrate_ul = round(results['end']['streams'][0]['sender']['bits_per_second'] / 1000000, 2)
receiver_bitrate_ul = round(results['end']['streams'][0]['receiver']['bits_per_second'] / 1000000, 2)
sender_bitrate_dl = round(results['end']['streams'][1]['sender']['bits_per_second'] / 1000000, 2)
receiver_bitrate_dl = round(results['end']['streams'][1]['receiver']['bits_per_second'] / 1000000, 2)
except json.JSONDecodeError as e:
return (False, f'Could not decode JSON log file: {e}')
except KeyError as e:
e_msg = results.get('error', f'error report not found in {filename}')
return (False, f'While parsing Iperf3 results: missing key {e}, {e_msg}')
except Exception as e:
return (False, f'While parsing Iperf3 results: exception: {e}')
if (not os.path.isfile(filename)):
return (False, 'Iperf3 Bidir TCP: Log file not present')
if (os.path.getsize(filename)==0):
return (False, 'Iperf3 Bidir TCP: Log file is empty')
with open(filename) as file:
filename = json.load(file)
try:
sender_bitrate_ul = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_ul = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
sender_bitrate_dl = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2)
receiver_bitrate_dl = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2)
except Exception as e:
return (False, 'Could not compute BIDIR bitrate!')
msg = f'Sender Bitrate DL : {sender_bitrate_dl} Mbps\n'
msg += f'Receiver Bitrate DL : {receiver_bitrate_dl} Mbps\n'
@@ -280,8 +281,6 @@ class OaiCiTest():
self.clean_repository = True
self.air_interface=''
self.ue_ids = []
self.nodes = []
self.svr_node = None
self.svr_id = None
self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem
@@ -608,7 +607,7 @@ class OaiCiTest():
self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS)
def AttachUE(self, HTML, RAN, EPC, CONTAINERS):
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(ue.attach) for ue in ues]
attached = [f.result() for f in futures]
@@ -623,7 +622,7 @@ class OaiCiTest():
self.AutoTerminateUEandeNB(HTML, RAN, EPC, CONTAINERS)
def DetachUE(self, HTML):
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(ue.detach) for ue in ues]
[f.result() for f in futures]
@@ -664,7 +663,7 @@ class OaiCiTest():
messages = [f.result() for f in futures]
HTML.CreateHtmlTestRowQueue('NA', 'OK', messages)
def Ping_common(self, EPC, ue, RAN, CONTAINERS, printLock):
def Ping_common(self, EPC, ue, RAN, printLock):
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
ping_status = 0
ueIP = ue.getIP()
@@ -672,11 +671,7 @@ class OaiCiTest():
return (False, f"UE {ue.getName()} has no IP address")
ping_log_file = f'ping_{self.testCase_id}_{ue.getName()}.log'
ping_time = re.findall("-c *(\d+)",str(self.ping_args))
# Creating destination log folder if needed on the python executor workspace
ymlPath = CONTAINERS.yamlPath[0].split('/')
logPath = f'../cmake_targets/log/{ymlPath[2]}'
os.system(f'mkdir -p {logPath}')
local_ping_log_file = f'{logPath}/{ping_log_file}'
local_ping_log_file = f'{os.getcwd()}/{ping_log_file}'
# if has pattern %cn_ip%, replace with core IP address, else we assume the IP is present
if re.search('%cn_ip%', self.ping_args):
#target address is different depending on EPC type
@@ -763,11 +758,12 @@ class OaiCiTest():
if self.ue_ids == []:
raise Exception("no module names in self.ue_ids provided")
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
logging.debug(ues)
pingLock = Lock()
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(self.Ping_common, EPC, ue, RAN, CONTAINERS, pingLock) for ue in ues]
futures = [executor.submit(self.Ping_common, EPC, ue, RAN, pingLock) for ue in ues]
results = [f.result() for f in futures]
# each result in results is a tuple, first member goes to successes, second to messages
successes, messages = map(list, zip(*results))
@@ -793,9 +789,7 @@ class OaiCiTest():
bidirIperf = re.search('--bidir', iperf_opt) is not None
client_filename = f'iperf_client_{self.testCase_id}_{ue.getName()}.log'
ymlPath = CONTAINERS.yamlPath[0].split('/')
logPath = f'../cmake_targets/log/{ymlPath[2]}'
# Creating destination log folder if needed on the python executor workspace
os.system(f'mkdir -p {logPath}')
logPath = f'../cmake_targets/log/{ymlPath[1]}'
if udpIperf:
target_bitrate, iperf_opt = Iperf_ComputeModifiedBW(idx, ue_num, self.iperf_profile, self.iperf_args)
# note: for UDP testing we don't want to use json report - reports 0 Mbps received bitrate
@@ -852,8 +846,9 @@ class OaiCiTest():
if self.ue_ids == [] or self.svr_id == None:
raise Exception("no module names in self.ue_ids or/and self.svr_id provided")
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
svr = cls_module.Module_UE(self.svr_id,self.svr_node)
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
svr = cls_module.Module_UE(self.svr_id)
logging.debug(ues)
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(self.Iperf_Module, EPC, ue, svr, RAN, i, len(ues), CONTAINERS) for i, ue in enumerate(ues)]
@@ -869,8 +864,8 @@ class OaiCiTest():
def Iperf2_Unidir(self,HTML,RAN,EPC,CONTAINERS):
if self.ue_ids == [] or self.svr_id == None or len(self.ue_ids) != 1:
raise Exception("no module names in self.ue_ids or/and self.svr_id provided, multi UE scenario not supported")
ue = cls_module.Module_UE(self.ue_ids[0].strip(),self.nodes[0].strip())
svr = cls_module.Module_UE(self.svr_id,self.svr_node)
ue = cls_module.Module_UE(self.ue_ids[0].strip())
svr = cls_module.Module_UE(self.svr_id)
ueIP = ue.getIP()
if not ueIP:
return (False, f"UE {ue.getName()} has no IP address")
@@ -907,9 +902,9 @@ class OaiCiTest():
self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS)
def AnalyzeLogFile_UE(self, UElogFile,HTML,RAN):
if (not os.path.isfile(f'{UElogFile}')):
if (not os.path.isfile(f'./{UElogFile}')):
return -1
ue_log_file = open(f'{UElogFile}', 'r')
ue_log_file = open(f'./{UElogFile}', 'r')
exitSignalReceived = False
foundAssertion = False
msgAssertion = ''
@@ -938,11 +933,8 @@ class OaiCiTest():
global_status = CONST.ALL_PROCESSES_OK
for line in ue_log_file.readlines():
result = re.search('nr_synchro_time|Starting NR UE soft modem', str(line))
sidelink = re.search('sl-mode', str(line))
if result is not None:
nrUEFlag = True
if sidelink is not None:
nrUEFlag = False
if nrUEFlag:
result = re.search('decode mib', str(line))
if result is not None:

View File

@@ -105,7 +105,8 @@ class StaticCodeAnalysis():
else:
full_ran_repo_name = self.ranRepository + '.git'
cmd.cd(lSourcePath)
CreateWorkspace(cmd, lSourcePath, full_ran_repo_name, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
logDir = f'{lSourcePath}/cmake_targets/build_log_{self.testCase_id}'
cmd.run(f'mkdir -p {logDir}')
cmd.run('docker image rm oai-cppcheck:bionic oai-cppcheck:focal')
@@ -217,9 +218,9 @@ class StaticCodeAnalysis():
return 0
def LicenceAndFormattingCheck(self, HTML):
# Workspace is no longer recreated from scratch.
# It implies that this method shall be called last within a build pipeline
# where workspace is already created
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
@@ -231,7 +232,14 @@ class StaticCodeAnalysis():
logging.debug('Building on server: ' + lIpAddr)
cmd = cls_cmd.getConnection(lIpAddr)
self.testCase_id = HTML.testCase_id
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
CreateWorkspace(cmd, lSourcePath, full_ran_repo_name, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
check_options = ''
if self.ranAllowMerge:
check_options = f'--build-arg MERGE_REQUEST=true --build-arg SRC_BRANCH={self.ranBranch}'
@@ -244,7 +252,7 @@ class StaticCodeAnalysis():
logDir = f'{lSourcePath}/cmake_targets/build_log_{self.testCase_id}'
cmd.run(f'mkdir -p {logDir}')
cmd.run('docker image rm oai-formatting-check:latest')
cmd.run(f'docker build --target oai-formatting-check --tag oai-formatting-check:latest {check_options} --file {lSourcePath}/ci-scripts/docker/Dockerfile.formatting.bionic {lSourcePath} > {logDir}/oai-formatting-check.txt 2>&1')
cmd.run(f'docker build --target oai-formatting-check --tag oai-formatting-check:latest {check_options} --file {lSourcePath}/ci-scripts/docker/Dockerfile.formatting.bionic . > {logDir}/oai-formatting-check.txt 2>&1')
cmd.run('docker image rm oai-formatting-check:latest')
cmd.run('docker image prune --force')

View File

@@ -206,6 +206,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator: {
serveraddr = "server";

View File

@@ -202,6 +202,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config : {
global_log_level = "info";

View File

@@ -206,6 +206,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator: {
serveraddr = "server";
serverport = 4043;

View File

@@ -207,6 +207,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config : {
global_log_level = "info";

View File

@@ -195,8 +195,8 @@ gNBs =
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.131";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.131";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.130";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.130";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};

View File

@@ -209,6 +209,14 @@ rfsimulator: {
serveraddr = "server";
};
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -85,7 +85,7 @@ gNBs =
powerRampingStep = 1;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
ra_ResponseWindow = 4;
#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;
@@ -217,6 +217,14 @@ rfsimulator: {
serveraddr = "server";
};
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -213,6 +213,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -197,6 +197,12 @@ RUs = ({
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
});
THREAD_STRUCT = ({
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
});
security = {
# preferred ciphering algorithms

View File

@@ -199,6 +199,12 @@ RUs = ({
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
});
THREAD_STRUCT = ({
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
});
security = {
# preferred ciphering algorithms

View File

@@ -215,6 +215,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -220,6 +220,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -211,6 +211,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{

View File

@@ -1,283 +0,0 @@
Active_gNBs = ( "5G-GOA-gNB");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "5G-GOA-gNB";
// 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 }) });
nr_cellid = 12345678L;
////////// Physical parameters:
sib1_tda = 5;
min_rxtxtime = 6;
disable_harq = 1;
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# downlinkConfigCommon
#frequencyInfoDL
# this is 2150.43 MHz + 14 PRBs@15kHz SCS (same as initial BWP), points to Subcarrier 0 of RB#10 of SSB block
absoluteFrequencySSB = 430590;
dl_frequencyBand = 66;
# this is 2150.43 MHz
dl_absoluteFrequencyPointA = 430086;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 0;
dl_carrierBandwidth = 25;
#initialDownlinkBWP
#genericParameters
# this is RBstart=0,L=25 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 6600;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 0;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 2;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 66;
# this is 1750.43 MHz
ul_absoluteFrequencyPointA = 350086;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 0;
ul_carrierBandwidth = 25;
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 6600;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 0;
#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 = -118;
#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;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 4;
#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;
#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
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 = 0;
# 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
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
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 = 0;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 0;
# 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;
#ext2
#ntn_Config_r17
cellSpecificKoffset_r17 = 478;
}
);
TIMERS :
{
sr_ProhibitTimer = 0;
sr_TransMax = 64;
sr_ProhibitTimer_v1700 = 512;
t300 = 2000;
t301 = 2000;
t319 = 2000;
};
# ------- 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"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.140/26";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.140/26";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 150;
pucch_TargetSNRx10 = 200;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150;
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 = [7];
max_pdschReferenceSignalPower = -27;
max_rxgain = 114;
sf_extension = 0;
eNB_instances = [0];
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000];
##beamforming 1x4 matrix: 1 layer x 4 antennas
#bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000];
## beamforming 2x2 matrix:
# bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff];
## beamforming 4x4 matrix:
#bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff];
sdr_addrs = "type=x300";
clock_src = "internal";
# if_freq = 3700000000L;
# if_offset = 1000000;
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_DISABLE";
}
);
rfsimulator :
{
serveraddr = "server";
serverport = 4043;
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
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";
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 ="debug";
};

View File

@@ -220,6 +220,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_DISABLE";
}
);
rfsimulator :
{

View File

@@ -212,7 +212,7 @@ RUs = (
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
max_rxgain = 72;
eNB_instances = [0];
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000];

View File

@@ -1,297 +0,0 @@
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
//nr_cellid = 12345678L;
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 1;
maxMIMO_layers = 2;
pusch_AntennaPorts = 4;
do_CSIRS = 1;
do_SRS = 0 ;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# downlinkConfigCommon
#frequencyInfoDL
# this is 3450.72 MHz (center frequency)
absoluteFrequencySSB = 666624;
dl_frequencyBand = 77;
# this is 3401.58 MHz
dl_absoluteFrequencyPointA = 663348;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
#initialDownlinkBWP
#genericParameters
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
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 = 273;
pMax = 23;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 159;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 7;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 2;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#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 = 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
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,
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -100;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
ssb_PositionsInBurst_Bitmap = 0x1;
# 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 = 5;
nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 0;
}
);
# ------- 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.103"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 230;
ul_bler_target_upper=.35;
ul_bler_target_lower=.15;
pusch_FailureThres = 100;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 130
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = -100;
tx_amp_backoff_dB = 3;
L1_rx_thread_core = 3;
L1_tx_thread_core = 4;
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 4;
nb_rx = 4;
att_tx = 0
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 5;
sl_ahead = 5;
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
clock_src = "internal";
tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration
}
);
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
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";
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 = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1");
system_core = 0;
io_core = 1;
worker_cores = (2);
du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01");
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
mtu = 9216; # check if xran uses this properly
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429); # (min, max)
T2a_cp_ul = (285, 429); # (min, max)
T2a_up = (125, 428); # (min, max)
Ta3 = (130, 170); # (min, max)
T1a_cp_dl = (285, 470); # (min, max)
T1a_cp_ul = (285, 429); # (min, max)
T1a_up = (125, 350); # (min, max)
Ta4 = (110, 180); # (min, max)
ru_config = {
iq_width = 9;
iq_width_prach = 9;
};
prach_config = {
eAxC_offset = 4;
};
});
};

View File

@@ -32,20 +32,20 @@ gNBs =
# downlinkConfigCommon
#frequencyInfoDL
# this is 3300.60 MHz + 53*12*30e-3 MHz = 3319.68
absoluteFrequencySSB = 630048;
absoluteFrequencySSB = 621312;
dl_frequencyBand = 78;
# this is 3300.60 MHz
dl_absoluteFrequencyPointA = 626772;
dl_absoluteFrequencyPointA = 620040;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
dl_carrierBandwidth = 106;
#initialDownlinkBWP
#genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 1099; # 6366 12925 12956 28875 12952
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
@@ -61,11 +61,11 @@ gNBs =
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 273;
ul_carrierBandwidth = 106;
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
initialULBWPlocationAndBandwidth = 28875;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
@@ -140,10 +140,10 @@ gNBs =
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 3;
dl_UL_TransmissionPeriodicity = 6;
nrofDownlinkSlots = 7;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSlots = 2;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = -25;
@@ -179,6 +179,9 @@ MACRLCs = (
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
#pusch_TargetSNRx10 = 150;
#pucch_TargetSNRx10 = 200;
dl_max_mcs = 16; # there are retransmissions if more
}
);
@@ -187,6 +190,7 @@ L1s = (
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 120;
#pucch0_dtx_threshold = 120;
}
);
@@ -208,6 +212,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{

View File

@@ -220,6 +220,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator: {
serveraddr = "server";

View File

@@ -273,6 +273,14 @@ RUs = ({
clock_src = "internal";
});
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator: {
serveraddr = "server";

View File

@@ -219,6 +219,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -233,6 +233,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -233,6 +233,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -215,6 +215,14 @@ rfsimulator: {
serveraddr = "server";
};
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -1,296 +0,0 @@
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 1;
maxMIMO_layers = 2;
pusch_AntennaPorts = 4;
do_CSIRS = 1;
do_SRS = 0 ;
sib1_tda = 15;
# force_UL256qam_off = 1;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# n_TimingAdvanceOffset = 0;
# downlinkConfigCommon
#frequencyInfoDL
# this is 3450.72 MHz (center frequency)
absoluteFrequencySSB = 623328;
dl_frequencyBand = 78;
# this is 3401.58 MHz
dl_absoluteFrequencyPointA = 620052;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
#initialDownlinkBWP
#genericParameters
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 78;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 273;
pMax = 23;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 151;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 8;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 1;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#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 = 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
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,
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -96;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
ssb_PositionsInBurst_Bitmap = 0x1;
# 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 = -15;
}
);
# ------- 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.103"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 100;
pucch_TargetSNRx10 = 200;
dl_bler_target_upper=.35;
dl_bler_target_lower=.15;
ul_bler_target_upper=.35;
ul_bler_target_lower=.15;
pusch_FailureThres = 1000;
ul_max_mcs = 28;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 90;
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = 10;
max_ldpc_iterations = 15;
tx_amp_backoff_dB = 12; # needs to match O-RU configuration
L1_rx_thread_core = 3;
L1_tx_thread_core = 4;
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 4;
nb_rx = 4;
att_tx = 0
att_rx = 0;
bands = [78];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 5;
sl_ahead = 10;
##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
}
);
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";
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 ="info";
f1ap_log_level ="info";
};
fhi_72 = {
dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1");
system_core = 0;
io_core = 1;
worker_cores = (2);
du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67");
ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
mtu = 9216;
file_prefix = "fhi_72";
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500);
T2a_cp_ul = (25, 500);
T2a_up = (134, 375);
Ta3 = (152, 160);
T1a_cp_dl = (419, 470);
T1a_cp_ul = (285, 336);
T1a_up = (294, 345);
Ta4 = (0, 200);
ru_config = {
iq_width = 9;
iq_width_prach = 9;
};
prach_config = {
eAxC_offset = 4;
};
});
};

View File

@@ -232,6 +232,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -207,6 +207,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -236,6 +236,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -214,6 +214,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -218,6 +218,15 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
//parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
security = {
# preferred ciphering algorithms

View File

@@ -211,6 +211,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{

View File

@@ -209,6 +209,14 @@ RUs = (
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{

View File

@@ -14,7 +14,7 @@ Ref :
L1 Tx processing : 400.0
DLSCH encoding : 177.0
L1 Rx processing : 345.0
PUSCH inner-receiver : 200.0
PUSCH inner-receiver : 210.0
Schedule Response : 3.0
DL & UL scheduling timing : 13.0
UL Indication : 3.0

View File

@@ -1,32 +1,5 @@
#/*
# * 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 22.04
#
#---------------------------------------------------------------------
FROM ubuntu:xenial AS oai-cppcheck
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \

View File

@@ -1,30 +1,3 @@
#/*
# * 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 22.04
#
#---------------------------------------------------------------------
FROM ubuntu:bionic AS oai-formatting-check
ARG MERGE_REQUEST

View File

@@ -25,7 +25,7 @@
#
#---------------------------------------------------------------------
FROM ran-base:develop AS ran-tests
FROM ran-base:develop as ran-tests
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \

View File

@@ -48,7 +48,6 @@ import helpreadme as HELP
import constants as CONST
import cls_cluster as OC
import cls_cmd
import cls_module
#-----------------------------------------------------------
# Class Declaration
#-----------------------------------------------------------
@@ -73,10 +72,9 @@ class EPCManagement():
self.cfgDeploy = '--type start-mini --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap' #from xml, 'mini' is default normal for docker-network.py
self.cfgUnDeploy = '--type stop-mini --scenario 1' #from xml, 'mini' is default normal for docker-network.py
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr"
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
self.OCUserName = ''
self.OCPassword = ''
self.cnID = ''
self.imageToPull = ''
self.eNBSourceCodePath = ''
@@ -300,8 +298,7 @@ class EPCManagement():
html_cell += '(' + res4.group('date') + ')'
html_cell += '\n'
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
cn = cls_module.Module_UE(self.cnID)
succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath())
succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword)
if not succeeded:
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)
@@ -578,8 +575,7 @@ class EPCManagement():
mySSH.copyin(f'{self.SourceCodePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
logging.debug(message)
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
cn = cls_module.Module_UE(self.cnID)
succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath())
succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword)
if not succeeded:
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)

View File

@@ -217,13 +217,6 @@ def GetParametersFromXML(action):
elif action == 'Initialize_UE' or action == 'Attach_UE' or action == 'Detach_UE' or action == 'Terminate_UE' or action == 'CheckStatusUE' or action == 'DataEnable_UE' or action == 'DataDisable_UE':
CiTestObj.ue_ids = test.findtext('id').split(' ')
if test.findtext('nodes'):
CiTestObj.nodes = test.findtext('nodes').split(' ')
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
logging.error('Number of Nodes are not equal to the total number of UEs')
sys.exit("Mismatch in number of Nodes and UIs")
else:
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
elif action == 'Build_OAI_UE':
CiTestObj.Build_OAI_UE_args = test.findtext('Build_OAI_UE_args')
@@ -270,28 +263,12 @@ def GetParametersFromXML(action):
CiTestObj.ping_args = test.findtext('ping_args')
CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold')
CiTestObj.ue_ids = test.findtext('id').split(' ')
if test.findtext('nodes'):
CiTestObj.nodes = test.findtext('nodes').split(' ')
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
logging.error('Number of Nodes are not equal to the total number of UEs')
sys.exit("Mismatch in number of Nodes and UIs")
else:
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or ''
elif action == 'Iperf' or action == 'Iperf2_Unidir':
elif action == 'Iperf':
CiTestObj.iperf_args = test.findtext('iperf_args')
CiTestObj.ue_ids = test.findtext('id').split(' ')
CiTestObj.svr_id = test.findtext('svr_id') or None
if test.findtext('nodes'):
CiTestObj.nodes = test.findtext('nodes').split(' ')
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
logging.error('Number of Nodes are not equal to the total number of UEs')
sys.exit("Mismatch in number of Nodes and UIs")
else:
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
if test.findtext('svr_node'):
CiTestObj.svr_node = test.findtext('svr_node')
CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
CiTestObj.iperf_bitrate_threshold = test.findtext('iperf_bitrate_threshold') or '90'
CiTestObj.iperf_profile = test.findtext('iperf_profile') or 'balanced'
@@ -360,15 +337,13 @@ def GetParametersFromXML(action):
string_field = test.findtext('args')
if (string_field is not None):
EPC.cfgDeploy = string_field
EPC.cnID = test.findtext('cn_id')
elif action == 'Terminate_5GCN':
string_field = test.findtext('args')
if (string_field is not None):
EPC.cfgUnDeploy = string_field
EPC.cnID = test.findtext('cn_id')
elif action == 'Deploy_Object' or action == 'Undeploy_Object' or action == "Create_Workspace":
elif action == 'Deploy_Object' or action == 'Undeploy_Object':
eNB_instance=test.findtext('eNB_instance')
if (eNB_instance is None):
CONTAINERS.eNB_instance=0
@@ -392,6 +367,23 @@ def GetParametersFromXML(action):
if string_field is not None:
CONTAINERS.services[CONTAINERS.eNB_instance] = string_field
elif action == 'DeployGenObject' or action == 'UndeployGenObject' or action == 'StatsFromGenObject':
string_field=test.findtext('yaml_path')
if (string_field is not None):
CONTAINERS.yamlPath[0] = string_field
string_field=test.findtext('services')
if (string_field is not None):
CONTAINERS.services[0] = string_field
string_field=test.findtext('nb_healthy')
if (string_field is not None):
CONTAINERS.nb_healthy[0] = int(string_field)
string_field=test.findtext('d_retx_th')
if (string_field is not None):
CONTAINERS.ran_checkers['d_retx_th'] = [float(x) for x in string_field.split(',')]
string_field=test.findtext('u_retx_th')
if (string_field is not None):
CONTAINERS.ran_checkers['u_retx_th'] = [float(x) for x in string_field.split(',')]
elif action == 'Run_CUDATest' or action == 'Run_NRulsimTest' or action == 'Run_T2Test':
ldpc.runargs = test.findtext('physim_run_args')
ldpc.runsim = test.findtext('physim_run')
@@ -552,14 +544,10 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE):
if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
if os.path.isdir('cmake_targets/log'):
if RAN.eNBIPAddress == 'none':
cmd = 'zip -r enb.log.' + RAN.BuildId + '.zip cmake_targets/log'
logging.info(cmd)
try:
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
except subprocess.CalledProcessError as e:
logging.error("Command '{}' returned non-zero exit status {}.".format(e.cmd, e.returncode))
logging.error("Error output:\n{}".format(e.output))
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
sys.exit(0)
RAN.LogCollecteNB()
elif re.match('^LogCollectHSS$', mode, re.IGNORECASE):
@@ -862,8 +850,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
success = CONTAINERS.Clean_Test_Server_Images(HTML)
if not success:
RAN.prematureExit = True
elif action == 'Create_Workspace':
CONTAINERS.Create_Workspace(HTML)
elif action == 'Deploy_Object':
CONTAINERS.DeployObject(HTML, EPC)
if CONTAINERS.exitStatus==1:
@@ -882,10 +868,20 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
RAN.prematureExit = True
elif action == 'Deploy_Run_PhySim':
PHYSIM.Deploy_PhySim(HTML, RAN)
elif action == 'DeployGenObject':
CONTAINERS.DeployGenObject(HTML, RAN, CiTestObj)
if CONTAINERS.exitStatus==1:
RAN.prematureExit = True
elif action == 'UndeployGenObject':
CONTAINERS.UndeployGenObject(HTML, RAN, CiTestObj)
if CONTAINERS.exitStatus==1:
RAN.prematureExit = True
elif action == 'IperfFromContainer':
CONTAINERS.IperfFromContainer(HTML, RAN, CiTestObj)
if CONTAINERS.exitStatus==1:
RAN.prematureExit = True
elif action == 'StatsFromGenObject':
CONTAINERS.StatsFromGenObject(HTML)
elif action == 'Push_Images_To_Test_Servers':
logging.debug('To be implemented')
else:

View File

@@ -4,6 +4,7 @@ To create graphs and pickle from runtime statistics in L1,MAC,RRC,PDCP files
import subprocess
import time
from datetime import datetime,timezone,timedelta
import shlex
import re
import sys
@@ -12,6 +13,7 @@ import matplotlib.pyplot as plt
import numpy as np
import yaml
import os
import copy
class StatMonitor():
@@ -20,28 +22,85 @@ class StatMonitor():
self.d = yaml.load(file)
for node in self.d:#so far we have enb or gnb as nodes
for metric_l1 in self.d[node]: #first level of metric keys
if metric_l1!="graph": #graph is a reserved word to configure graph paging, so it is disregarded
if metric_l1=="ue": #graph is a reserved word to configure graph paging, so it is disregarded
if self.d[node][metric_l1] is None:#first level is None -> create array
self.d[node][metric_l1]=[]
else: #first level is not None -> there is a second level -> create array
for metric_l2 in self.d[node][metric_l1]:
self.d[node][metric_l1][metric_l2]=[]
self.d[node]['rntis']={}
def process_gnb (self,node_type,output):
rnti='65535'
bp_enable = False
ts = time.gmtime(0) #Bad, but just creating a date
for line in output:
tmp=line.decode("utf-8")
result=re.match(r'^.*\bdlsch_rounds\b ([0-9]+)\/([0-9]+).*\bdlsch_errors\b ([0-9]+)',tmp)
result=re.match(r'^.*\bUE RNTI ([a-zA-Z0-9]+) CU-UE-ID',tmp)
if result is not None:
self.d[node_type]['dlsch_err'].append(int(result.group(3)))
percentage=float(result.group(2))/float(result.group(1))
self.d[node_type]['dlsch_err_perc_round_1'].append(percentage)
result=re.match(r'^.*\bulsch_rounds\b ([0-9]+)\/([0-9]+).*\bulsch_errors\b ([0-9]+)',tmp)
rnti=result.group(1)
if not rnti in self.d['gnb']['rntis']:
print("Found new RNTI: "+tmp)
self.d['gnb']['rntis'][rnti] = copy.deepcopy(self.d['gnb']['ue'])
#bp_enable = True
continue
if bp_enable:
print(tmp)
breakpoint()
result=re.match(r'^.*\bdlsch_rounds\b ([0-9]+)\/([0-9]+).*\bdlsch_errors\b ([0-9]+).*\bBLER\b ([0-9]+[.][0-9]+) \bMCS\b \([0-1]\) ([0-9]+)',tmp)
if result is not None:
self.d[node_type]['ulsch_err'].append(int(result.group(3)))
percentage=float(result.group(2))/float(result.group(1))
self.d[node_type]['ulsch_err_perc_round_1'].append(percentage)
self.d[node_type]['rntis'][rnti]['dlsch_err'].append(int(result.group(3)))
try:
percentage=100.0*float(result.group(2))/float(result.group(1))
except ZeroDivisionError:
percentage=0.0
self.d[node_type]['rntis'][rnti]['dlsch_err_perc_round_1'].append(percentage)
self.d[node_type]['rntis'][rnti]['dlbler'].append(float(result.group(4)))
self.d[node_type]['rntis'][rnti]['dlmcs'].append(int(result.group(5)))
result=re.match(r'^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{6}Z)',tmp)
if result is not None:
ts = datetime.strptime(result.group(1),'%Y-%m-%d %H:%M:%S.%fZ')
if sys.version_info[0] == 3 and sys.version_info[1] < 11:
ts = ts.replace(tzinfo=timezone.utc)
self.d[node_type]['rntis'][rnti]['timestamp'].append(ts)
continue
result=re.match(rf'^.*\b{rnti}\b: \bMAC\b.*\bTX\b +([0-9]+).*\bRX\b +([0-9]+)',tmp)
if result is not None:
if len(self.d[node_type]['rntis'][rnti]['dlsch_mbps']) == 0:
self.d[node_type]['rntis'][rnti]['dlsch_mbps'].append(0)
self.d[node_type]['rntis'][rnti]['ulsch_mbps'].append(0)
self.d[node_type]['rntis'][rnti]['dlsch_prev_bytes'].append(float(result.group(1)))
self.d[node_type]['rntis'][rnti]['ulsch_prev_bytes'].append(float(result.group(2)))
else :
prev = self.d[node_type]['rntis'][rnti]['dlsch_prev_bytes'].pop()
#8 bits per byte, 10^20 Bits per Mbps, subtract bler
times =self.d[node_type]['rntis'][rnti]['timestamp'][-2:]
#delta_t = times[1]-times[0]
delta_t = timedelta(milliseconds=1280)
delta = (float(result.group(1)) - prev)*2**3/2**20*(1.0- self.d[node_type]['rntis'][rnti]['dlbler'][-1])/delta_t.total_seconds()
self.d[node_type]['rntis'][rnti]['dlsch_mbps'].append(delta)
self.d[node_type]['rntis'][rnti]['dlsch_prev_bytes'].append(float(result.group(1)))
prev = self.d[node_type]['rntis'][rnti]['ulsch_prev_bytes'].pop()
#8 bites per byte, 10^20 bits per mbps, subtract bler
delta = (float(result.group(2)) - prev)*2**3/2**20*(1.0-self.d[node_type]['rntis'][rnti]['ulbler'][-1])/delta_t.total_seconds()
self.d[node_type]['rntis'][rnti]['ulsch_mbps'].append(delta)
self.d[node_type]['rntis'][rnti]['ulsch_prev_bytes'].append(float(result.group(2)))
continue
result=re.match(r'^.*\bulsch_rounds\b ([0-9]+)\/([0-9]+).*\bulsch_errors\b ([0-9]+).*\bBLER\b ([0-9]+[.][0-9]+) \bMCS\b \([0-1]\) ([0-9]+)',tmp)
if result is not None:
self.d[node_type]['rntis'][rnti]['ulsch_err'].append(int(result.group(3)))
try:
percentage=100.0*float(result.group(2))/float(result.group(1))
except ZeroDivisionError:
percentage=0.0
self.d[node_type]['rntis'][rnti]['ulsch_err_perc_round_1'].append(percentage)
self.d[node_type]['rntis'][rnti]['ulbler'].append(float(result.group(4)))
self.d[node_type]['rntis'][rnti]['ulmcs'].append(int(result.group(5)))
continue
for k in self.d[node_type]['rt']:
result=re.match(rf'^.*\b{k}\b:\s+([0-9\.]+) us;\s+([0-9]+);\s+([0-9\.]+) us;',tmp)
@@ -61,18 +120,14 @@ class StatMonitor():
def collect(self,testcase_id,node_type):
if node_type=='enb':
files = ["L1_stats.log", "MAC_stats.log", "PDCP_stats.log", "RRC_stats.log"]
else: #'gnb'
files = ["nrL1_stats.log", "nrMAC_stats.log", "nrPDCP_stats.log", "nrRRC_stats.log"]
#append each file's contents to another file (prepended with CI-) for debug
for f in files:
for f in self.d[node_type]['files']:
if os.path.isfile(f):
cmd = 'cat '+ f + ' >> CI-'+testcase_id+'-'+f
subprocess.Popen(cmd,shell=True)
#join the files for further processing
cmd='cat '
for f in files:
for f in self.d[node_type]['files']:
if os.path.isfile(f):
cmd += f+' '
process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
@@ -86,34 +141,54 @@ class StatMonitor():
def graph(self,testcase_id, node_type):
for page in self.d[node_type]['graph']:#work out a set a graphs per page
col = 1
figure, axis = plt.subplots(len(self.d[node_type]['graph'][page]), col ,figsize=(10, 10))
figure, axis = plt.subplots(len(self.d[node_type]['graph'][page]), col ,figsize=(10, 10), sharex=True)
i=0
for m in self.d[node_type]['graph'][page]:#metric may refer to 1 level or 2 levels
metric_path=m.split('.')
if len(metric_path)==1:#1 level
metric_l1=metric_path[0]
major_ticks = np.arange(0, len(self.d[node_type][metric_l1])+1, 1)
axis[i].set_xticks(major_ticks)
axis[i].set_xticklabels([])
axis[i].plot(self.d[node_type][metric_l1],marker='o')
axis[i].set_xlabel('time')
axis[i].set_ylabel(metric_l1)
axis[i].set_title(metric_l1)
else:#2 levels
metric_l1=metric_path[0]
metric_l2=metric_path[1]
major_ticks = np.arange(0, len(self.d[node_type][metric_l1][metric_l2])+1, 1)
axis[i].set_xticks(major_ticks)
axis[i].set_xticklabels([])
axis[i].plot(self.d[node_type][metric_l1][metric_l2],marker='o')
axis[i].set_xlabel('time')
axis[i].set_ylabel(metric_l2)
axis[i].set_title(metric_l2)
metric_l1=metric_path[0]
if metric_path[0]=='ue':
metric_l2=metric_path[1]
major_ticks = np.arange(0, 10, 1)
for rnti in self.d[node_type]['rntis']:
tput = ''
if 'mbps' in metric_l2:
n = self.d[node_type]['test_params']['duration']
top_n = (sorted(self.d[node_type]['rntis'][rnti][metric_l2])[-n:])
tput = str(round(sum(top_n)/n,1))
tput = ' '+tput+' Mbps'
axis[i].plot(self.d[node_type]['rntis'][rnti][metric_l2],label=rnti+tput)
major_ticks = np.arange(0, len(self.d[node_type]['rntis'][rnti][metric_l2])+1, 1)
axis[i].set_xticks(major_ticks)
axis[i].set_xticklabels([])
axis[i].grid(axis='y')
axis[i].legend(loc='center left')
axis[i].set_xlabel('time (s)')
axis[i].set_ylabel(metric_l2)
else:
if len(metric_path)==1:#1 level
major_ticks = np.arange(0, len(self.d[node_type][metric_l1])+1, 1)
axis[i].set_xticks(major_ticks)
axis[i].set_xticklabels([])
axis[i].plot(self.d[node_type][metric_l1],marker='o')
axis[i].set_xlabel('time')
axis[i].set_ylabel(metric_l1)
axis[i].set_title(metric_l1)
else:#2 levels
metric_l2=metric_path[1]
major_ticks = np.arange(0, len(self.d[node_type][metric_l1][metric_l2])+1, 1)
axis[i].set_xticks(major_ticks)
axis[i].set_xticklabels([])
axis[i].plot(self.d[node_type][metric_l1][metric_l2],marker='o')
axis[i].set_xlabel('time')
axis[i].set_ylabel(metric_l2)
axis[i].set_title(metric_l2)
i+=1
plt.tight_layout()
#save as png
#plt.show()
plt.savefig(node_type+'_stats_monitor_'+testcase_id+'_'+page+'.png')
@@ -128,11 +203,13 @@ if __name__ == "__main__":
CMD='ps aux | grep modem | grep -v grep'
process=subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE)
output = process.stdout.readlines()
while len(output)!=0 :
while True:
mon.collect(testcase_id,node)
process=subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE)
output = process.stdout.readlines()
time.sleep(1)
if len(output)==0 :
break;
print('Process stopped')
with open(node+'_stats_monitor.pickle', 'wb') as handle:
pickle.dump(mon.d, handle, protocol=pickle.HIGHEST_PROTOCOL)

View File

@@ -1,4 +1,7 @@
enb :
files: ["L1_stats.log", "MAC_stats.log", "PDCP_stats.log", "RRC_stats.log"]
test_params:
duration: 10 #Number of samples to average over for throughput
PHR:
bler:
mcsoff:
@@ -11,10 +14,25 @@ enb :
mcs:
gnb :
dlsch_err:
dlsch_err_perc_round_1:
ulsch_err:
ulsch_err_perc_round_1:
#files: ["nrL1_stats.log", "nrMAC_stats.log", "nrPDCP_stats.log", "nrRRC_stats.log"]
files: ["oai.log"]
test_params:
duration: 10 #Number of samples to average over for throughput
ue :
timestamp:
dlsch_bler:
dlsch_mbps:
dlsch_prev_bytes:
dlmcs:
dlbler:
dlsch_err:
dlsch_err_perc_round_1:
ulmcs:
ulbler:
ulsch_mbps:
ulsch_prev_bytes:
ulsch_err:
ulsch_err_perc_round_1:
rt :
feprx:
feptx_prec:
@@ -29,10 +47,14 @@ gnb :
Slot Indication:
graph :
page1:
dlsch_err:
dlsch_err_perc_round_1:
ulsch_err:
ulsch_err_perc_round_1:
ue.dlsch_mbps:
#ue.dlsch_err:
ue.dlmcs:
ue.dlsch_err_perc_round_1:
ue.ulsch_mbps:
ue.ulmcs:
#ue.ulsch_err:
ue.ulsch_err_perc_round_1:
page2:
rt.feprx:
rt.feptx_prec:

View File

@@ -48,4 +48,3 @@
- Pull_Local_Registry
- Clean_Test_Server_Images
- Custom_Command
- Create_Workspace

View File

@@ -24,15 +24,9 @@
<htmlTabRef>build-tab</htmlTabRef>
<htmlTabName>Build Images on Cluster</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
000002
000001
</TestCaseRequestedList>
<TestCaseRequestedList>000001</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000002">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
</testCase>
<testCase id="000001">
<class>Build_Cluster_Image</class>
<desc>Build Images on OpenShift Cluster</desc>

View File

@@ -26,16 +26,10 @@
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100001">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>1</eNB_instance>
<eNB_serverId>1</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Build_Proxy</class>
<desc>Build L2sim Proxy Image</desc>

View File

@@ -27,16 +27,18 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000000
000001
000002
000003
000004
200000
020001
020002
030011
030012
200001
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
@@ -47,60 +49,49 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000000">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>cassandra db_init</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB L2 sim</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>oai_enb</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000003">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI L2 sim 4G LTE-UE 1 and Proxy</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>proxy oai_ue1</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>10</nb_healthy>
</testCase>
<testCase id="000004">
<class>Attach_UE</class>
<desc>Attach OAI UE</desc>
<id>l2sim4g_ue</id>
<nodes>obelix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping trf-gen from LTE-UE 1</desc>
<id>l2sim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 192.168.61.11</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -109,7 +100,6 @@
<class>Ping</class>
<desc>Ping LTE-UE 1 from trf-gen</desc>
<id>l2sim4g_ext_dn</id>
<nodes>obelix</nodes>
<ping_args>-c 20 12.0.0.2</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -118,9 +108,7 @@
<class>Iperf</class>
<desc>Iperf UDP Downlink</desc>
<id>l2sim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>l2sim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 1M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -130,18 +118,28 @@
<class>Iperf</class>
<desc>Iperf UDP Uplink</desc>
<id>l2sim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>l2sim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 3M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="200000">
<class>StatsFromGenObject</class>
<desc>Statistics before Traffic Test</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="200001">
<class>StatsFromGenObject</class>
<desc>Statistics after Traffic Test</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000011
000001
000012
@@ -42,12 +42,7 @@
100011
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="111111">
<class>Pull_Local_Registry</class>
<desc>Pull Images from Local Registry</desc>
@@ -56,12 +51,11 @@
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<services>cassandra db_init</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
@@ -77,44 +71,39 @@
</testCase>
<testCase id="000012">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (FDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>9</nb_healthy>
</testCase>
<testCase id="000015">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 192.168.61.11</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -124,7 +113,6 @@
<desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id>
<ping_args>-c 20 12.0.0.2</ping_args>
<nodes>obelix</nodes>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -136,8 +124,6 @@
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<nodes>obelix</nodes>
<svr_node>obelix</svr_node>
</testCase>
<testCase id="030011">
@@ -148,16 +134,12 @@
<iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<nodes>obelix</nodes>
<svr_node>obelix</svr_node>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000013
000002
000014
@@ -45,12 +45,7 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>IdleSleep</class>
<desc>Sleep</desc>
@@ -64,28 +59,25 @@
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (FDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 10.0.1.1</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -94,7 +86,6 @@
<class>Ping</class>
<desc>Ping LTE-UE from eNB</desc>
<id>rfsim4g_enb_nos1</id>
<nodes>obelix</nodes>
<ping_args> -c 20 10.0.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -103,9 +94,7 @@
<class>Iperf</class>
<desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -115,20 +104,16 @@
<class>Iperf</class>
<desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000011
000001
000012
@@ -49,19 +49,13 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<services>cassandra db_init</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
@@ -77,44 +71,39 @@
</testCase>
<testCase id="000012">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (FDD 10MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 10MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>9</nb_healthy>
</testCase>
<testCase id="000015">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 192.168.61.11</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -123,7 +112,6 @@
<class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id>
<nodes>obelix</nodes>
<ping_args>-c 20 12.0.0.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -132,9 +120,7 @@
<class>Iperf</class>
<desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -144,20 +130,16 @@
<class>Iperf</class>
<desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000011
000001
000012
@@ -49,19 +49,13 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<services>cassandra db_init</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
@@ -77,44 +71,39 @@
</testCase>
<testCase id="000012">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (FDD 20MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 20MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>9</nb_healthy>
</testCase>
<testCase id="000015">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 192.168.61.11</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -123,7 +112,6 @@
<class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id>
<nodes>obelix</nodes>
<ping_args>-c 20 12.0.0.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -132,9 +120,7 @@
<class>Iperf</class>
<desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -144,20 +130,16 @@
<class>Iperf</class>
<desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000013
000002
000014
@@ -42,12 +42,7 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>IdleSleep</class>
<desc>Sleep</desc>
@@ -61,41 +56,35 @@
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (FeMBMS)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (FeMBMS)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="030011">
<class>Iperf2_Unidir</class>
<desc>Iperf2 UDP DL</desc>
<id>rfsim4g_ue_fembms</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_enb_fembms</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100011
000013
000002
000014
@@ -42,12 +42,7 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>IdleSleep</class>
<desc>Sleep</desc>
@@ -61,41 +56,35 @@
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (MBMS)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (MBMS)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="030011">
<class>Iperf</class>
<desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_enb_nos1</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100011
000011
000001
000012
@@ -50,19 +50,13 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<services>cassandra db_init</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
@@ -78,37 +72,33 @@
</testCase>
<testCase id="000012">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<services>oai_hss oai_mme oai_spgwc oai_spgwu trf_gen</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>6</nb_healthy>
</testCase>
<testCase id="000013">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB RF sim (TDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<services>oai_enb0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000014">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 4G LTE-UE RF sim (TDD 05MHz)</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<services>oai_ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping Traffic-Gen from LTE-UE</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<ping_args> -c 20 192.168.61.11</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -117,7 +107,6 @@
<class>Ping</class>
<desc>Ping LTE-UE from Traffic-Gen</desc>
<id>rfsim4g_ext_dn</id>
<nodes>obelix</nodes>
<ping_args>-c 20 12.0.0.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -126,9 +115,7 @@
<class>Iperf</class>
<desc>Iperf UDP DL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
@@ -138,20 +125,16 @@
<class>Iperf</class>
<desc>Iperf UDP UL</desc>
<id>rfsim4g_ue</id>
<nodes>obelix</nodes>
<svr_id>rfsim4g_ext_dn</svr_id>
<svr_node>obelix</svr_node>
<iperf_args>-u -t 30 -b 1M</iperf_args>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100021
000021
000022
000023
@@ -42,63 +42,51 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb oai-nr-cuup oai-nr-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000021">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>mysql oai-amf oai-smf oai-upf</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>4</nb_healthy>
</testCase>
<testCase id="000022">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G RAN RF sim SA (1 CU-CP, 3 CU-UPs, 3 DUs)</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-cucp oai-cuup oai-cuup2 oai-cuup3 oai-du oai-du2 oai-du3</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>11</nb_healthy>
</testCase>
<testCase id="000023">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-nr-ue oai-nr-ue2 oai-nr-ue3</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>14</nb_healthy>
</testCase>
<testCase id="000024">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
<nodes>cacofonix cacofonix cacofonix</nodes>
</testCase>
<testCase id="020021">
<class>Ping</class>
<desc>Ping ext-dn from all NR-UEs</desc>
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
<nodes>cacofonix cacofonix cacofonix</nodes>
<ping_args> -c 20 12.1.1.1 -i0.25</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="100021">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100022">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,7 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
100021
000021
000022
000023
@@ -44,42 +44,33 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000021">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000022">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CU+DU+UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
<services>oai-cu oai-du oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000023">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
</testCase>
<testCase id="020021">
<class>Ping</class>
<desc>Ping ext-dn from all NR-UEs</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args> -c 20 192.168.72.135 -i0.25</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -87,7 +78,7 @@
<testCase id="030020">
<class>Custom_Command</class>
<desc>Simulate a DL radio channel with noise (3 dB)</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>echo channelmod modify 0 noise_power_dB 3 | nc --send-only 192.168.71.181 8091</command>
<command_fail>yes</command_fail>
</testCase>
@@ -95,11 +86,9 @@
<testCase id="030021">
<class>Iperf</class>
<desc>Iperf (DL/5Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 5M -t 20 -R</iperf_args>
<iperf_args>-u -b 5M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -107,11 +96,9 @@
<testCase id="030022">
<class>Iperf</class>
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 20</iperf_args>
<iperf_args>-u -b 3M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -119,7 +106,7 @@
<testCase id="040021">
<class>Custom_Command</class>
<desc>Simulate a disruption of DL radio channel (ploss 55)(5 sec)</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>echo channelmod modify 0 ploss 55 | nc -N 192.168.71.181 8091 &amp;&amp; sleep 5</command>
<command_fail>yes</command_fail>
</testCase>
@@ -127,7 +114,7 @@
<testCase id="040022">
<class>Custom_Command</class>
<desc>Get UE sync state (UE ID 0)</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>echo ciUE sync_state 0 | nc -N 192.168.71.181 8091 | grep -E UE_NOT_SYNC</command>
<command_fail>yes</command_fail>
</testCase>
@@ -135,7 +122,7 @@
<testCase id="040023">
<class>Custom_Command</class>
<desc>Restoration of the original DL channel conditions (ploss 0)(5 sec)</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>echo channelmod modify 0 ploss 0 | nc -N 192.168.71.181 8091 &amp;&amp; sleep 5</command>
<command_fail>yes</command_fail>
</testCase>
@@ -143,19 +130,17 @@
<testCase id="040024">
<class>Custom_Command</class>
<desc>Get UE sync state (UE ID 0)</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>echo ciUE sync_state 0 | nc -N 192.168.71.181 8091 | grep -E UE_CONNECTED &amp;&amp; sleep 10</command>
<command_fail>yes</command_fail>
</testCase>
<testCase id="100021">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
<d_retx_th>30,30,100,100</d_retx_th>
<u_retx_th>30,30,100,100</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100022">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100011
000011
000012
000013
@@ -45,43 +45,34 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000012">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB+UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
<services>oai-gnb oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000013">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -89,8 +80,7 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -99,9 +89,7 @@
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -111,21 +99,17 @@
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100012">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,14 +27,16 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000000
000001
000002
000003
000004
200000
020001
020002
200001
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
@@ -45,60 +47,49 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000000">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy MySql Database</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>mysql</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB L2 sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>oai-gnb</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>6</nb_healthy>
</testCase>
<testCase id="000003">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE L2 sim SA and Proxy</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>proxy oai-nr-ue0</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000004">
<class>Attach_UE</class>
<desc>Attach OAI UE</desc>
<id>l2sim5g_ue</id>
<nodes>localhost</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>l2sim5g_ue</id>
<nodes>localhost</nodes>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -107,19 +98,28 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>l2sim5g_ext_dn</id>
<nodes>localhost</nodes>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<d_retx_th>20,50,100,100</d_retx_th>
<u_retx_th>0,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="200000">
<class>StatsFromGenObject</class>
<desc>Statistics before Traffic Test</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
<testCase id="200001">
<class>StatsFromGenObject</class>
<desc>Statistics after Traffic Test</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000001
000002
000003
@@ -60,88 +60,74 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-gnb</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>6</nb_healthy>
</testCase>
<testCase id="000003">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000004">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy Second OAI 5G NR-UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-nr-ue2</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000005">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UEs (#3, #4, #5) RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-nr-ue3 oai-nr-ue4 oai-nr-ue5</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>11</nb_healthy>
</testCase>
<testCase id="000006">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UEs (#6, #7, #8) RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-nr-ue6 oai-nr-ue7 oai-nr-ue8</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>14</nb_healthy>
</testCase>
<testCase id="000007">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UEs (#9, #10) RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<services>oai-nr-ue9 oai-nr-ue10</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>16</nb_healthy>
</testCase>
<testCase id="000008">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args> -c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -149,8 +135,7 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -158,8 +143,7 @@
<class>Ping</class>
<desc>Ping ext-dn from Second NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args> -c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -167,8 +151,7 @@
<class>Ping</class>
<desc>Ping Second NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.3</ping_args>
<ping_args>-c 20 12.1.1.3</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -176,8 +159,7 @@
<class>Ping</class>
<desc>Ping ext-dn from both UEs</desc>
<id>rfsim5g_ue rfsim5g_ue2</id>
<nodes>cacofonix cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args>-c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -185,8 +167,7 @@
<class>Ping</class>
<desc>Ping ext-dn from both UEs</desc>
<id>rfsim5g_ue rfsim5g_ue2</id>
<nodes>cacofonix cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args>-c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -194,19 +175,16 @@
<class>Ping</class>
<desc>Ping ext-dn from all UEs</desc>
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
<ping_args>-c 20 192.168.72.135 -i 0.25 -s 1016</ping_args>
<ping_args>-c 100 192.168.72.135 -i 0.2 -s 1016</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="030001">
<class>Iperf</class>
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -214,11 +192,9 @@
<testCase id="030002">
<class>Iperf</class>
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 1M -t 20</iperf_args>
<iperf_args>-u -b 1M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -227,31 +203,26 @@
<class>Attach_UE</class>
<desc>Attach OAI UE 1 and 2</desc>
<id>rfsim5g_ue rfsim5g_ue2</id>
<nodes>cacofonix cacofonix</nodes>
</testCase>
<testCase id="444444">
<class>Detach_UE</class>
<desc>Detach OAI UE 1 and 2</desc>
<id>rfsim5g_ue rfsim5g_ue2</id>
<nodes>cacofonix cacofonix</nodes>
</testCase>
<testCase id="444445">
<class>Detach_UE</class>
<desc>Detach OAI UE 2 to 10</desc>
<id>rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000001
000002
000003
@@ -45,42 +45,33 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB+UE RFsim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
<services>oai-gnb oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000003">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args> -c 20 -i0.2 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -89,7 +80,6 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 12.1.1.2 -i0.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -97,11 +87,9 @@
<testCase id="030001">
<class>Iperf</class>
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -109,23 +97,19 @@
<testCase id="030002">
<class>Iperf</class>
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 1M -t 20</iperf_args>
<iperf_args>-u -b 1M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000001
000002
000003
@@ -45,43 +45,34 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB+UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
<services>oai-gnb oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000003">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -89,41 +80,34 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="030001">
<class>Iperf</class>
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 10M -t 20 -R</iperf_args>
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</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 4M -t 20</iperf_args>
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 1M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
</testCase>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -26,7 +26,6 @@
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
111111
800813
000020
000021
020021
@@ -41,43 +40,33 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb oai-nr-ue</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000020">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI-DU+nrUE</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
<services>oai-du oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="000021">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>ofqot</nodes>
</testCase>
<testCase id="020021">
<class>Ping</class>
<desc>Test Connectivity (ping)</desc>
<id>rfsim5g_ue</id>
<nodes>ofqot</nodes>
<ping_args>-c 20 12.1.1.1</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
<testCase id="100022">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100022">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100011
004000
000010
000011
@@ -49,38 +49,30 @@
<testCase id="004000">
<class>Custom_Command</class>
<desc>Clean-Up any residual volume</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config -f</command>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000010">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<services>oai-gnb</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000011">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<services>oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="020011">
<class>Ping</class>
<desc>Ping gNB from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c20 -i0.2 10.0.1.1</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -89,7 +81,6 @@
<class>Ping</class>
<desc>Ping NR-UE from gNB</desc>
<id>rfsim5g_gnb_nos1</id>
<nodes>cacofonix</nodes>
<ping_args>-c20 -i0.2 10.0.1.2</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -97,11 +88,9 @@
<testCase id="030011">
<class>Iperf</class>
<desc>Iperf (DL/30kbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 0.03M -t 20 -R -c 10.0.1.1</iperf_args>
<iperf_args>-u -b 0.03M -t 30 -R -c 10.0.1.1</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_gnb_nos1</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -109,23 +98,19 @@
<testCase id="030012">
<class>Iperf</class>
<desc>Iperf (UL/30kbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 0.03M -t 20 -c 10.0.1.1</iperf_args>
<iperf_args>-u -b 0.03M -t 30 -c 10.0.1.1</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_gnb_nos1</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
<testCase id="100011">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<d_retx_th>10,100,100,100</d_retx_th> <!-- phytest: will fail at start! -->
<u_retx_th>10,100,100,100</u_retx_th> <!-- phytest: will fail at start! -->
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -32,17 +32,15 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100012">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
</testCase>
<testCase id="004000">
<class>Custom_Command</class>
<desc>Clean-Up any residual volume</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config</command>
</testCase>

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000000
000001
020001
@@ -43,36 +43,26 @@
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000000">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI gNB</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI NR-UE</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<services>oai-gnb oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i0.2 192.168.72.135</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -81,19 +71,16 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 12.1.1.2 -i0.2</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<d_retx_th>10,0,0,0</d_retx_th>
<u_retx_th>10,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -1,105 +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-ntn-geo</htmlTabRef>
<htmlTabName>Monolithic SA NTN GEO gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
100001
800813
000001
000002
000003
020001
020002
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="111111">
<class>Pull_Local_Registry</class>
<desc>Pull Images from Local Registry</desc>
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating 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_ntn_geo</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 gNB+nrUE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
<services>oai-gnb 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>cacofonix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="020002">
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -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
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-ntn-geo-down</htmlTabRef>
<htmlTabName>CleanUp SA Monolithic NTN GEO gNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>

View File

@@ -1,95 +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-sidelink</htmlTabRef>
<htmlTabName>Sidelink test</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
000002
000003
000004
000005
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="111111">
<class>Pull_Local_Registry</class>
<desc>Pull Images from Local Registry</desc>
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<desc>Deploy OAI 5G UE 1</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_sidelink</yaml_path>
<services>oai-nr-ue-1</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000003">
<class>Deploy_Object</class>
<desc>Deploy OAI 5G UE 2</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_sidelink</yaml_path>
<services>oai-nr-ue-2</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000004">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
</testCase>
<testCase id="000005">
<class>Custom_Command</class>
<desc>Check that UE synched</desc>
<node>cacofonix</node>
<command>docker logs rfsim5g-oai-nr-ue-2 | grep -m 1 "PSBCH RX:OK"</command>
<command_fail>yes</command_fail>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_sidelink</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -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
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-sidelink-down</htmlTabRef>
<htmlTabName>CleanUp sidelink test</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_sidelink</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
004000
000000
000001
@@ -47,38 +47,30 @@
<testCase id="004000">
<class>Custom_Command</class>
<desc>Clean-Up any residual volume</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>docker volume rm 5g_rfsimulator_tdd_dora_rrc.config -f</command>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000000">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI gNB</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<services>oai-gnb</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI NR-UE</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<services>oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>2</nb_healthy>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping gNB from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c20 -i0.2 10.0.1.1</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
@@ -87,19 +79,16 @@
<class>Ping</class>
<desc>Ping NR-UE from gNB</desc>
<id>rfsim5g_gnb_nos1</id>
<nodes>cacofonix</nodes>
<ping_args>-c20 -i0.2 10.0.1.2</ping_args>
<ping_packetloss_threshold>0</ping_packetloss_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<d_retx_th>0,0,0,0</d_retx_th>
<u_retx_th>0,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -32,17 +32,15 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
</testCase>
<testCase id="004000">
<class>Custom_Command</class>
<desc>Clean-Up any residual volume</desc>
<node>cacofonix</node>
<node>localhost</node>
<command>docker volume rm 5g_rfsimulator_tdd_dora_rrc.config</command>
</testCase>

View File

@@ -27,7 +27,7 @@
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
100001
000001
000002
000003
@@ -45,43 +45,34 @@
<test_svr_id>0</test_svr_id>
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>5</nb_healthy>
</testCase>
<testCase id="000002">
<class>Deploy_Object</class>
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB+nrUE RF sim SA</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<services>oai-gnb oai-nr-ue</services>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000003">
<class>Attach_UE</class>
<desc>Attach OAI UE (Wait for IP)</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
</testCase>
<testCase id="020001">
<class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
<ping_args> -c 20 192.168.72.135</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
@@ -89,19 +80,16 @@
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<nodes>cacofonix</nodes>
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="030001">
<class>Iperf</class>
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
@@ -109,23 +97,19 @@
<testCase id="030002">
<class>Iperf</class>
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
<iperf_args>-u -b 1M -t 20</iperf_args>
<iperf_args>-u -b 1M -t 30</iperf_args>
<id>rfsim5g_ue</id>
<nodes>cacofonix</nodes>
<svr_id>rfsim5g_ext_dn</svr_id>
<svr_node>cacofonix</svr_node>
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
</testCase>
<testCase id="100001">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<yaml_path>yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
<u_retx_th>1,0,0,0</u_retx_th>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
</testCaseList>

View File

@@ -31,11 +31,9 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<yaml_path>yaml_files/5g_rfsimulator_u0_25prb</yaml_path>
</testCase>
<testCase id="222222">

View File

@@ -25,18 +25,11 @@
<htmlTabName>Build Container Images</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
800813
000001
000010
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace for server 0</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Build_Image</class>
<desc>Build all Images</desc>

View File

@@ -25,16 +25,10 @@
<htmlTabName>Build Container Images</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
100001
000001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100001">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Build_Image</class>
<desc>Cross-Compile for ARM64</desc>

View File

@@ -26,17 +26,10 @@
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100001">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<eNB_instance>1</eNB_instance>
<eNB_serverId>1</eNB_serverId>
</testCase>
<testCase id="000001">
<class>Build_Proxy</class>
<desc>Build L2sim Proxy Image</desc>

View File

@@ -31,7 +31,6 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
111110
300000
040101
800813
030101
040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201
030201
@@ -64,12 +63,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
<node>hutch</node>
<command>sudo -S b2xx_fx3_utils --reset-device</command>
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace for server 0</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="030101">
<class>Deploy_Object</class>
<desc>Deploy eNB (FDD/Band7/5MHz/B200) in a container</desc>

Some files were not shown because too many files have changed in this diff Show More