mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-14 13:10:28 +00:00
Compare commits
378 Commits
oru
...
mkdocs-tes
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
769546da5b | ||
|
|
677a722c87 | ||
|
|
d3ec7ea36a | ||
|
|
94a1ef2b90 | ||
|
|
df2cde5703 | ||
|
|
d925356324 | ||
|
|
719a3a5ed9 | ||
|
|
c6df8ac1dc | ||
|
|
0678ae728f | ||
|
|
78bc648380 | ||
|
|
ef7c312dd3 | ||
|
|
4ba2579ba3 | ||
|
|
374847c9fd | ||
|
|
da249c570d | ||
|
|
c1e83c5d89 | ||
|
|
8a815c5c25 | ||
|
|
b34859cf1e | ||
|
|
ae8037debc | ||
|
|
fe0ddb8dc7 | ||
|
|
59e5cb3972 | ||
|
|
cd663b24c9 | ||
|
|
e679a59daf | ||
|
|
e0b3344786 | ||
|
|
ba292c3255 | ||
|
|
7d4e3b8174 | ||
|
|
780c5ccb00 | ||
|
|
4983b183dc | ||
|
|
bd7091f14b | ||
|
|
3d901b1fca | ||
|
|
8b707d3ac2 | ||
|
|
e7df281ce3 | ||
|
|
b27ec416b5 | ||
|
|
9fe0d88381 | ||
|
|
8e4ac67729 | ||
|
|
aa80814dd0 | ||
|
|
e678ef2033 | ||
|
|
d398b7b324 | ||
|
|
230cd3cbae | ||
|
|
47bffaa01a | ||
|
|
1d2c3bcaca | ||
|
|
3928ccf61a | ||
|
|
8c2cb84b41 | ||
|
|
7e76255f8f | ||
|
|
d9bd51f4b3 | ||
|
|
bb85696f48 | ||
|
|
55a56002de | ||
|
|
97185a6921 | ||
|
|
5047bacd6d | ||
|
|
7eb33a4003 | ||
|
|
3e5681abbd | ||
|
|
8fcea7c314 | ||
|
|
23e0f50af0 | ||
|
|
2dd72d40cb | ||
|
|
e7a45a304b | ||
|
|
2d2f61f253 | ||
|
|
aa323b02f2 | ||
|
|
0721c0fad0 | ||
|
|
25918898a7 | ||
|
|
acd3634d27 | ||
|
|
a0d8baf323 | ||
|
|
2ea4cbbd93 | ||
|
|
8348f83a1f | ||
|
|
5adfeb80c3 | ||
|
|
2dde472cfd | ||
|
|
7935c19d21 | ||
|
|
6193d7c7f4 | ||
|
|
dcb10ffc94 | ||
|
|
dcd7ee711b | ||
|
|
4aafd1e369 | ||
|
|
9d9f272e74 | ||
|
|
205bf7c993 | ||
|
|
1fc057cb08 | ||
|
|
c6a06dc81f | ||
|
|
0cbed89b03 | ||
|
|
3e8354727e | ||
|
|
c2e8743a7b | ||
|
|
feea066c3f | ||
|
|
5e3b4c497c | ||
|
|
7c82312b6d | ||
|
|
3277018fce | ||
|
|
915c41c127 | ||
|
|
487de67ff8 | ||
|
|
59803e221f | ||
|
|
1357158722 | ||
|
|
de07668b0b | ||
|
|
235493aa07 | ||
|
|
524a3ddf85 | ||
|
|
12d92bc836 | ||
|
|
a38aa1bab8 | ||
|
|
b4485ecea2 | ||
|
|
fd50ff43cc | ||
|
|
59ff9ae04e | ||
|
|
83bf140bc3 | ||
|
|
b2174cb8e1 | ||
|
|
8de13fab97 | ||
|
|
ac76c6e27a | ||
|
|
b69b65ba66 | ||
|
|
1c5af6065c | ||
|
|
63397ac592 | ||
|
|
3f9dcee5fa | ||
|
|
7d70617a01 | ||
|
|
e7c4b9c4cb | ||
|
|
d6f0b5a9d7 | ||
|
|
afebd033f6 | ||
|
|
6e424af56b | ||
|
|
1e61c2ccb4 | ||
|
|
0fb8a09b86 | ||
|
|
4b6c18b1dd | ||
|
|
60ab0a89a2 | ||
|
|
2ff949a16f | ||
|
|
4876533e9c | ||
|
|
cdbfaf835e | ||
|
|
1e476735ea | ||
|
|
1b81c4b09c | ||
|
|
5716d95e97 | ||
|
|
eea7be3977 | ||
|
|
19813283fb | ||
|
|
2a5ed87589 | ||
|
|
1ecb03f5f8 | ||
|
|
2889e55cd8 | ||
|
|
197705f232 | ||
|
|
fd37fba9b7 | ||
|
|
66c3b7d192 | ||
|
|
eef092c318 | ||
|
|
72371ba10b | ||
|
|
46ed4ac36d | ||
|
|
4177c6d182 | ||
|
|
cc094ac737 | ||
|
|
cede449907 | ||
|
|
a68168805b | ||
|
|
1a5e2598a3 | ||
|
|
d6c29b2d2c | ||
|
|
a31838acd7 | ||
|
|
ba3a0d2100 | ||
|
|
124debc2c7 | ||
|
|
03d4ce2e1e | ||
|
|
b43dee1499 | ||
|
|
5f3a19cb7d | ||
|
|
ceda9c1141 | ||
|
|
8222fa27e5 | ||
|
|
a64038658f | ||
|
|
41b33e9124 | ||
|
|
e535fbe6a7 | ||
|
|
50760c04a7 | ||
|
|
8dcd253e60 | ||
|
|
a7257eaff1 | ||
|
|
5e5f79e993 | ||
|
|
d10fa9f664 | ||
|
|
912463f752 | ||
|
|
252b19cddb | ||
|
|
b2fce659e8 | ||
|
|
ada7eb8b2a | ||
|
|
acb6f05a6d | ||
|
|
d5bf702f10 | ||
|
|
2d70cec6dd | ||
|
|
08812063da | ||
|
|
e6d8d6a072 | ||
|
|
c99f836ad4 | ||
|
|
9bf79cd2c9 | ||
|
|
6ed08f1527 | ||
|
|
50923823c0 | ||
|
|
7254e59df9 | ||
|
|
1711b1b4b8 | ||
|
|
45d989ec7b | ||
|
|
7fa0ebb6b9 | ||
|
|
f15af77297 | ||
|
|
5bcc9b9e5e | ||
|
|
e4a910f0bb | ||
|
|
bd41e8f883 | ||
|
|
ae1de1aeaa | ||
|
|
42a9f2f08f | ||
|
|
9a4fd1bf76 | ||
|
|
609700207f | ||
|
|
7907b80a35 | ||
|
|
8885d3912a | ||
|
|
69f0bb2b96 | ||
|
|
7e1eabe700 | ||
|
|
7e01d5a0e0 | ||
|
|
ccad50daca | ||
|
|
25f2f1fe46 | ||
|
|
966bab9cca | ||
|
|
e6da57e2b6 | ||
|
|
98948586c2 | ||
|
|
75c8e96142 | ||
|
|
7083e08175 | ||
|
|
06914f3dde | ||
|
|
311a857cb3 | ||
|
|
a71a813a7c | ||
|
|
d38ce7c1c9 | ||
|
|
a43fbe1bac | ||
|
|
5c16758386 | ||
|
|
272be719dd | ||
|
|
ca7fadfe07 | ||
|
|
df9c41f364 | ||
|
|
5903806d2e | ||
|
|
b462fa45e8 | ||
|
|
e5ea77f629 | ||
|
|
fc4bd2e20c | ||
|
|
32c81b7b06 | ||
|
|
84c51802da | ||
|
|
52af5e5642 | ||
|
|
e82bb5cb6d | ||
|
|
614b6a0eef | ||
|
|
740e9c5c9c | ||
|
|
607d8a0bc2 | ||
|
|
b03d8abd03 | ||
|
|
870b25e95d | ||
|
|
c9756c26ec | ||
|
|
8051b5d14a | ||
|
|
38995aff5d | ||
|
|
47554f89ce | ||
|
|
72bfd1b5c3 | ||
|
|
7227cfb320 | ||
|
|
f9f6e96d6b | ||
|
|
ef5191b610 | ||
|
|
8927032fd2 | ||
|
|
85f586c76d | ||
|
|
4facb4d635 | ||
|
|
a82353f42a | ||
|
|
badb0c561a | ||
|
|
44e4ebc4e2 | ||
|
|
fc5e3ce61d | ||
|
|
e96d7f9576 | ||
|
|
e527b99de1 | ||
|
|
bc9c59f186 | ||
|
|
1015c1f5f0 | ||
|
|
5227becf89 | ||
|
|
cb68d817f0 | ||
|
|
984c0bff0f | ||
|
|
28f926607e | ||
|
|
e611d092e9 | ||
|
|
f66524879d | ||
|
|
6fd02ee7e8 | ||
|
|
fa75484e13 | ||
|
|
461cfb7911 | ||
|
|
92abefb815 | ||
|
|
6e4f1b7b31 | ||
|
|
20e534d483 | ||
|
|
cfb654e77f | ||
|
|
ff5b2bc8b2 | ||
|
|
2f4f177050 | ||
|
|
26698d4f07 | ||
|
|
25380e8075 | ||
|
|
98462c20ba | ||
|
|
7a02456883 | ||
|
|
8c78ef5b94 | ||
|
|
a1175f7f61 | ||
|
|
95dfb67e51 | ||
|
|
44729d5765 | ||
|
|
8045dc71e0 | ||
|
|
1ea90fc987 | ||
|
|
f691b7f9e4 | ||
|
|
e5413dcb2d | ||
|
|
44fa1c2244 | ||
|
|
2aa496bae7 | ||
|
|
a9a554508d | ||
|
|
2a8b89a451 | ||
|
|
2c369a8299 | ||
|
|
3e65d75f83 | ||
|
|
8d6bb6bf20 | ||
|
|
a76f7a8c62 | ||
|
|
e99cf956e7 | ||
|
|
fd791568ff | ||
|
|
b8683dd351 | ||
|
|
93f5f65806 | ||
|
|
e0b5880db7 | ||
|
|
524aa84e96 | ||
|
|
6ff098e0bd | ||
|
|
0a796ebb6c | ||
|
|
956d30f4e1 | ||
|
|
9f97320cbe | ||
|
|
206c7667e6 | ||
|
|
166589c2ef | ||
|
|
40fd22e26a | ||
|
|
e486557f63 | ||
|
|
230a969be4 | ||
|
|
8ca1d0d38d | ||
|
|
31aaa4ed3f | ||
|
|
998018db50 | ||
|
|
5beb8bf314 | ||
|
|
eb9e4ef9ba | ||
|
|
e5139b6f0f | ||
|
|
15befb41e6 | ||
|
|
e824a6373d | ||
|
|
b00dd803d1 | ||
|
|
42dbaaf75c | ||
|
|
adabb6a967 | ||
|
|
da644bc91d | ||
|
|
9528ccceb9 | ||
|
|
a7f0a1a20c | ||
|
|
55cebe6edf | ||
|
|
48be94a8c1 | ||
|
|
b7cb74699d | ||
|
|
4809ffc92a | ||
|
|
e6a0a1cac4 | ||
|
|
89321fe824 | ||
|
|
1cfca6ce47 | ||
|
|
91069fffd1 | ||
|
|
b60572d1fc | ||
|
|
99962b551c | ||
|
|
743d342ad6 | ||
|
|
e2b3c1546e | ||
|
|
13e9910e4e | ||
|
|
bb378620e9 | ||
|
|
b283960637 | ||
|
|
7c9a7ab374 | ||
|
|
443e59a318 | ||
|
|
1e991bb8fe | ||
|
|
89ebbb4192 | ||
|
|
c54b69e635 | ||
|
|
fbaf38959c | ||
|
|
197492ae89 | ||
|
|
20a2ff1e49 | ||
|
|
bb383359e2 | ||
|
|
1dac64fa42 | ||
|
|
7e6826ec03 | ||
|
|
1120d41dd6 | ||
|
|
709d583950 | ||
|
|
67ec7b7029 | ||
|
|
c4a0c3b05e | ||
|
|
0ff85ff2c0 | ||
|
|
deadd5414d | ||
|
|
876d2b1b69 | ||
|
|
dd3ecbcf38 | ||
|
|
582aeac496 | ||
|
|
cfe9bfecce | ||
|
|
66f0d960d3 | ||
|
|
a9da4dba35 | ||
|
|
f977b6affd | ||
|
|
9ba2e7ca5b | ||
|
|
67cb3f026d | ||
|
|
bd6180e362 | ||
|
|
c833aee524 | ||
|
|
af125c39df | ||
|
|
10f304d9da | ||
|
|
bc238f9b2f | ||
|
|
3190ad47b1 | ||
|
|
5d118cf170 | ||
|
|
82931c8f01 | ||
|
|
278d2cbca1 | ||
|
|
5a7d275546 | ||
|
|
39bbadf3d1 | ||
|
|
eb62fa3a1d | ||
|
|
6c7e692bd5 | ||
|
|
6b80fbf072 | ||
|
|
b3242490f1 | ||
|
|
2944775952 | ||
|
|
4e87ac46a1 | ||
|
|
1c63d44afd | ||
|
|
e70bb45ebd | ||
|
|
9346b50eb3 | ||
|
|
a9a9dfe297 | ||
|
|
7bb9f60068 | ||
|
|
2b2e9563ff | ||
|
|
afc13c264c | ||
|
|
4d96f40023 | ||
|
|
3a734bc5d4 | ||
|
|
fd4de3c720 | ||
|
|
11a561cb7b | ||
|
|
454f690272 | ||
|
|
4e4f27c79d | ||
|
|
18041e3c41 | ||
|
|
8d872f2f7d | ||
|
|
ce1ddb260b | ||
|
|
45792da029 | ||
|
|
7300a7daf3 | ||
|
|
22cd4e9312 | ||
|
|
db93bc022f | ||
|
|
3ea02249d6 | ||
|
|
9ab0715a5a | ||
|
|
e8f53fd5ac | ||
|
|
a73dd19381 | ||
|
|
8bae60c938 | ||
|
|
79c1133736 | ||
|
|
6647af4116 | ||
|
|
705f04f58e | ||
|
|
86937cd8b1 | ||
|
|
0f61fac4a6 |
141
CMakeLists.txt
141
CMakeLists.txt
@@ -19,8 +19,6 @@
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
|
||||
# Author: laurent THOMAS, Lionel GAUTHIER
|
||||
|
||||
cmake_minimum_required (VERSION 3.16)
|
||||
project (OpenAirInterface LANGUAGES C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@@ -173,9 +171,6 @@ else ()
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8.2-a")
|
||||
endif()
|
||||
|
||||
# add autotools definitions that were maybe used!
|
||||
add_definitions(-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP)
|
||||
|
||||
# we need -rdynamic to incorporate all symbols in shared objects, see man page
|
||||
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
||||
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
||||
@@ -363,6 +358,7 @@ add_library(ngap
|
||||
${NGAP_DIR}/ngap_gNB.c
|
||||
${NGAP_DIR}/ngap_common.c
|
||||
${NGAP_DIR}/ngap_gNB_context_management_procedures.c
|
||||
${NGAP_DIR}/ngap_gNB_mobility_management.c
|
||||
${NGAP_DIR}/ngap_gNB_decoder.c
|
||||
${NGAP_DIR}/ngap_gNB_encoder.c
|
||||
${NGAP_DIR}/ngap_gNB_handlers.c
|
||||
@@ -468,9 +464,6 @@ target_include_directories(f1ap PUBLIC F1AP_DIR)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap GTPV1U)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE f1ap_lib)
|
||||
target_include_directories(f1ap PRIVATE ${F1AP_DIR}/lib)
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(f1ap PRIVATE E2_AGENT)
|
||||
endif()
|
||||
|
||||
# LPP
|
||||
##############
|
||||
@@ -548,7 +541,6 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories("${OPENAIR_DIR}/executables")
|
||||
include_directories("${OPENAIR2_DIR}/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
||||
include_directories("${OPENAIR3_DIR}/COMMON")
|
||||
include_directories("${OPENAIR3_DIR}/UTILS")
|
||||
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
||||
@@ -589,12 +581,7 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
|
||||
include_directories("${OPENAIR3_DIR}/M3AP")
|
||||
include_directories("${OPENAIR3_DIR}/MME_APP")
|
||||
include_directories("${OPENAIR_DIR}/radio/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/TIMER")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
|
||||
include_directories("${OPENAIR_DIR}")
|
||||
@@ -622,11 +609,6 @@ add_library(UTIL
|
||||
${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
|
||||
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
||||
)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(cap libcap)
|
||||
if (cap_FOUND)
|
||||
@@ -941,9 +923,9 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
||||
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_csirs.c
|
||||
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_srs.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/refsig.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
|
||||
)
|
||||
|
||||
set(PHY_NR_SRC
|
||||
@@ -1166,6 +1148,7 @@ set(L2_NR_SRC
|
||||
${NR_RRC_DIR}/rrc_gNB.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_direct.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
|
||||
${NR_RRC_DIR}/rrc_gNB_asn1.c
|
||||
${NR_RRC_DIR}/rrc_gNB_nsa.c
|
||||
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
||||
${NR_RRC_DIR}/rrc_gNB_NGAP.c
|
||||
@@ -1316,12 +1299,6 @@ add_library(L2
|
||||
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
|
||||
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2 PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
|
||||
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs PUBLIC nr_ue_power_procedures nr_ue_ra_procedures)
|
||||
|
||||
@@ -1348,10 +1325,6 @@ target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc nr_co
|
||||
if(OAI_AERIAL)
|
||||
target_compile_definitions(L2_NR PRIVATE ENABLE_AERIAL)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
add_library(L2_LTE_NR
|
||||
# temporary solution until 4G/5G code completely untangled (as evidenced by deletion of the following file)
|
||||
@@ -1681,13 +1654,6 @@ include_directories(${NAS_SRC}UE/EMM/SAP)
|
||||
include_directories(${NAS_SRC}UE/ESM)
|
||||
include_directories(${NAS_SRC}UE/ESM/SAP)
|
||||
|
||||
# nbiot
|
||||
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
|
||||
set (NBIOT_SOURCES
|
||||
${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
|
||||
)
|
||||
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )
|
||||
|
||||
# Simulation library
|
||||
##########################
|
||||
set (SIMUSRC
|
||||
@@ -1713,9 +1679,8 @@ include_directories("${NFAPI_DIR}/nfapi/inc")
|
||||
include_directories("${NFAPI_DIR}/sim_common/inc")
|
||||
include_directories("${NFAPI_DIR}/pnf_sim/inc")
|
||||
|
||||
add_library(oai_iqplayer MODULE
|
||||
${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
|
||||
)
|
||||
add_library(oai_iqplayer MODULE ${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c)
|
||||
target_link_libraries(oai_iqplayer PRIVATE log_headers)
|
||||
|
||||
#################################
|
||||
# add executables for operation
|
||||
@@ -1725,10 +1690,6 @@ add_library(minimal_lib
|
||||
)
|
||||
target_link_libraries(minimal_lib PUBLIC pthread dl ${T_LIB} LOG)
|
||||
|
||||
add_executable(nfapi_test
|
||||
${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
|
||||
)
|
||||
|
||||
add_executable(measurement_display
|
||||
${OPENAIR_DIR}/common/utils/threadPool/measurement_display.c)
|
||||
target_link_libraries (measurement_display minimal_lib)
|
||||
@@ -1768,6 +1729,7 @@ target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(lte-softmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES} ${lapack_LIBRARIES})
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(lte-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1827,30 +1789,6 @@ target_link_libraries(lte-uesoftmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIE
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE
|
||||
asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
|
||||
|
||||
# nr RRU
|
||||
add_executable(oainr_ru
|
||||
${OPENAIR_DIR}/executables/nr-ru.c
|
||||
${OPENAIR_DIR}/openair1/PHY/INIT/nr_parms.c
|
||||
${OPENAIR_DIR}/openair1/SCHED_NR/phy_frame_config_nr.c
|
||||
${OPENAIR_DIR}/openair1/PHY/INIT/nr_parms.c
|
||||
${OPENAIR_DIR}/openair1/SCHED_NR/nr_prach_procedures.c
|
||||
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR_DIR}/executables/main_nr_ru.c
|
||||
${OPENAIR_DIR}/executables/nr-oru.c
|
||||
)
|
||||
target_link_libraries(oainr_ru PRIVATE
|
||||
-Wl,--start-group
|
||||
UTIL SCHED_RU_LIB PHY_COMMON PHY_RU shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
target_link_libraries(oainr_ru PRIVATE pthread m CONFIG_LIB rt ${T_LIB} utils
|
||||
barrier actor)
|
||||
target_link_libraries(oainr_ru PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs nr_phy_common time_management PHY_NR)
|
||||
|
||||
# nr-softmodem
|
||||
###################################################
|
||||
|
||||
@@ -1895,6 +1833,7 @@ if (OAI_AERIAL)
|
||||
target_link_libraries(nr-softmodem PUBLIC aerial_lib)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(nr-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1916,6 +1855,7 @@ target_link_libraries(nr-cuup PRIVATE
|
||||
CONFIG_LIB ITTI SCTP_CLIENT
|
||||
GTPV1U e1ap f1ap
|
||||
time_management
|
||||
alg
|
||||
z dl pthread shlib_loader ${T_LIB})
|
||||
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
if(E2_AGENT)
|
||||
@@ -1968,14 +1908,14 @@ target_link_libraries(nr-uesoftmodem PRIVATE
|
||||
#####################################
|
||||
|
||||
#special case for dlim TM4, which uses its own version of phy_scope code
|
||||
add_executable(dlsim_tm4
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
)
|
||||
target_link_libraries (dlsim_tm4
|
||||
-Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
pthread m rt CONFIG_LIB ${T_LIB}
|
||||
)
|
||||
#add_executable(dlsim_tm4
|
||||
# ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
# ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
# )
|
||||
#target_link_libraries (dlsim_tm4
|
||||
# -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
# pthread m rt CONFIG_LIB ${T_LIB}
|
||||
# )
|
||||
|
||||
add_executable(rftest
|
||||
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
|
||||
@@ -2100,7 +2040,9 @@ target_link_libraries(nr_ulsim PRIVATE
|
||||
)
|
||||
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
|
||||
# these simulators do not compile:
|
||||
# dlsim_tm7 pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
|
||||
foreach(myExe dlsim ulsim)
|
||||
|
||||
add_executable(${myExe}
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
||||
@@ -2120,22 +2062,23 @@ endforeach(myExe)
|
||||
|
||||
#unitary tests for Core NEtwork pieces
|
||||
#################################
|
||||
foreach(myExe s1ap
|
||||
secu_knas_encrypt_eia1
|
||||
secu_kenb
|
||||
aes128_ctr
|
||||
secu_knas_encrypt_eea2
|
||||
secu_knas secu_knas_encrypt_eea1
|
||||
kdf
|
||||
aes128_cmac_encrypt
|
||||
secu_knas_encrypt_eia2)
|
||||
add_executable(test_${myExe}
|
||||
${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
)
|
||||
target_link_libraries (test_${myExe}
|
||||
-Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
)
|
||||
endforeach(myExe)
|
||||
#foreach(myExe
|
||||
# s1ap
|
||||
# secu_knas_encrypt_eia1
|
||||
# secu_kenb
|
||||
# aes128_ctr
|
||||
# secu_knas_encrypt_eea2
|
||||
# secu_knas secu_knas_encrypt_eea1
|
||||
# kdf
|
||||
# aes128_cmac_encrypt
|
||||
# secu_knas_encrypt_eia2)
|
||||
# add_executable(test_${myExe}
|
||||
# ${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
# )
|
||||
# target_link_libraries (test_${myExe}
|
||||
# -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
# )
|
||||
#endforeach(myExe)
|
||||
|
||||
#ensure that the T header files are generated before targets depending on them
|
||||
if (${T_TRACER})
|
||||
@@ -2145,17 +2088,17 @@ if (${T_TRACER})
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
||||
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
|
||||
nr_ulschsim ldpctest polartest smallblocktest
|
||||
#all "add_library" definitions
|
||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
oai_eth_transpro oai_mobipass HASHTABLE UTIL OMG_SUMO
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||
params_libconfig
|
||||
oai_eth_transpro HASHTABLE UTIL
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB
|
||||
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_UE_NR ngap
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
||||
GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE SIMU
|
||||
dfts config_internals nr_common crc_byte)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
@@ -2163,8 +2106,6 @@ if (${T_TRACER})
|
||||
endforeach(i)
|
||||
endif (${T_TRACER})
|
||||
|
||||
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
|
||||
|
||||
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
|
||||
set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL)
|
||||
set(ENABLE_PHYSIM_TESTS OFF CACHE STRING "Activate build of physim tests")
|
||||
|
||||
@@ -35,6 +35,8 @@ def gitCommitAuthorEmailAddr
|
||||
// list of failing stages
|
||||
def failingStages = ""
|
||||
|
||||
OAI_Registry = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label nodeExecutor
|
||||
@@ -175,6 +177,28 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("Ubuntu-Jetson-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-Ubuntu-Jetson-Image-Builder', 'Ubuntu-Jetson-Image-Builder')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
ubuntuJetsonBuildStatus = finalizeSlaveJob('RAN-Ubuntu-Jetson-Image-Builder')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += ubuntuJetsonBuildStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("RHEL-Cluster-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
@@ -269,6 +293,29 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("PhySim-GraceHopper-5G") {
|
||||
when { expression {do5Gtest || do5GUeTest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-PhySim-GraceHopper-5G', 'PhySim-GraceHopper-5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
physimGH5GStatus = finalizeSlaveJob('RAN-PhySim-GraceHopper-5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += physimGH5GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("PhySim-Cluster-4G") {
|
||||
when { expression {do4Gtest} }
|
||||
steps {
|
||||
@@ -661,6 +708,29 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-Handover-CN5G") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-SA-Handover-CN5G', 'SA-Handover-CN5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saHandoverStatus = finalizeSlaveJob('RAN-SA-Handover-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saHandoverStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-OAIUE-CN5G") {
|
||||
when { expression {do5Gtest || do5GUeTest} }
|
||||
steps {
|
||||
@@ -766,11 +836,11 @@ def triggerCN5GSlaveJob (jobName, gitlabStatusName) {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.gitlabMergeRequestLastCommit
|
||||
shortenShaOne = shortenShaOne.trim()
|
||||
branchName = env.gitlabSourceBranch.replaceAll("/", "-").trim()
|
||||
fullRanTag = 'porcepix.sboai.cs.eurecom.fr/oai-gnb:' + env.gitlabSourceBranch + '-' + shortenShaOne
|
||||
fullRanTag = OAI_Registry + '/oai-gnb:' + env.gitlabSourceBranch + '-' + shortenShaOne
|
||||
} else {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.GIT_COMMIT
|
||||
shortenShaOne = shortenShaOne.trim()
|
||||
fullRanTag = 'porcepix.sboai.cs.eurecom.fr/oai-gnb:develop-' + shortenShaOne
|
||||
fullRanTag = OAI_Registry + '/oai-gnb:develop-' + shortenShaOne
|
||||
}
|
||||
// Workaround for the "cancelled" GitLab pipeline notification
|
||||
// The slave job is triggered with the propagate false so the following commands are executed
|
||||
|
||||
@@ -31,6 +31,9 @@ if (params.LockResources != null && params.LockResources.trim().length() > 0)
|
||||
// Docker Hub account to push to
|
||||
def DH_Account = "oaisoftwarealliance"
|
||||
|
||||
// internal registry to use
|
||||
def OAI_Registry = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label nodeExecutor
|
||||
@@ -79,14 +82,14 @@ pipeline {
|
||||
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup", "oai-gnb-fhi72"]
|
||||
// Logging in on both registries
|
||||
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd ${OAI_Registry} > /dev/null 2>&1"
|
||||
listOfImages.eachWithIndex { item, iindex ->
|
||||
sh "docker pull --quiet porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker pull --quiet ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:develop"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop porcepix.sboai.cs.eurecom.fr/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
}
|
||||
// Proxy is not following the same pattern.
|
||||
sh "docker image tag proxy:develop ${DH_Account}/proxy:develop"
|
||||
@@ -95,7 +98,7 @@ pipeline {
|
||||
sh "docker push --quiet ${DH_Account}/proxy:${WEEK_TAG}"
|
||||
sh "docker rmi ${DH_Account}/proxy:develop ${DH_Account}/proxy:${WEEK_TAG}"
|
||||
// Logging out on both registries
|
||||
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
||||
sh "docker logout > /dev/null 2>&1"
|
||||
}
|
||||
}
|
||||
@@ -105,7 +108,7 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
sh "docker logout porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
sh "docker logout ${OAI_Registry} > /dev/null 2>&1"
|
||||
sh "docker logout > /dev/null 2>&1"
|
||||
echo "End of Registry Push"
|
||||
}
|
||||
|
||||
@@ -44,4 +44,4 @@ rf_driver: {
|
||||
#endif
|
||||
|
||||
tx_gain: 75.0, /* TX gain (in dB) */
|
||||
rx_gain: 55.0, /* RX gain (in dB) */
|
||||
rx_gain: 52.0, /* RX gain (in dB) */
|
||||
|
||||
@@ -12,6 +12,14 @@ idefix:
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
raspix:
|
||||
Host: raspix
|
||||
AttachScript: sudo /opt/mbim_scripts/start_quectel_mbim.sh
|
||||
DetachScript: sudo /opt/mbim_scripts/stop_quectel_mbim.sh
|
||||
NetworkScript: ip a show dev wwan0
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
up2:
|
||||
Host: up2
|
||||
AttachScript: sudo /opt/mbim/start_quectel_mbim.sh
|
||||
@@ -77,6 +85,14 @@ oc-cn5g-20897:
|
||||
Undeploy: "! scripts/oc-cn5g-undeploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72"
|
||||
LogCollect: "! scripts/oc-cn5g-logcollect.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72 %%log_dir%%"
|
||||
|
||||
oc-cn5g-00102-ho:
|
||||
Host: groot
|
||||
NetworkScript: echo "inet 172.21.6.111"
|
||||
RunIperf3Server: False
|
||||
Deploy: "! scripts/oc-cn5g-deploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho"
|
||||
Undeploy: "! scripts/oc-cn5g-undeploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho"
|
||||
LogCollect: "! scripts/oc-cn5g-logcollect.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-ho %%log_dir%%"
|
||||
|
||||
oc-cn5g-20897-aerial:
|
||||
Host: gracehopper1-oai
|
||||
NetworkScript: echo "inet 172.21.6.105"
|
||||
|
||||
@@ -26,65 +26,26 @@ import os
|
||||
import xml.etree.ElementTree as ET
|
||||
import json
|
||||
|
||||
# Define the mapping of physim_test values to search patterns
|
||||
PHYSIM_PATTERN_MAPPING = {
|
||||
'nr_ulsim': [
|
||||
r'(Total PHY proc rx)\s+(\d+\.\d+)\s+us', # Pattern for RX PHY processing time
|
||||
r'(ULSCH total decoding time)\s+(\d+\.\d+)\s+us', # Pattern for ULSCH decoding time
|
||||
],
|
||||
'nr_dlsim': [
|
||||
r'(PHY proc tx)\s+(\d+\.\d+)\s+us', # Pattern for TX PHY processing time
|
||||
r'(DLSCH encoding time)\s+(\d+\.\d+)\s+us', # Pattern for DLSCH encoding time
|
||||
],
|
||||
'ldpctest': [
|
||||
r'(Encoding time mean):\s+(\d+\.\d+)\s+us', # Pattern for encoding time mean
|
||||
r'(Decoding time mean):\s+(\d+\.\d+)\s+us', # Pattern for decoding time mean
|
||||
],
|
||||
}
|
||||
# Define test conditions based on the simulation type
|
||||
PHYSIM_TEST_CONDITION = {
|
||||
'nr_ulsim': 'test OK', # For nr_ulsim, check if 'test OK' is present
|
||||
'nr_dlsim': 'test OK', # For nr_dlsim, check if 'test OK' is present
|
||||
'ldpctest': None, # No condition for ldpctest, just process the patterns
|
||||
}
|
||||
|
||||
class Analysis():
|
||||
|
||||
def analyze_physim(log, physim_test, options, threshold):
|
||||
search_patterns = PHYSIM_PATTERN_MAPPING.get(physim_test)
|
||||
test_condition = PHYSIM_TEST_CONDITION.get(physim_test)
|
||||
success = False
|
||||
msg = ''
|
||||
def _get_test_description(properties):
|
||||
env_vars = None
|
||||
for p in properties:
|
||||
if p["name"] == "ENVIRONMENT":
|
||||
env_vars = p["value"] # save for later if no custom property
|
||||
if p["name"] == "TEST_DESCRIPTION":
|
||||
return p["value"]
|
||||
# if we came till here, it means there is no custom test property
|
||||
# saved in JSON. See if we have a description in environment variables
|
||||
if not env_vars:
|
||||
return "<none>"
|
||||
for ev in env_vars:
|
||||
name, value = ev.split("=", 1)
|
||||
if name == "TEST_DESCRIPTION":
|
||||
return value
|
||||
return "<none>"
|
||||
|
||||
try:
|
||||
with open(log, 'r') as f:
|
||||
log_content = f.read()
|
||||
except FileNotFoundError as e:
|
||||
msg = f'{log} file not found, exception: {e}'
|
||||
return False, msg
|
||||
except Exception as e:
|
||||
msg = f'Error while parsing log file {log}: exception: {e}'
|
||||
return False, msg
|
||||
|
||||
if test_condition and test_condition not in log_content:
|
||||
msg = f"Test did not succeed, '{test_condition}' not found in log file {log}."
|
||||
return False, msg
|
||||
|
||||
time1_match = re.search(search_patterns[0], log_content)
|
||||
time2_match = re.search(search_patterns[1], log_content)
|
||||
if not(time1_match and time2_match):
|
||||
msg = f"Processing time not found in log file {log}."
|
||||
return False, msg
|
||||
|
||||
success = float(time2_match.group(2)) < float(threshold)
|
||||
if success:
|
||||
msg = f'{time1_match.group(1)}: {time1_match.group(2)} us\n{time2_match.group(1)}: {time2_match.group(2)} us'
|
||||
else:
|
||||
msg = f'{time1_match.group(1)}: {time1_match.group(2)} us\n{time2_match.group(1)}: {time2_match.group(2)} us exceeds a limit of {threshold} us'
|
||||
|
||||
return success,msg
|
||||
|
||||
def analyze_oc_physim(result_junit, details_json, logPath):
|
||||
def analyze_physim(result_junit, details_json, logPath):
|
||||
try:
|
||||
tree = ET.parse(result_junit)
|
||||
root = tree.getroot()
|
||||
@@ -116,7 +77,7 @@ class Analysis():
|
||||
for test in root: # for each test
|
||||
test_name = test.attrib["name"]
|
||||
test_exec = json_test_desc[test_name]["properties"][1]["value"][0]
|
||||
desc = json_test_desc[test_name]["properties"][1]["value"][1]
|
||||
desc = Analysis._get_test_description(json_test_desc[test_name]["properties"])
|
||||
# get runtime and checks
|
||||
test_check = test.attrib["status"] == "run"
|
||||
time = round(float(test.attrib["time"]), 1)
|
||||
@@ -129,13 +90,16 @@ class Analysis():
|
||||
with open(f'{log_dir}/{test_name}.log', 'w') as f:
|
||||
f.write(output)
|
||||
# prepare result and info
|
||||
info = f"Runtime: {f'{time:.3f}'[:5]} s"
|
||||
resultstr = 'PASS' if (test_check and time_check and output_check) else 'FAIL'
|
||||
info = f"{test_name}.log: test {resultstr}"
|
||||
for l in output.splitlines():
|
||||
if l.startswith("CHECK "):
|
||||
info += f"\n{l}"
|
||||
if test_check:
|
||||
if not output_check:
|
||||
info += " Test log exceeds maximal allowed length 100 kB"
|
||||
info += "\nTest log exceeds maximal allowed length 100 kB"
|
||||
if not time_check:
|
||||
info += " Test exceeds 150s"
|
||||
info += "\nTest exceeds 150s"
|
||||
if not (time_check and output_check):
|
||||
nb_failed += 1 # time threshold/output length error, not counted for by ctest as of now
|
||||
test_result[test_name] = [desc, info, resultstr]
|
||||
|
||||
@@ -34,7 +34,6 @@ import time
|
||||
import os
|
||||
|
||||
import cls_oai_html
|
||||
import cls_analysis
|
||||
import constants as CONST
|
||||
import helpreadme as HELP
|
||||
import cls_containerize
|
||||
@@ -417,34 +416,3 @@ class Cluster:
|
||||
c.run(f'cp -r {ctx.logPath} {os.getcwd()}/test_log_{ctx.test_id}/')
|
||||
|
||||
return status
|
||||
|
||||
def deploy_oc_physim(self, ctx, HTML, oc_release, node):
|
||||
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
raise ValueError(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {self.ranBranch} ranCommitID {self.ranCommitID}')
|
||||
image_tag = cls_containerize.CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
logging.debug(f'Running physims from server: {node}')
|
||||
script = "scripts/oc-deploy-physims.sh"
|
||||
options = f"oaicicd-core-for-ci-ran {oc_release} {image_tag} {self.eNBSourceCodePath}"
|
||||
ret = cls_cmd.runScript(node, script, 600, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
with cls_cmd.getConnection(node) as ssh:
|
||||
details_json = archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/{oc_release}-tests.json')
|
||||
result_junit = archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/{oc_release}-run.xml')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/physim_log.txt')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/physim_pods_summary.txt')
|
||||
archiveArtifact(ssh, ctx, f'{self.eNBSourceCodePath}/ci-scripts/LastTestsFailed.log')
|
||||
test_status, test_summary, test_result = cls_analysis.Analysis.analyze_oc_physim(result_junit, details_json, ctx.logPath)
|
||||
if test_summary:
|
||||
if test_status:
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('At least one physical simulator test failed!', 'KO', ["See below for details"])
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Physical simulator failed', 'KO', [test_result])
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
return test_status
|
||||
|
||||
@@ -45,12 +45,6 @@ def getConnection(host, d=None):
|
||||
else:
|
||||
return RemoteCmd(host, d=d)
|
||||
|
||||
def runScript(host, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if is_local(host):
|
||||
return LocalCmd.exec_script(path, timeout, parameters, redirect, silent)
|
||||
else:
|
||||
return RemoteCmd.exec_script(host, path, timeout, parameters, redirect, silent)
|
||||
|
||||
# provides a partial interface for the legacy SSHconnection class (getBefore(), command())
|
||||
class Cmd(metaclass=abc.ABCMeta):
|
||||
def cd(self, d, silent=False):
|
||||
@@ -111,12 +105,12 @@ class LocalCmd(Cmd):
|
||||
logging.debug(f'Working dir is {self.cwd}')
|
||||
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
|
||||
|
||||
def exec_script(path, timeout, parameters=None, redirect=None, silent=False):
|
||||
def exec_script(self, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if redirect and not redirect.startswith("/"):
|
||||
raise ValueError(f"redirect must be absolute, but is {redirect}")
|
||||
c = f"{path} {parameters}" if parameters else path
|
||||
if not redirect:
|
||||
ret = sp.run(c, shell=True, timeout=timeout, stdout=sp.PIPE, stderr=sp.STDOUT)
|
||||
ret = sp.run(c, shell=True, cwd=self.cwd, timeout=timeout, stdout=sp.PIPE, stderr=sp.STDOUT)
|
||||
ret.stdout = ret.stdout.decode('utf-8').strip()
|
||||
else:
|
||||
with open(redirect, "w") as f:
|
||||
@@ -238,18 +232,15 @@ class RemoteCmd(Cmd):
|
||||
cfg['sock'] = paramiko.ProxyCommand(ucfg['proxycommand'])
|
||||
return cfg
|
||||
|
||||
def exec_script(host, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
def exec_script(self, path, timeout, parameters=None, redirect=None, silent=False):
|
||||
if redirect and not redirect.startswith("/"):
|
||||
raise ValueError(f"redirect must be absolute, but is {redirect}")
|
||||
p = parameters if parameters else ""
|
||||
r = f"> {redirect}" if redirect else ""
|
||||
if not silent:
|
||||
logging.debug(f"local> ssh {host} bash -s {p} < {path} {r} # {path} from localhost")
|
||||
client = RemoteCmd._ssh_init()
|
||||
cfg = RemoteCmd._lookup_ssh_config(host)
|
||||
client.connect(**cfg)
|
||||
logging.debug(f"local> ssh {self.hostname} bash -s {p} < {path} {r}")
|
||||
bash_opt = 'BASH_XTRACEFD=1' # write bash set -x output to stdout, see bash(1)
|
||||
stdin, stdout, stderr = client.exec_command(f"{bash_opt} bash -s {p} {r}", timeout=timeout)
|
||||
stdin, stdout, stderr = self.client.exec_command(f"{bash_opt} bash -s {p} {r}", timeout=timeout)
|
||||
# open() the file f at path, read() it and write() it into the stdin of the bash -s cmd
|
||||
with open(path) as f:
|
||||
stdin.write(f.read())
|
||||
@@ -259,7 +250,6 @@ class RemoteCmd(Cmd):
|
||||
if redirect: cmd += f" &> {redirect}"
|
||||
ret = sp.CompletedProcess(args=cmd, returncode=stdout.channel.recv_exit_status(), stdout=stdout.read(size=None) + stderr.read(size=None))
|
||||
ret.stdout = ret.stdout.decode('utf-8').strip()
|
||||
client.close()
|
||||
return ret
|
||||
|
||||
def run(self, line, timeout=300, silent=False, reportNonZero=True):
|
||||
|
||||
@@ -53,6 +53,7 @@ from cls_ci_helper import archiveArtifact
|
||||
# (e.g., cls_cluster.py)
|
||||
#-----------------------------------------------------------
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-enb-asan', 'oai-gnb-asan', 'oai-lte-ue-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial', 'oai-gnb-fhi72']
|
||||
DEFAULT_REGISTRY = "gracehopper3-oai.sboai.cs.eurecom.fr"
|
||||
|
||||
def CreateWorkspace(host, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
|
||||
if ranCommitID == '':
|
||||
@@ -66,7 +67,8 @@ def CreateWorkspace(host, sourcePath, ranRepository, ranCommitID, ranTargetBranc
|
||||
ranTargetBranch = 'develop'
|
||||
options += f" {ranTargetBranch}"
|
||||
logging.info(f'execute "{script}" with options "{options}" on node {host}')
|
||||
ret = cls_cmd.runScript(host, script, 90, options)
|
||||
with cls_cmd.getConnection(host) as c:
|
||||
ret = c.exec_script(script, 90, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
return ret.returncode == 0
|
||||
|
||||
@@ -303,13 +305,18 @@ class Containerize():
|
||||
result = re.search('build_cross_arm64', self.imageKind)
|
||||
if result is not None:
|
||||
self.dockerfileprefix = '.ubuntu.cross-arm64'
|
||||
result = re.search('native_arm', self.imageKind)
|
||||
result = re.search('native_armv9', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
imageNames.append(('ran-build-fhi72', 'build.fhi72.native_arm', 'ran-build-fhi72', ''))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup', ''))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue', ''))
|
||||
imageNames.append(('oai-gnb-aerial', 'gNB.aerial', 'oai-gnb-aerial', ''))
|
||||
result = re.search('native_armv8', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup', ''))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue', ''))
|
||||
|
||||
cmd.cd(lSourcePath)
|
||||
# if asterix, copy the entitlement and subscription manager configurations
|
||||
@@ -362,7 +369,6 @@ class Containerize():
|
||||
cmd.close()
|
||||
logging.error('\u001B[1m Building OAI Images Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow(self.imageKind, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
else:
|
||||
result = re.search(r'Size *= *(?P<size>[0-9\-]+) *bytes', cmd.getBefore())
|
||||
@@ -486,7 +492,6 @@ class Containerize():
|
||||
logging.error('\u001B[1m Build of L2sim proxy failed\u001B[0m')
|
||||
ssh.close()
|
||||
HTML.CreateHtmlTestRow('commit ' + tag, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
else:
|
||||
logging.debug('L2sim proxy image for tag ' + tag + ' already exists, skipping build')
|
||||
@@ -555,7 +560,6 @@ class Containerize():
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'No {baseImage} image present, cannot build tests')
|
||||
HTML.CreateHtmlTestRow(self.imageKind, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
# build ran-unittests image
|
||||
@@ -566,7 +570,6 @@ class Containerize():
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'Cannot build unit tests')
|
||||
HTML.CreateHtmlTestRow("Unit test build failed", 'KO', [dockerfile])
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
HTML.CreateHtmlTestRowQueue("Build unit tests", 'OK', [dockerfile])
|
||||
@@ -585,18 +588,16 @@ class Containerize():
|
||||
|
||||
if ret.returncode == 0:
|
||||
HTML.CreateHtmlTestRowQueue('Unit tests succeeded', 'OK', [ret.stdout])
|
||||
HTML.CreateHtmlTabFooter(True)
|
||||
return True
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Unit tests failed (see also doc/UnitTests.md)', 'KO', [ret.stdout])
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
return False
|
||||
|
||||
def Push_Image_to_Local_Registry(self, node, HTML, tag_prefix=""):
|
||||
lSourcePath = self.eNBSourceCodePath
|
||||
logging.debug('Pushing images to server: ' + node)
|
||||
ssh = cls_cmd.getConnection(node)
|
||||
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||
imagePrefix = DEFAULT_REGISTRY
|
||||
ret = ssh.run(f'docker login -u oaicicd -p oaicicd {imagePrefix}')
|
||||
if ret.returncode != 0:
|
||||
msg = 'Could not log into local registry'
|
||||
@@ -667,7 +668,7 @@ class Containerize():
|
||||
msg = "Pulled Images:\n" + '\n'.join(pulled_images)
|
||||
return True, msg
|
||||
|
||||
def Pull_Image_from_Registry(self, HTML, node, images, tag=None, tag_prefix="", registry="porcepix.sboai.cs.eurecom.fr", username="oaicicd", password="oaicicd"):
|
||||
def Pull_Image_from_Registry(self, HTML, node, images, tag=None, tag_prefix="", registry=DEFAULT_REGISTRY, username="oaicicd", password="oaicicd"):
|
||||
logging.debug(f'\u001B[1m Pulling image(s) on server: {node}\u001B[0m')
|
||||
if not tag:
|
||||
tag = CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
|
||||
@@ -77,7 +77,8 @@ class CoreNetwork:
|
||||
words = line[1:].strip().split(" ")
|
||||
script_name = words[0]
|
||||
options = " ".join(words[1:])
|
||||
ret = cls_cmd.runScript(host, script_name, 300, parameters=options, silent=silent)
|
||||
with cls_cmd.getConnection(host) as c:
|
||||
ret = c.exec_script(script_name, 300, parameters=options, silent=silent)
|
||||
return ret
|
||||
|
||||
def _command(self, cmd_list, must_succeed=False, silent=False):
|
||||
|
||||
@@ -64,18 +64,3 @@ class Native():
|
||||
logging.error('\u001B[1m Building OAI Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow(options, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return success
|
||||
|
||||
def Run_Physim(ctx, HTML, host, directory, options, physim_test, threshold):
|
||||
logging.debug(f'Runnin {physim_test} on server: {host}')
|
||||
workSpacePath = f'{directory}/cmake_targets'
|
||||
runLogFile=f'{workSpacePath}/physim.log'
|
||||
with cls_cmd.getConnection(host) as cmd:
|
||||
cmd.run(f'sudo LD_LIBRARY_PATH=.:{DPDK_PATH}/lib64/ {workSpacePath}/ran_build/build/{physim_test} {options} > {runLogFile} 2>&1')
|
||||
physim_file = archiveArtifact(cmd, ctx, runLogFile)
|
||||
success, msg = cls_analysis.Analysis.analyze_physim(physim_file, physim_test, options, threshold)
|
||||
if success:
|
||||
HTML.CreateHtmlTestRowQueue(options, 'OK', [msg])
|
||||
else:
|
||||
logging.error(msg)
|
||||
HTML.CreateHtmlTestRowQueue(options, 'KO', [msg])
|
||||
return success
|
||||
|
||||
@@ -247,7 +247,7 @@ class HTMLManagement():
|
||||
self.htmlFile.write(' </tr>\n')
|
||||
self.htmlFile.write(' </table>\n')
|
||||
self.htmlFile.write(' <p></p>\n')
|
||||
self.htmlFile.write(' <div class="well well-lg">End of Test Report -- Copyright <span class="glyphicon glyphicon-copyright-mark"></span> 2018 <a href="http://www.openairinterface.org/">OpenAirInterface</a>. All Rights Reserved.</div>\n')
|
||||
self.htmlFile.write(' <div class="well well-lg">End of Test Report -- Copyright <span class="glyphicon glyphicon-copyright-mark"></span> 2025 <a href="http://www.openairinterface.org/">OpenAirInterface</a>. All Rights Reserved.</div>\n')
|
||||
self.htmlFile.write('</div></body>\n')
|
||||
self.htmlFile.write('</html>\n')
|
||||
self.htmlFile.close()
|
||||
@@ -533,6 +533,6 @@ class HTMLManagement():
|
||||
self.htmlFile.write(' <td bgcolor = "green" ><font color="white"><b>' + value[2] + '</b></font></td>\n')
|
||||
else:
|
||||
self.htmlFile.write(' <td bgcolor = "red" ><font color="white"><b>' + value[2] + '</b></font></td>\n')
|
||||
self.htmlFile.write(' <td bgcolor = "lightcyan">' + value[1] + '</td>\n')
|
||||
self.htmlFile.write(f' <td colspan="2" bgcolor = "lightcyan"><pre style="display: inline flow-root list-item; margin: 0 3px 0 3px; min-width: 24em;">{value[1]}</pre></td>\n')
|
||||
|
||||
self.htmlFile.close()
|
||||
|
||||
@@ -46,6 +46,7 @@ import constants as CONST
|
||||
|
||||
import cls_module
|
||||
import cls_corenetwork
|
||||
import cls_analysis
|
||||
import cls_cmd
|
||||
from cls_ci_helper import archiveArtifact
|
||||
|
||||
@@ -234,7 +235,8 @@ def Custom_Command(HTML, node, command):
|
||||
|
||||
def Custom_Script(HTML, node, script):
|
||||
logging.info(f"Executing custom script on {node}")
|
||||
ret = cls_cmd.runScript(node, script, 90)
|
||||
with cls_cmd.getConnection(node) as c:
|
||||
ret = c.exec_script(script, 90)
|
||||
logging.debug(f"Custom_Script: {script} on node: {node} - return code {ret.returncode}, output:\n{ret.stdout}")
|
||||
status = 'OK'
|
||||
message = [ret.stdout]
|
||||
@@ -249,6 +251,34 @@ def IdleSleep(HTML, idle_sleep_time):
|
||||
HTML.CreateHtmlTestRow(f"{idle_sleep_time} sec", 'OK', CONST.ALL_PROCESSES_OK)
|
||||
return True
|
||||
|
||||
def Deploy_Physim(ctx, HTML, node, workdir, script, options):
|
||||
logging.debug(f'Running physims on server {node} workdir {workdir}')
|
||||
with cls_cmd.getConnection(node) as c:
|
||||
sys_info = c.exec_script("scripts/sys-info.sh", 5)
|
||||
ret = c.exec_script(script, 600, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
HTML.CreateHtmlTestRowQueue('Query system info', 'OK', [sys_info.stdout])
|
||||
with cls_cmd.getConnection(node) as ssh:
|
||||
details_json = archiveArtifact(ssh, ctx, f'{workdir}/desc-tests.json')
|
||||
result_junit = archiveArtifact(ssh, ctx, f'{workdir}/results-run.xml')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/physim_log.txt')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/LastTestsFailed.log')
|
||||
archiveArtifact(ssh, ctx, f'{workdir}/LastTest.log')
|
||||
test_status, test_summary, test_result = cls_analysis.Analysis.analyze_physim(result_junit, details_json, ctx.logPath)
|
||||
if test_summary:
|
||||
if test_status:
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('At least one physical simulator test failed!', 'KO', ["See below for details"])
|
||||
HTML.CreateHtmlTestRowPhySimTestResult(test_summary, test_result)
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Physical simulator failed', 'KO', [test_result])
|
||||
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
|
||||
return test_status
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# OaiCiTest Class Definition
|
||||
#-----------------------------------------------------------
|
||||
|
||||
@@ -15,7 +15,7 @@ gNBs =
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
|
||||
@include "neighbour-config.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
|
||||
76
ci-scripts/conf_files/gnb-cu.sa.f1.ho.conf
Normal file
76
ci-scripts/conf_files/gnb-cu.sa.f1.ho.conf
Normal file
@@ -0,0 +1,76 @@
|
||||
Active_gNBs = ( "oai-cu");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "oai-cu";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1 }) });
|
||||
|
||||
@include "neighbour-config-ho.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "172.21.19.98";
|
||||
remote_s_address = "0.0.0.0";
|
||||
local_s_portd = 2153;
|
||||
remote_s_portd = 2154;
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.109"; });
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.19.98/22";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.19.98/22";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="info";
|
||||
};
|
||||
82
ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf
Normal file
82
ci-scripts/conf_files/gnb-cucp.sa.e1-ho-n2.conf
Normal file
@@ -0,0 +1,82 @@
|
||||
Active_gNBs = ( "cu-cp-0");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "cu-cp-0";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
@include "neighbour-config.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "192.168.71.150";
|
||||
remote_s_address = "192.168.71.171";
|
||||
local_s_portd = 2153;
|
||||
remote_s_portd = 2153;
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "192.168.71.132"; });
|
||||
|
||||
E1_INTERFACE =
|
||||
(
|
||||
{
|
||||
type = "cp";
|
||||
ipv4_cucp = "192.168.71.150";
|
||||
port_cucp = 38462;
|
||||
ipv4_cuup = "0.0.0.0"; # multiple CU-UPs
|
||||
port_cuup = 38462;
|
||||
}
|
||||
)
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.150";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
rrc_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
ngap_log_level = "info";
|
||||
};
|
||||
@@ -146,18 +146,8 @@ gNBs =
|
||||
|
||||
);
|
||||
|
||||
servingCellConfigDedicated = ({
|
||||
dl_bwp-Id_1 = 1;
|
||||
dl_bwp1_locationAndBandwidth = 28875; # RBstart=0, L=106 (275*(L-1))+RBstart
|
||||
dl_bwp1_subcarrierSpacing = 1;
|
||||
firstActiveDownlinkBWP-Id = 1;
|
||||
defaultDownlinkBWP-Id = 1;
|
||||
ul_bwp-Id_1 = 1;
|
||||
ul_bwp1_locationAndBandwidth = 28875; # RBstart=0, L=106 (275*(L-1))+RBstart
|
||||
ul_bwp1_subcarrierSpacing = 1;
|
||||
firstActiveUplinkBWP-Id = 1;
|
||||
});
|
||||
|
||||
first_active_bwp = 1;
|
||||
bwp_list = ({ scs = 1; bwpStart = 0; bwpSize = 106;});
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
Active_gNBs = ( "oai-du0");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe00;
|
||||
gNB_name = "oai-du0";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1; }) });
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.98";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
# ul_prbblack_SNR_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
# USRP is connected to an Octoclock in order to establish synchroniation with other USRPs
|
||||
clock_src = "external";
|
||||
time_src = "external";
|
||||
}
|
||||
);
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
@@ -0,0 +1,212 @@
|
||||
Active_gNBs = ( "oai-du1");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe01;
|
||||
gNB_name = "oai-du1";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1; }) });
|
||||
|
||||
nr_cellid = 11111111L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 1;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.99";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
# ul_prbblack_SNR_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
# USRP is connected to an Octoclock in order to establish synchroniation with other USRPs
|
||||
clock_src = "external";
|
||||
time_src = "external";
|
||||
}
|
||||
);
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
@@ -197,7 +197,6 @@ MACRLCs = (
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 200; # 150;
|
||||
pucch_TargetSNRx10 = 200; #200;
|
||||
ulsch_max_frame_inactivity = 10;
|
||||
dl_max_mcs = 28;
|
||||
ul_max_mcs = 28;
|
||||
}
|
||||
|
||||
@@ -198,7 +198,6 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
# ulsch_max_frame_inactivity = 0;
|
||||
pusch_TargetSNRx10 = 150;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
dl_max_mcs = 9;
|
||||
|
||||
@@ -16,6 +16,7 @@ gNBs =
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
do_SINR = 1;
|
||||
min_rxtxtime = 6;
|
||||
disable_harq = 1;
|
||||
cu_sibs = [2];
|
||||
@@ -205,7 +206,6 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
# ulsch_max_frame_inactivity = 0;
|
||||
pusch_TargetSNRx10 = 150;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
dl_max_mcs = 9;
|
||||
|
||||
@@ -24,6 +24,7 @@ gNBs =
|
||||
pusch_AntennaPorts = 2;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 1;
|
||||
uess_agg_levels = [4,2,0,0,0];
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
@@ -139,9 +140,9 @@ gNBs =
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 2;
|
||||
nrofDownlinkSlots = 1;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSlots = 3;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -20;
|
||||
@@ -178,11 +179,12 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 300;
|
||||
pucch_TargetSNRx10 = 300;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
pusch_TargetSNRx10 = 320;
|
||||
pucch_TargetSNRx10 = 320;
|
||||
pusch_FailureThres = 100;
|
||||
ul_max_mcs = 28;
|
||||
ul_max_mcs = 28;
|
||||
ul_bler_target_upper = 0.20;
|
||||
ul_bler_target_lower = 0.10;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -193,8 +193,6 @@ RUs = (
|
||||
eNB_instances = [0];
|
||||
ru_thread_core = 6;
|
||||
sl_ahead = 10; #5;
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
|
||||
tr_preference = "raw_if4p5"; # important: activate FHI7.2
|
||||
do_precoding = 0; # needs to match O-RU configuration
|
||||
}
|
||||
|
||||
@@ -175,7 +175,6 @@ MACRLCs = (
|
||||
pusch_TargetSNRx10 = 270;
|
||||
pucch_TargetSNRx10 = 270;
|
||||
pusch_FailureThres = 1000;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
ul_max_mcs = 25;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -184,7 +184,7 @@ L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 130;
|
||||
prach_dtx_threshold = 150;
|
||||
#pucch0_dtx_threshold = 150;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -145,64 +145,10 @@ gNBs =
|
||||
|
||||
);
|
||||
|
||||
# Dedicated Serving Cell Configuration
|
||||
servingCellConfigDedicated = ({
|
||||
# BWP-Downlink
|
||||
# BWP 1 Configuration
|
||||
dl_bwp-Id_1 = 1;
|
||||
dl_bwp1_locationAndBandwidth = 28875; // RBstart=0, L=106 (40 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp1_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 2 Configuration
|
||||
dl_bwp-Id_2 = 2;
|
||||
dl_bwp2_locationAndBandwidth = 13750; // RBstart=0, L=51 (20 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp2_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 3 Configuration
|
||||
dl_bwp-Id_3 = 3;
|
||||
dl_bwp3_locationAndBandwidth = 6325; // RBstart=0, L=24 (10 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp3_subcarrierSpacing = 1;
|
||||
|
||||
firstActiveDownlinkBWP-Id = 1; #BWP-Id
|
||||
defaultDownlinkBWP-Id = 1; #BWP-Id
|
||||
|
||||
# bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30,
|
||||
# ms40,ms50, ms60, ms80,ms100, ms200,ms300, ms500,
|
||||
# ms750, ms1280, ms1920, ms2560, spare10, spare9, spare8,
|
||||
# spare7, spare6, spare5, spare4, spare3, spare2, spare1 }
|
||||
|
||||
# UplinkConfig
|
||||
# BWP-Uplink
|
||||
# BWP 1 Configuration
|
||||
ul_bwp-Id_1 = 1;
|
||||
ul_bwp1_locationAndBandwidth = 28875; // RBstart=0, L=106 (40 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp1_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 2 Configuration
|
||||
ul_bwp-Id_2 = 2;
|
||||
ul_bwp2_locationAndBandwidth = 13750; // RBstart=0, L=51 (20 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp2_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 3 Configuration
|
||||
ul_bwp-Id_3 = 3;
|
||||
ul_bwp3_locationAndBandwidth = 6325; // RBstart=0, L=24 (10 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp3_subcarrierSpacing = 1;
|
||||
|
||||
firstActiveUplinkBWP-Id = 1; #BWP-Id
|
||||
}
|
||||
);
|
||||
first_active_bwp = 1;
|
||||
bwp_list = ({ scs = 1; bwpStart = 0; bwpSize = 106;},
|
||||
{ scs = 1; bwpStart = 0; bwpSize = 51;},
|
||||
{ scs = 1; bwpStart = 0; bwpSize = 24;});
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
@@ -233,7 +179,6 @@ MACRLCs = (
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 250;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
54
ci-scripts/conf_files/neighbour-config-ho.conf
Normal file
54
ci-scripts/conf_files/neighbour-config-ho.conf
Normal file
@@ -0,0 +1,54 @@
|
||||
neighbour_list = (
|
||||
{
|
||||
nr_cellid = 12345678;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe01;
|
||||
nr_cellid = 11111111;
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
},
|
||||
{
|
||||
nr_cellid = 11111111;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 12345678;
|
||||
physical_cellId = 0;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
nr_measurement_configuration = {
|
||||
Periodical = {
|
||||
enable = 1;
|
||||
includeBeamMeasurements = 1;
|
||||
maxNrofRS_IndexesToReport = 4;
|
||||
};
|
||||
|
||||
A2 = {
|
||||
enable = 1;
|
||||
threshold = 110;
|
||||
timeToTrigger = 1;
|
||||
};
|
||||
|
||||
A3 = ({
|
||||
cell_id = -1; #Default
|
||||
offset = 10;
|
||||
hysteresis = 0;
|
||||
timeToTrigger = 1
|
||||
})
|
||||
};
|
||||
@@ -1,52 +1,51 @@
|
||||
neighbour_list = (
|
||||
{
|
||||
nr_cellid = 1;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xb00;
|
||||
nr_cellid = 2;
|
||||
physical_cellId = 0x002;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 216; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 2;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xa00;
|
||||
nr_cellid = 3;
|
||||
physical_cellId = 0x003;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 3;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xc00;
|
||||
nr_cellid = 4;
|
||||
physical_cellId = 0x004;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 4;
|
||||
}
|
||||
)
|
||||
},
|
||||
{
|
||||
nr_cellid = 2;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 1;
|
||||
physical_cellId = 0x000;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 001; mnc = 01; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
############################################################
|
||||
# gNB-to-gNB neighbour list + measurement configuration #
|
||||
# for the 2-cell rfsim setup (gNB_ID 0xe00 & 0xb00) #
|
||||
############################################################
|
||||
|
||||
neighbour_list = (
|
||||
##########################################################
|
||||
# Entry USED BY gNB_ID = 0xe00 (nr_cellid = 1) #
|
||||
##########################################################
|
||||
{
|
||||
nr_cellid = 0; # Serving cell of gNB 0xe00
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xb00;
|
||||
nr_cellid = 1; # Cell served by gNB 0xb00
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB= 621312;
|
||||
subcarrierSpacing = 1; # 30 kHz
|
||||
band = 78;
|
||||
plmn = { mcc = 208; mnc = 99; mnc_length = 2 };
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
##########################################################
|
||||
# Entry USED BY gNB_ID = 0xb00 (nr_cellid = 2) #
|
||||
##########################################################
|
||||
{
|
||||
nr_cellid = 1; # Serving cell of gNB 0xb00
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 0; # Cell served by gNB 0xe00
|
||||
physical_cellId = 0;
|
||||
absoluteFrequencySSB= 641280;
|
||||
subcarrierSpacing = 1; # 30 kHz
|
||||
band = 78;
|
||||
plmn = { mcc = 208; mnc = 99; mnc_length = 2 };
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
############################################################
|
||||
# Common NR measurement-event configuration #
|
||||
############################################################
|
||||
|
||||
nr_measurement_configuration = {
|
||||
Periodical = {
|
||||
|
||||
@@ -86,7 +86,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -100,8 +100,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -96,8 +96,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -105,8 +105,8 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -80,7 +80,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -85,7 +85,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -84,7 +84,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -83,7 +83,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
@@ -82,7 +82,7 @@ gNBs =
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
|
||||
46
ci-scripts/docker/Dockerfile.physim.ubuntu
Normal file
46
ci-scripts/docker/Dockerfile.physim.ubuntu
Normal file
@@ -0,0 +1,46 @@
|
||||
#/*
|
||||
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
# * http://www.openairinterface.org/?page_id=698
|
||||
# *
|
||||
# * Unless required by applicable law or agreed to in writing, software
|
||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# * See the License for the specific language governing permissions and
|
||||
# * limitations under the License.
|
||||
# *-------------------------------------------------------------------------------
|
||||
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for Ubuntu 24.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:develop AS ran-tests
|
||||
|
||||
#RUN apt-get update && \
|
||||
# DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||
# DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
# libgtest-dev \
|
||||
# libyaml-cpp-dev
|
||||
|
||||
RUN rm -Rf /oai-ran
|
||||
WORKDIR /oai-ran
|
||||
COPY . .
|
||||
|
||||
WORKDIR /oai-ran/build
|
||||
# TODO should SANITIZE be ON? it makes it compile much longer
|
||||
RUN cmake -GNinja -DENABLE_PHYSIM_TESTS=ON \
|
||||
-DSANITIZE_UNDEFINED=OFF -DSANITIZE_ADDRESS=OFF \
|
||||
-DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror \
|
||||
.. && \
|
||||
ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim
|
||||
@@ -242,10 +242,22 @@ def ExecuteActionWithParam(action, ctx):
|
||||
st = test.findtext('idle_sleep_time_in_sec') or "5"
|
||||
success = cls_oaicitest.IdleSleep(HTML, int(st))
|
||||
|
||||
elif action == 'Deploy_Run_PhySim':
|
||||
elif action == 'Deploy_Run_OC_PhySim':
|
||||
oc_release = test.findtext('oc_release')
|
||||
node = test.findtext('node') or None
|
||||
success = CLUSTER.deploy_oc_physim(ctx, HTML, oc_release, node)
|
||||
script = "scripts/oc-deploy-physims.sh"
|
||||
image_tag = cls_containerize.CreateTag(CLUSTER.ranCommitID, CLUSTER.ranBranch, CLUSTER.ranAllowMerge)
|
||||
options = f"oaicicd-core-for-ci-ran {oc_release} {image_tag} {CLUSTER.eNBSourceCodePath}"
|
||||
workdir = CLUSTER.eNBSourceCodePath
|
||||
success = cls_oaicitest.Deploy_Physim(ctx, HTML, node, workdir, script, options)
|
||||
|
||||
elif action == 'Build_Deploy_Docker_PhySim' or action == 'Build_Deploy_Source_PhySim':
|
||||
node = test.findtext('node') or None
|
||||
ctest_opt = test.findtext('ctest-opt') or ''
|
||||
script = "scripts/docker-build-and-deploy-physims.sh" if action == 'Build_Deploy_Docker_PhySim' else 'scripts/source-deploy-physims.sh'
|
||||
options = f"{CONTAINERS.eNBSourceCodePath} {ctest_opt}"
|
||||
workdir = CONTAINERS.eNBSourceCodePath
|
||||
success = cls_oaicitest.Deploy_Physim(ctx, HTML, node, workdir, script, options)
|
||||
|
||||
elif action == 'DeployCoreNetwork' or action == 'UndeployCoreNetwork':
|
||||
cn_id = test.findtext('cn_id')
|
||||
@@ -274,13 +286,6 @@ def ExecuteActionWithParam(action, ctx):
|
||||
return True
|
||||
success = CONTAINERS.Create_Workspace(node, HTML)
|
||||
|
||||
elif action == 'Run_Physim':
|
||||
physim_options = test.findtext('physim_run_args')
|
||||
physim_test = test.findtext('physim_test')
|
||||
physim_threshold = test.findtext('physim_time_threshold') or 'inf'
|
||||
node = test.findtext('node')
|
||||
success = cls_native.Native.Run_Physim(ctx, HTML, node, RAN.eNBSourceCodePath, physim_options, physim_test, physim_threshold)
|
||||
|
||||
elif action == 'LicenceAndFormattingCheck':
|
||||
node = test.findtext('node')
|
||||
success = SCA.LicenceAndFormattingCheck(ctx, node, HTML)
|
||||
|
||||
@@ -15,16 +15,18 @@ fi
|
||||
|
||||
# The script assumes you've build the following images:
|
||||
#
|
||||
# docker build . -f docker/Dockerfile.gNB.ubuntu22 -t oai-gnb
|
||||
# docker build . -f docker/Dockerfile.nrUE.ubuntu22 -t oai-nr-ue
|
||||
# docker build . -f docker/Dockerfile.gNB.ubuntu -t oai-gnb
|
||||
# docker build . -f docker/Dockerfile.nr-cuup.ubuntu -t oai-nr-cuup
|
||||
# docker build . -f docker/Dockerfile.nrUE.ubuntu -t oai-nr-ue
|
||||
#
|
||||
# The images above depend on the following images:
|
||||
#
|
||||
# docker build . -f docker/Dockerfile.build.ubuntu22 -t ran-build
|
||||
# dokcer build . -f docker/Dockerfile.base.ubuntu22 -t ran-base
|
||||
# docker build . -f docker/Dockerfile.build.ubuntu -t ran-build
|
||||
# docker build . -f docker/Dockerfile.base.ubuntu -t ran-base
|
||||
|
||||
docker tag oai-nr-ue oai-ci/oai-nr-ue:develop-${SHORT_COMMIT_SHA}
|
||||
docker tag oai-gnb oai-ci/oai-gnb:develop-${SHORT_COMMIT_SHA}
|
||||
docker tag oai-nr-cuup oai-ci/oai-nr-cuup:develop-${SHORT_COMMIT_SHA}
|
||||
|
||||
python3 main.py --mode=InitiateHtml --ranRepository=NONE --ranBranch=${CURRENT_BRANCH} \
|
||||
--ranCommitID=${COMMIT_SHA} --ranAllowMerge=false \
|
||||
|
||||
@@ -22,5 +22,5 @@ git config user.name "OAI Jenkins"
|
||||
git config advice.detachedHead false
|
||||
mkdir -p cmake_targets/log
|
||||
git checkout -f ${ref}
|
||||
[ -n "${merge}" ] && git merge --ff ${merge} -m "Temporary merge for CI"
|
||||
[ -n "${merge}" ] && git fetch origin ${merge} && git merge --ff FETCH_HEAD -m "Temporary merge for CI"
|
||||
exit 0
|
||||
|
||||
46
ci-scripts/scripts/docker-build-and-deploy-physims.sh
Executable file
46
ci-scripts/scripts/docker-build-and-deploy-physims.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -ge 1 ] || die "usage: $0 <directory> [ctest-options]"
|
||||
|
||||
IMAGE=ran-physimtests:ci-temp
|
||||
CONTAINER=ran-physimtests
|
||||
function cleanup-docker() {
|
||||
docker stop ${CONTAINER}
|
||||
docker rm ${CONTAINER}
|
||||
docker rmi ${IMAGE}
|
||||
docker volume prune --force
|
||||
}
|
||||
trap cleanup-docker EXIT
|
||||
|
||||
set -x
|
||||
DIR=$1
|
||||
RESULT_DIR=${DIR}/
|
||||
shift
|
||||
CTEST_OPT=$@
|
||||
|
||||
# build physims
|
||||
docker build --progress=plain --tag ${IMAGE} --file ${DIR}/ci-scripts/docker/Dockerfile.physim.ubuntu ${DIR} &>> ${RESULT_DIR}/physim_log.txt
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build of physims failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# get a JSON description of all tests to run
|
||||
docker run -a STDOUT --workdir /oai-ran/build/ --env LD_LIBRARY_PATH=/oai-ran/build/ --rm --name ${CONTAINER} ${IMAGE} ctest ${CTEST_OPT} --show-only=json-v1 &> ${RESULT_DIR}/desc-tests.json
|
||||
JSON_RES=$?
|
||||
|
||||
# run the actual tests: we don't suppy --rm as we have to copy the files
|
||||
# similar to unit tests, we can't mount the file where we write physims-5g-run.xml to
|
||||
# as it would write a file as root, but this script is run as a normal user
|
||||
docker run -a STDOUT --workdir /oai-ran/build/ --env LD_LIBRARY_PATH=/oai-ran/build/ --name ${CONTAINER} ${IMAGE} ctest ${CTEST_OPT} --output-junit results-run.xml --test-output-size-passed 100000 --test-output-size-failed 100000 &>> ${RESULT_DIR}/physim_log.txt
|
||||
RUN_RES=$?
|
||||
docker cp ${CONTAINER}:/oai-ran/build/results-run.xml ${RESULT_DIR}/
|
||||
docker cp ${CONTAINER}:/oai-ran/build/Testing/Temporary/LastTestsFailed.log ${RESULT_DIR}/
|
||||
docker cp ${CONTAINER}:/oai-ran/build/Testing/Temporary/LastTest.log ${RESULT_DIR}/
|
||||
|
||||
# if both were successful, return 0
|
||||
# TODO not sure
|
||||
#[[ $JSON_RES -eq 0 && $RUN_RES -eq 0 ]] && exit 0
|
||||
|
||||
exit 0
|
||||
@@ -13,21 +13,22 @@ OAI_DIR=${4}
|
||||
cat /opt/oc-password | oc login -u oaicicd --server https://api.oai.cs.eurecom.fr:6443 > /dev/null
|
||||
oc project ${OC_NS} > /dev/null
|
||||
oc tag oaicicd-ran/oai-physim:${IMG_TAG} ${OC_NS}/oai-physim:${IMG_TAG}
|
||||
helm install ${OC_RELEASE} ${OAI_DIR}/charts/${OC_RELEASE} --set global.image.version=${IMG_TAG} --wait
|
||||
helm install ${OC_RELEASE} ${OAI_DIR}/charts/${OC_RELEASE} --set global.image.version=${IMG_TAG} --wait --timeout 120s
|
||||
POD_ID=$(oc get pods | grep oai-${OC_RELEASE} | awk '{print $1}')
|
||||
sleep 10
|
||||
sleep 30
|
||||
echo "Monitoring logs for 'FINISHED' in pod '$POD_ID'"
|
||||
oc logs -f -n ${OC_NS} "$POD_ID" | while read -r line; do
|
||||
if [[ "$line" == *"FINISHED"* ]]; then
|
||||
echo "'FINISHED' detected in logs. Copying logs..."
|
||||
oc logs -n ${OC_NS} "$POD_ID" >> ${OAI_DIR}/ci-scripts/physim_log.txt
|
||||
oc describe pod $POD_ID >> ${OAI_DIR}/ci-scripts/physim_pods_summary.txt
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTestsFailed.log ${OAI_DIR}/ci-scripts/LastTestsFailed.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-tests.json ${OAI_DIR}/ci-scripts/${OC_RELEASE}-tests.json
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-run.xml ${OAI_DIR}/ci-scripts/${OC_RELEASE}-run.xml
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTestsFailed.log ${OAI_DIR}/LastTestsFailed.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/Testing/Temporary/LastTest.log ${OAI_DIR}/LastTest.log
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-tests.json ${OAI_DIR}/desc-tests.json
|
||||
oc cp "$POD_ID":/opt/oai-physim/${OC_RELEASE}-run.xml ${OAI_DIR}/results-run.xml
|
||||
break
|
||||
fi
|
||||
done
|
||||
oc logs -n ${OC_NS} "$POD_ID" >> ${OAI_DIR}/physim_log.txt
|
||||
oc describe pod $POD_ID >> ${OAI_DIR}/physim_log.txt
|
||||
helm uninstall ${OC_RELEASE} --wait
|
||||
oc delete istag oai-physim:${IMG_TAG} -n ${OC_NS}
|
||||
oc logout > /dev/null
|
||||
|
||||
30
ci-scripts/scripts/source-deploy-physims.sh
Normal file
30
ci-scripts/scripts/source-deploy-physims.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -ge 1 ] || die "usage: $0 <directory> [ctest-options]"
|
||||
|
||||
set -x
|
||||
DIR=$1
|
||||
shift
|
||||
CTEST_OPT=$@
|
||||
|
||||
cd ${DIR}/cmake_targets/ran_build/build
|
||||
ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim
|
||||
|
||||
# get a JSON description of all tests to run
|
||||
ctest ${CTEST_OPT} --show-only=json-v1 &> ${DIR}/desc-tests.json
|
||||
JSON_RES=$?
|
||||
|
||||
# we run the T2 offload tests, so provide some additional permissions
|
||||
# to be able to initialize DPDK
|
||||
sudo setcap cap_dac_override,cap_sys_admin+ep nr_ulsim
|
||||
sudo setcap cap_dac_override,cap_sys_admin+ep nr_dlsim
|
||||
ctest ${CTEST_OPT} --output-junit ${DIR}/results-run.xml --test-output-size-passed 100000 --test-output-size-failed 100000 &>> ${DIR}/physim_log.txt
|
||||
RUN_RES=$?
|
||||
cp Testing/Temporary/LastTestsFailed.log ${DIR}/
|
||||
cp Testing/Temporary/LastTest.log ${DIR}/
|
||||
|
||||
# if both were successful, return 0
|
||||
# TODO not sure
|
||||
#[[ $JSON_RES -eq 0 && $RUN_RES -eq 0 ]] && exit 0
|
||||
|
||||
exit 0
|
||||
17
ci-scripts/scripts/sys-info.sh
Executable file
17
ci-scripts/scripts/sys-info.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
CORES=$(nproc)
|
||||
MODEL=$(lscpu | awk -F: '/Model name/ {print $2; exit}' | xargs)
|
||||
MAX_FREQ=$(lscpu | awk -F: '/CPU max MHz/ {printf "%.2f MHz", $2; exit}')
|
||||
CURRENT_FREQ=$(awk -F: '/cpu MHz/ {printf " %.2f MHz", $2; exit}' /proc/cpuinfo)
|
||||
RAM=$(free -h --si | awk '/Mem:/ {print $2}')
|
||||
# sudo -n: non-interactive, will silently fail in case we don't have privileges
|
||||
DMID=$(sudo -n dmidecode -t memory 2>/dev/null)
|
||||
if [ $? -eq 0 ]; then
|
||||
RAM_TYPE=$(echo "$DMID" | awk -F: '/Type:/ {print $2}' | grep -Ev 'Unknown|Other|None' | head -1 | xargs)
|
||||
else
|
||||
RAM_TYPE="can't query"
|
||||
fi
|
||||
|
||||
|
||||
echo "CPU: model ${MODEL}"
|
||||
echo "${CORES} cores, max CPU freq ${MAX_FREQ}, current ${CURRENT_FREQ}"
|
||||
echo "RAM ${RAM} type ${RAM_TYPE}"
|
||||
@@ -36,17 +36,20 @@ class TestCmd(unittest.TestCase):
|
||||
self.assertEqual(ret.stdout, "test")
|
||||
|
||||
def test_local_script(self):
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-world.sh", 1)
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-world.sh", 1)
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
|
||||
self.assertEqual(ret.returncode, 0)
|
||||
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
|
||||
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "TESTFAIL")
|
||||
|
||||
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
with cls_cmd.getConnection("localhost") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "")
|
||||
@@ -75,17 +78,20 @@ class TestCmd(unittest.TestCase):
|
||||
|
||||
@unittest.skip("need to be able to passwordlessly SSH to localhost, also disable stty -ixon")
|
||||
def test_remote_script(self):
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-world.sh", 1)
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-world.sh", 1)
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
|
||||
self.assertEqual(ret.returncode, 0)
|
||||
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
|
||||
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "TESTFAIL")
|
||||
|
||||
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
with cls_cmd.getConnection("127.0.0.1") as ssh:
|
||||
ret = ssh.exec_script("tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
|
||||
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
|
||||
self.assertEqual(ret.returncode, 1)
|
||||
self.assertEqual(ret.stdout, "")
|
||||
|
||||
@@ -26,7 +26,7 @@ class TestDeploymentMethods(unittest.TestCase):
|
||||
# the pull function has the authentication at the internal cluster hardcoded
|
||||
# this is a refactoring opportunity: we should do it in a separate step
|
||||
# and allow to have pull work with any registry
|
||||
registry = "porcepix.sboai.cs.eurecom.fr"
|
||||
registry = cls_containerize.DEFAULT_REGISTRY
|
||||
with cls_cmd.getConnection("localhost") as cmd:
|
||||
ret = cmd.run(f"ping -c1 -w1 {registry}")
|
||||
if ret.returncode != 0: # could not ping once -> skip test
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
- Build_Proxy
|
||||
- Build_Cluster_Image
|
||||
- Pull_Cluster_Image
|
||||
- Run_Physim
|
||||
- Build_eNB
|
||||
- Initialize_eNB
|
||||
- Terminate_eNB
|
||||
@@ -23,7 +22,9 @@
|
||||
- Deploy_Object
|
||||
- Undeploy_Object
|
||||
- Cppcheck_Analysis
|
||||
- Deploy_Run_PhySim
|
||||
- Deploy_Run_OC_PhySim
|
||||
- Build_Deploy_Docker_PhySim
|
||||
- Build_Deploy_Source_PhySim
|
||||
- LicenceAndFormattingCheck
|
||||
- Push_Local_Registry
|
||||
- Pull_Local_Registry
|
||||
|
||||
204
ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml
Normal file
204
ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml
Normal file
@@ -0,0 +1,204 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>rfsim-5gnr-f1-n2-ho</htmlTabRef>
|
||||
<htmlTabName>F1 SA TDD N2 Handover</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
020001
|
||||
000004
|
||||
040001
|
||||
050001
|
||||
020001
|
||||
020002
|
||||
050002
|
||||
030001
|
||||
030002
|
||||
050003
|
||||
020001
|
||||
020002
|
||||
050004
|
||||
050001
|
||||
020001
|
||||
020002
|
||||
050002
|
||||
100001
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 0 + UE RFsim SA</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-0 oai-cuup-0 oai-du-0 oai-nr-ue</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 1 RFsim SA</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-1 oai-cuup-1 oai-du-1</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020002">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>10</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030002">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/4Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 1?</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050003">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci trigger_n2_ho 0,1 | ncat 192.168.71.180 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050004">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 0?</desc>
|
||||
<node>acamas</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<d_retx_th>10,100,100,100</d_retx_th>
|
||||
<u_retx_th>10,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -40,7 +40,7 @@
|
||||
<class>Build_Image</class>
|
||||
<desc>Build all Images</desc>
|
||||
<node>gracehopper3-oai</node>
|
||||
<kind>native_arm</kind>
|
||||
<kind>native_armv9</kind>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
|
||||
53
ci-scripts/xml_files/container_image_build_jetson.xml
Normal file
53
ci-scripts/xml_files/container_image_build_jetson.xml
Normal file
@@ -0,0 +1,53 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>build-tab</htmlTabRef>
|
||||
<htmlTabName>Build Container Images for ARM</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
000001
|
||||
000010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for server 0</desc>
|
||||
<node>jetson3-oai</node>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Build_Image</class>
|
||||
<desc>Build all Images</desc>
|
||||
<node>jetson3-oai</node>
|
||||
<kind>native_armv8</kind>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Push_Local_Registry</class>
|
||||
<desc>Push Images to Local Registry</desc>
|
||||
<node>jetson3-oai</node>
|
||||
<tag_prefix>armv8_</tag_prefix>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -36,18 +36,6 @@
|
||||
102002
|
||||
302002
|
||||
102003
|
||||
102004
|
||||
102005
|
||||
102006
|
||||
102007
|
||||
102008
|
||||
102009
|
||||
102010
|
||||
102011
|
||||
102012
|
||||
102013
|
||||
102014
|
||||
102015
|
||||
100100
|
||||
100010
|
||||
100020
|
||||
@@ -118,80 +106,8 @@
|
||||
|
||||
<testCase id="102003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 3</desc>
|
||||
<id>amarisoft_ue_3</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 4</desc>
|
||||
<id>amarisoft_ue_4</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102005">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 5</desc>
|
||||
<id>amarisoft_ue_5</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102006">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 6</desc>
|
||||
<id>amarisoft_ue_6</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102007">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 7</desc>
|
||||
<id>amarisoft_ue_7</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 8</desc>
|
||||
<id>amarisoft_ue_8</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102009">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 9</desc>
|
||||
<id>amarisoft_ue_9</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102010">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 10</desc>
|
||||
<id>amarisoft_ue_10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102011">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 11</desc>
|
||||
<id>amarisoft_ue_11</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102012">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 12</desc>
|
||||
<id>amarisoft_ue_12</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102013">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 13</desc>
|
||||
<id>amarisoft_ue_13</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102014">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 14</desc>
|
||||
<id>amarisoft_ue_14</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 15</desc>
|
||||
<id>amarisoft_ue_15</id>
|
||||
<desc>Attach UE 3 - 15</desc>
|
||||
<id>amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100010">
|
||||
|
||||
251
ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml
Normal file
251
ci-scripts/xml_files/container_sa_f1_ho_b210_quectel.xml
Normal file
@@ -0,0 +1,251 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-F1-HO-B210</htmlTabRef>
|
||||
<htmlTabName>F1 Handover 20 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000004
|
||||
000005
|
||||
000006
|
||||
000007
|
||||
000008
|
||||
000009
|
||||
000010
|
||||
000011
|
||||
000012
|
||||
000013
|
||||
000014
|
||||
000015
|
||||
000016
|
||||
000017
|
||||
000018
|
||||
000019
|
||||
000020
|
||||
000021
|
||||
000022
|
||||
000023
|
||||
000024
|
||||
000025
|
||||
000026
|
||||
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for groot</desc>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace on rocket</desc>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-CU in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>groot</node>
|
||||
<services>oai_cu</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU0 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<services>oai_du0</services>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU1 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>rocket</node>
|
||||
<services>oai_du1</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU0?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Detach_UE</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy CU-DU0</desc>
|
||||
<node>groot</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy DU1 </desc>
|
||||
<node>rocket</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>groot</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>rocket</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-SA-FR1-N310-2x2-60MHz</htmlTabRef>
|
||||
<htmlTabName>60 MHz 2x2 TDD SA</htmlTabName>
|
||||
<htmlTabName>60 MHz 2x2 TDD SA DSUUU</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100000
|
||||
@@ -114,8 +114,8 @@
|
||||
|
||||
<testCase id="071000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/200Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 200M -t 30 -R</iperf_args>
|
||||
<desc>iperf (DL/150Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 150M -t 30 -R</iperf_args>
|
||||
<svr_id>matix-cn5g</svr_id>
|
||||
<id>up2</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
@@ -124,8 +124,8 @@
|
||||
|
||||
<testCase id="071001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/180Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 180M -t 30</iperf_args>
|
||||
<desc>iperf (UL/250Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 250M -t 30</iperf_args>
|
||||
<svr_id>matix-cn5g</svr_id>
|
||||
<id>up2</id>
|
||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
||||
@@ -147,8 +147,8 @@
|
||||
<node>matix</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<d_retx_th>10,100,100,100</d_retx_th>
|
||||
<u_retx_th>10,100,100,100</u_retx_th>
|
||||
<d_retx_th>15,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
|
||||
179
ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml
Normal file
179
ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml
Normal file
@@ -0,0 +1,179 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>LONGRUN-5G-NRUE</htmlTabRef>
|
||||
<htmlTabName>Longrun 40 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
060000
|
||||
010000 010001
|
||||
800813
|
||||
020000
|
||||
800814
|
||||
020001
|
||||
000001
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
040001 040000
|
||||
333333
|
||||
444444
|
||||
060001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="060000">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010001">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-nr-ue</images>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020000">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800814">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy nrUE (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
<node>caracal</node>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAIUE</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000100">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/10Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 10M -t 600 -i 1 -R</iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000200">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/2Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 2M -t 600 -i 1 </iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="001000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20pings in 20sec</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>25</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040000">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<d_retx_th>20,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040001">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy nr UE</desc>
|
||||
<node>caracal</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>avra</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444444">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>caracal</node>
|
||||
<images>oai-nr-ue</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="060001">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -1,396 +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
|
||||
|
||||
030105 040301 040502 040606 040601 040603 040608 040605 040646 040641 040643 040648 040645 040401 040201 030201
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>test-ldpc-gpu</htmlTabRef>
|
||||
<htmlTabName>Test-ldpc-GPU</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000002 000003 000004 000005 000006 000007 000008 000009 000010 000011 000012 000013 000014 000015 000016 000017 000018 000019 000020 000021
|
||||
000022 000023 000024 000025 000026 000027 000028 000029 000030 000031 000032 000033 000034 000035 000036 000037 000038 000039 000040 000041
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3872 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3872 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4224 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4224 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4576 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4576 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4928 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 4928 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5280 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5280 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5632 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 5632 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 6336 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 6336 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7040 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7040 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7744 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 7744 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 8448 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 8448 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 1 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 1 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 100 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 100 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 193 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000027">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 193 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000028">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 500 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000029">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 500 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000030">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 561 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000031">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 561 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000032">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 600 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000033">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 600 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000034">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 641 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000035">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 641 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000036">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 2000 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000037">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 2000 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000038">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3000 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000039">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3000 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000040">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with CPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3840 -s10 -n100</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000041">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run LDPC Test with GPU</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>ldpctest</physim_test>
|
||||
<physim_run_args>-l 3840 -s10 -n100 -G 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
</testCaseList>
|
||||
@@ -37,7 +37,7 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Deploy_Run_PhySim</class>
|
||||
<class>Deploy_Run_OC_PhySim</class>
|
||||
<desc>Deploy and run physical simulator on openshift</desc>
|
||||
<oc_release>physims-4g</oc_release>
|
||||
<node>avra</node>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Deploy_Run_PhySim</class>
|
||||
<class>Deploy_Run_OC_PhySim</class>
|
||||
<desc>Deploy and run physical simulator on openshift</desc>
|
||||
<oc_release>physims-5g</oc_release>
|
||||
<node>avra</node>
|
||||
|
||||
46
ci-scripts/xml_files/physim_gracehopper.xml
Normal file
46
ci-scripts/xml_files/physim_gracehopper.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>build-tab</htmlTabRef>
|
||||
<htmlTabName>PhySim</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
010201
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Build_Deploy_Docker_PhySim</class>
|
||||
<desc>Deploy and Deploy PhySim</desc>
|
||||
<node>localhost</node>
|
||||
<ctest-opt>-R 5g -E physim.5g.nr_dlsim.mcs.mimo.test9 -j16</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -1,230 +0,0 @@
|
||||
<!--
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
-->
|
||||
|
||||
<testCaseList>
|
||||
<htmlTabRef>test-t2-offload-dec</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload Decoder</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
010204
|
||||
010111 010112 010121 010122 010131 010132
|
||||
010211 010212 010221 010222 010231 010232
|
||||
010311 010312 010321 010322 010331 010332
|
||||
402010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="010204">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="402010">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010111">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010112">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010121">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010122">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010131">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010132">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r106 -R106 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010211">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010212">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010221">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010222">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010231">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010232">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>550</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010311">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010312">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m5 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010321">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>600</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010322">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>650</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m15 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010331">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>650</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010332">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_ulsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_ulsim</physim_test>
|
||||
<physim_time_threshold>1100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -m25 -r273 -R273 -C10 -W2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -1,290 +0,0 @@
|
||||
<!--
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
-->
|
||||
|
||||
<testCaseList>
|
||||
<htmlTabRef>test-t2-offload-enc</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload Encoder</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
102040
|
||||
000111 000112 000121 000122 000131 000132
|
||||
000211 000212 000221 000222 000231 000232
|
||||
000311 000312 000321 000322 000331 000332
|
||||
000411 000412 000421 000422 000431 000432
|
||||
040201
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="102040">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040201">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000111">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>230</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000112">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000121">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000122">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>100</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000131">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000132">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 106 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b106 -R106 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000211">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000212">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>150</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000221">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>350</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000222">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>250</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000231">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X 8,9,10,11,12 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000232">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 1 layer</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000311">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000312">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000321">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000322">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 15, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000331">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X 8,9,10,11,12 -x2 -z2 -y2 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000332">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 25, 273 PRBs, 2 layers</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>500</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z2 -y2 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000411">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 5, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000412">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 5, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>200</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e5 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000421">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 20, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>400</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000422">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 20, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>300</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e15 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000431">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with CPU: SNR = 30, MCS = 27, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X8,9,10,11,12 -x2 -z4 -y4 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000432">
|
||||
<class>Run_Physim</class>
|
||||
<desc>Run nr_dlsim with T2 LDPC offload: SNR = 30, MCS = 27, 273 PRBs, 2 layers, 4 antennas</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<node>caracal</node>
|
||||
<physim_test>nr_dlsim</physim_test>
|
||||
<physim_time_threshold>450</physim_time_threshold>
|
||||
<physim_run_args>-n1000 -s30 -S30.2 -e25 -b273 -R273 -X4,5,6,7,8,9 -x2 -z4 -y4 -P --loader.ldpc.shlibversion _aal --nrLDPC_coding_aal.dpdk_dev af:00.0 --nrLDPC_coding_aal.dpdk_core_list 11-12 --nrLDPC_coding_aal.is_t2 1</physim_run_args>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
54
ci-scripts/xml_files/t2_offload_physim_enc_dec.xml
Normal file
54
ci-scripts/xml_files/t2_offload_physim_enc_dec.xml
Normal file
@@ -0,0 +1,54 @@
|
||||
<!--
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
-->
|
||||
|
||||
<testCaseList>
|
||||
<htmlTabRef>test-t2-offload-enc-dec</htmlTabRef>
|
||||
<htmlTabName>Test T2 Offload</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
010204
|
||||
111111
|
||||
402010
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="010204">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="402010">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>caracal</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Build_Deploy_Source_PhySim</class>
|
||||
<desc>Build and Deploy PhySim T2 Offload tests</desc>
|
||||
<node>caracal</node>
|
||||
<ctest-opt>-R 5g-offload -j1</ctest-opt>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
@@ -100,7 +100,6 @@ services:
|
||||
- SYS_NICE
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--rfsimulator.options chanmod
|
||||
--gNBs.[0].remote_s_address 0.0.0.0
|
||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.150
|
||||
--telnetsrv.shrmod ci
|
||||
@@ -111,6 +110,7 @@ services:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.150
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cu.sa.band78.106prb.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
|
||||
@@ -88,7 +88,7 @@ services:
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --rfsim --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --rfsim --log_config.global_log_options level,nocolor,time --gNBs.[0].TIMERS.t300 1000
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
|
||||
306
ci-scripts/yaml_files/5g_rfsimulator_n2_ho/docker-compose.yaml
Normal file
306
ci-scripts/yaml_files/5g_rfsimulator_n2_ho/docker-compose.yaml
Normal file
@@ -0,0 +1,306 @@
|
||||
services:
|
||||
mysql:
|
||||
container_name: "rfsim5g-mysql"
|
||||
image: mysql:8.0
|
||||
volumes:
|
||||
- ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
|
||||
- ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
- MYSQL_DATABASE=oai_db
|
||||
- MYSQL_USER=test
|
||||
- MYSQL_PASSWORD=test
|
||||
- MYSQL_ROOT_PASSWORD=linux
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 30
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.131
|
||||
oai-amf:
|
||||
container_name: "rfsim5g-oai-amf"
|
||||
image: oaisoftwarealliance/oai-amf:ci-tmp-pr-372-26c14bcd
|
||||
environment:
|
||||
- TZ=Europe/paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-amf/etc/config.yaml
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.132
|
||||
oai-smf:
|
||||
container_name: "rfsim5g-oai-smf"
|
||||
image: oaisoftwarealliance/oai-smf:v2.1.9
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-smf/etc/config.yaml
|
||||
depends_on:
|
||||
- oai-amf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.133
|
||||
oai-upf:
|
||||
container_name: "rfsim5g-oai-upf"
|
||||
image: oaisoftwarealliance/oai-upf:v2.1.9
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-upf/etc/config.yaml
|
||||
depends_on:
|
||||
- oai-smf
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
cap_drop:
|
||||
- ALL
|
||||
privileged: true
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.134
|
||||
interface_name: eth0
|
||||
traffic_net:
|
||||
ipv4_address: 192.168.72.134
|
||||
interface_name: eth1
|
||||
oai-ext-dn:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-ext-dn
|
||||
image: oaisoftwarealliance/trf-gen-cn5g:focal
|
||||
entrypoint: /bin/bash -c \
|
||||
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
|
||||
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
|
||||
depends_on:
|
||||
- oai-upf
|
||||
networks:
|
||||
traffic_net:
|
||||
ipv4_address: 192.168.72.135
|
||||
healthcheck:
|
||||
test: /bin/bash -c "ping -c 2 192.168.72.134"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cucp-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cucp-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.shrmod ci
|
||||
--telnetsrv.listenaddr 192.168.71.150
|
||||
--gNBs.[0].nr_cellid 0
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-amf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.150
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cucp.sa.e1-ho-n2.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cuup-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cuup-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.150
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.151
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.151
|
||||
--gNBs.[0].local_s_address 192.168.71.151
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.151
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cuup.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-cuup"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
|
||||
oai-du-0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-du-0
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].nr_cellid 0
|
||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
|
||||
--telnetsrv.shrmod ci
|
||||
--rfsimulator.serveraddr 192.168.71.190
|
||||
--gNBs.[0].servingCellConfigCommon.[0].ra_ResponseWindow 5
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.171
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-nr-ue:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- NET_ADMIN # for interface bringup
|
||||
- NET_RAW # for ping
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim --rfsimulator.serveraddr server
|
||||
--band 78 -C 3619200000 -r 106 --numerology 1 --ssb 516
|
||||
--uicc0.imsi 208990100001100
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.190
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cucp-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cucp-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.shrmod ci
|
||||
--telnetsrv.listenaddr 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.181
|
||||
--gNBs.[0].local_s_address 192.168.71.180
|
||||
--gNBs.[0].remote_s_address 192.168.71.181
|
||||
--gNBs.[0].gNB_ID 0xb00
|
||||
--gNBs.[0].nr_cellid 1
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NG_AMF 192.168.71.180
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.180
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.180
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-cucp.sa.e1-ho-n2.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-cuup-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-cuup-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cucp 192.168.71.180
|
||||
--gNBs.[0].E1_INTERFACE.[0].ipv4_cuup 192.168.71.181
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 192.168.71.181
|
||||
--gNBs.[0].local_s_address 192.168.71.181
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.181
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cuup.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-cuup"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-du-1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: rfsim5g-oai-du-1
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim
|
||||
--rfsimulator.serveraddr 192.168.71.190
|
||||
--log_config.global_log_options level,nocolor,time
|
||||
--gNBs.[0].gNB_DU_ID 1234
|
||||
--gNBs.[0].gNB_ID 0xb00
|
||||
--gNBs.[0].nr_cellid 1
|
||||
--gNBs.[0].servingCellConfigCommon.[0].physCellId 1
|
||||
--gNBs.[0].servingCellConfigCommon.[0].absoluteFrequencySSB 621312
|
||||
--gNBs.[0].servingCellConfigCommon.[0].dl_absoluteFrequencyPointA 620040
|
||||
--MACRLCs.[0].local_n_address 192.168.71.182
|
||||
--MACRLCs.[0].remote_n_address 192.168.71.180
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-cucp-1
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.182
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config.conf:/opt/oai-gnb/etc/neighbour-config.conf
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
start_period: 10s
|
||||
start_interval: 500ms
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
driver: bridge
|
||||
name: rfsim5g-oai-public-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.71.128/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "rfsim5g-public"
|
||||
traffic_net:
|
||||
driver: bridge
|
||||
name: rfsim5g-oai-traffic-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.72.128/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "rfsim5g-traffic"
|
||||
90
ci-scripts/yaml_files/5g_sa_f1_b210_ho/docker-compose.yml
Normal file
90
ci-scripts/yaml_files/5g_sa_f1_b210_ho/docker-compose.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
services:
|
||||
oai_cu:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-cu
|
||||
cap_drop:
|
||||
- ALL
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --telnetsrv --telnetsrv.listenport 9090 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cu.sa.f1.ho.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- ../../conf_files/neighbour-config-ho.conf:/opt/oai-gnb/etc/neighbour-config-ho.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai_du0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du0
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=30AD30F
|
||||
--telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.51prb.usrpb210.ho-pci0.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai_du1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du1
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=31F8010
|
||||
--telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.51prb.usrpb210.ho-pci1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
container_name: oai-gnb
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --sa --thread-pool 7,8,9,10,11,12
|
||||
USE_ADDITIONAL_OPTIONS: --thread-pool 7,8,9,10,11,12
|
||||
devices:
|
||||
- /dev/vfio:/dev/vfio/
|
||||
volumes:
|
||||
|
||||
@@ -23,7 +23,7 @@ services:
|
||||
- ../../../cmake_targets/share:/opt/cuBB/share
|
||||
userns_mode: host
|
||||
ipc: "shareable"
|
||||
image: cubb-build:25-2
|
||||
image: cubb-build:25-2-srs
|
||||
environment:
|
||||
- cuBB_SDK=/opt/nvidia/cuBB
|
||||
command: bash -c "sudo rm -rf /tmp/phy.log && sudo chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
|
||||
|
||||
@@ -82,8 +82,6 @@ Options:
|
||||
Makes the NR softmodem
|
||||
--RU
|
||||
Makes the OAI RRU
|
||||
--nrRU
|
||||
Makes the OAI nrRRU
|
||||
--UE
|
||||
Makes the UE specific parts (usim, nvram) from the given configuration file
|
||||
--nrUE
|
||||
@@ -229,11 +227,6 @@ function main() {
|
||||
TARGET_LIST="$TARGET_LIST oairu"
|
||||
echo_info "Will compile RRU"
|
||||
shift;;
|
||||
--nrRU)
|
||||
nrRU=1
|
||||
TARGET_LIST="$TARGET_LIST oainr_ru"
|
||||
echo_info "Will compile nrRRU"
|
||||
shift;;
|
||||
--UE)
|
||||
UE=1
|
||||
TARGET_LIST="$TARGET_LIST lte-uesoftmodem conf2uedata usim nvram"
|
||||
@@ -463,7 +456,7 @@ function main() {
|
||||
if [[ $TARGET_LIST != "" ]] && [[ -f $OPENAIR_DIR/CMakeLists.txt ]]; then
|
||||
# add some default libraries that should always be built
|
||||
# for eNB, gNB, UEs, simulators
|
||||
if [[ $gNB == 1 || $eNB == 1 || $UE == 1 || $nrUE == 1 || $SIMUS_PHY == 1 || $RU == 1 || $nrRU == 1 ]]; then
|
||||
if [[ $gNB == 1 || $eNB == 1 || $UE == 1 || $nrUE == 1 || $SIMUS_PHY == 1 || $RU == 1 ]]; then
|
||||
TARGET_LIST="$TARGET_LIST params_libconfig coding rfsimulator dfts params_yaml vrtsim rf_emulator"
|
||||
fi
|
||||
|
||||
|
||||
@@ -55,4 +55,53 @@ typedef enum {
|
||||
|
||||
typedef enum { NON_DYNAMIC, DYNAMIC } fiveQI_t;
|
||||
|
||||
/* QoS Priority Level */
|
||||
typedef enum {
|
||||
QOS_PRIORITY_SPARE = 0,
|
||||
QOS_PRIORITY_HIGHEST,
|
||||
QOS_PRIORITY_2,
|
||||
QOS_PRIORITY_3,
|
||||
QOS_PRIORITY_4,
|
||||
QOS_PRIORITY_5,
|
||||
QOS_PRIORITY_6,
|
||||
QOS_PRIORITY_7,
|
||||
QOS_PRIORITY_8,
|
||||
QOS_PRIORITY_9,
|
||||
QOS_PRIORITY_10,
|
||||
QOS_PRIORITY_11,
|
||||
QOS_PRIORITY_12,
|
||||
QOS_PRIORITY_13,
|
||||
QOS_PRIORITY_LOWEST,
|
||||
QOS_NO_PRIORITY
|
||||
} qos_priority_t;
|
||||
|
||||
/* Pre-emption Capability */
|
||||
typedef enum {
|
||||
PEC_SHALL_NOT_TRIGGER_PREEMPTION = 0,
|
||||
PEC_MAY_TRIGGER_PREEMPTION,
|
||||
PEC_MAX,
|
||||
} qos_pec_t;
|
||||
|
||||
/* Pre-emption Vulnerability */
|
||||
typedef enum {
|
||||
PEV_NOT_PREEMPTABLE = 0,
|
||||
PEV_PREEMPTABLE = 1,
|
||||
PEV_MAX,
|
||||
} qos_pev_t;
|
||||
|
||||
/* Allocation Retention Priority */
|
||||
typedef struct {
|
||||
qos_priority_t priority_level;
|
||||
qos_pec_t pre_emp_capability;
|
||||
qos_pev_t pre_emp_vulnerability;
|
||||
} qos_arp_t;
|
||||
|
||||
typedef struct pdusession_level_qos_parameter_s {
|
||||
uint8_t qfi;
|
||||
uint64_t fiveQI;
|
||||
uint64_t qos_priority;
|
||||
fiveQI_t fiveQI_type;
|
||||
qos_arp_t arp;
|
||||
} pdusession_level_qos_parameter_t;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -300,12 +300,16 @@ configmodule_interface_t *load_configmodule(int argc,
|
||||
cfgmode = strdup(CONFIG_LIBCONFIGFILE);
|
||||
}
|
||||
}
|
||||
static configmodule_interface_t *cfgptr;
|
||||
static configmodule_interface_t *cfgptr = NULL;
|
||||
if (cfgptr)
|
||||
fprintf(stderr, "ERROR: Call load_configmodule more than one time\n");
|
||||
|
||||
// The macros are not thread safe print_params and similar
|
||||
cfgptr = calloc(sizeof(configmodule_interface_t), 1);
|
||||
if (!cfgptr) {
|
||||
fprintf(stderr, "ERROR: cannot allocate a memory for configuration\n");
|
||||
return NULL;
|
||||
}
|
||||
/* argv_info is used to memorize command line options which have been recognized */
|
||||
/* and to detect unrecognized command line options which might have been specified */
|
||||
cfgptr->argv_info = calloc(sizeof(int32_t), argc+10);
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "common/config/config_paramdesc.h"
|
||||
#include "common/utils/T/T.h"
|
||||
#define CONFIG_MAX_OOPT_PARAMS 10 // maximum number of parameters in the -O option (-O <cfgmode>:P1:P2...
|
||||
#define CONFIG_MAX_ALLOCATEDPTRS 32768 // maximum number of parameters that can be dynamicaly allocated in the config module
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ else()
|
||||
endif()
|
||||
|
||||
add_library(params_yaml_static config_yaml.cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC yaml-cpp::yaml-cpp)
|
||||
if (ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
add_library(params_yaml MODULE config_yaml.cpp)
|
||||
target_link_libraries(params_yaml PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml PUBLIC yaml-cpp::yaml-cpp)
|
||||
set_target_properties(params_yaml PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
add_executable(test_yaml_config test_yaml_config.cpp)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest CONFIG_LIB)
|
||||
add_dependencies(tests test_yaml_config)
|
||||
add_test(NAME test_yaml_config
|
||||
COMMAND ./test_yaml_config)
|
||||
|
||||
@@ -97,4 +97,7 @@
|
||||
#define UNUSED_VARIABLE(vARIABLE) (void)(vARIABLE)
|
||||
#define NUM_PRACH_RX_FOR_NOISE_ESTIMATE 100
|
||||
|
||||
// SDAP
|
||||
#define MAX_QOS_FLOWS 64
|
||||
|
||||
#endif /* __PLATFORM_CONSTANTS_H__ */
|
||||
|
||||
@@ -4,10 +4,12 @@ target_link_libraries(log_headers INTERFACE T_headers)
|
||||
|
||||
set(log_sources log.c)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
set(log_sources ${log_sources} lttng-tp.c)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
add_library(LOG ${log_sources})
|
||||
target_include_directories(LOG PUBLIC .)
|
||||
target_link_libraries(LOG PRIVATE CONFIG_LIB)
|
||||
target_link_libraries(LOG PUBLIC log_headers)
|
||||
if (ENABLE_LTTNG)
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
#include <common/utils/utils.h>
|
||||
#include "common/utils/T/T.h"
|
||||
#if ENABLE_LTTNG
|
||||
#include "lttng-log.h"
|
||||
#endif
|
||||
|
||||
@@ -47,7 +47,7 @@ add_custom_target(generate_T DEPENDS T_IDs.h check_vcd)
|
||||
# even if T is off, we need the headers as many targets depend on it
|
||||
# for this, create an INTERFACE (header-only) library T_headers. To ensure the
|
||||
# headers have really been created, we make this headers library explicitly
|
||||
# depend on the generated headers.
|
||||
# depend on the generate_T target.
|
||||
add_library(T_headers INTERFACE)
|
||||
add_dependencies(T_headers T_IDs.h generate_T)
|
||||
target_include_directories(T_headers INTERFACE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -25,52 +25,6 @@
|
||||
#include "common/utils/mem/oai_memory.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
|
||||
/****************************************************************************
|
||||
** **
|
||||
** Name: memory_get_path() **
|
||||
** **
|
||||
** Description: Gets the absolute path of the file where non-volatile **
|
||||
** data are located **
|
||||
** **
|
||||
** Inputs: dirname: The directory where data file is located **
|
||||
** filename: The name of the data file **
|
||||
** Others: None **
|
||||
** **
|
||||
** Outputs: None **
|
||||
** Return: The absolute path of the non-volatile data **
|
||||
** file. The returned value is a dynamically **
|
||||
** allocated octet string that needs to be **
|
||||
** freed after usage. **
|
||||
** Others: None **
|
||||
** **
|
||||
***************************************************************************/
|
||||
char* memory_get_path(const char* dirname, const char* filename)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
const char* path = getenv(dirname);
|
||||
|
||||
if (path == NULL) {
|
||||
path = getenv(DEFAULT_NAS_PATH);
|
||||
}
|
||||
|
||||
if (path == NULL) {
|
||||
path = ".";
|
||||
}
|
||||
|
||||
/* Append non-volatile data file name */
|
||||
size_t size = strlen(path) + strlen(filename) + 1;
|
||||
char* data_filename = (char*)malloc(size + 1);
|
||||
|
||||
if (data_filename != NULL) {
|
||||
if (size != sprintf(data_filename, "%s/%s", path, filename)) {
|
||||
free(data_filename);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return data_filename;
|
||||
}
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
|
||||
@@ -35,8 +35,6 @@ typedef unsigned char uint8_t;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
char* memory_get_path(const char* dirname, const char* filename);
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid);
|
||||
|
||||
int memory_read(const char* datafile, void* data, size_t size);
|
||||
|
||||
@@ -88,6 +88,8 @@ static inline const char *rnti_types(nr_rnti_type_t rr)
|
||||
#define NR_NUMBER_OF_SYMBOLS_PER_SLOT_EXTENDED_CP 12
|
||||
#define NR_MAX_NB_LAYERS 4 // 8
|
||||
|
||||
#define BOUNDED_EVAL(a, b, c) (min(c, max(a, b)))
|
||||
|
||||
// Since the IQ samples are represented by SQ15 R+I (see https://en.wikipedia.org/wiki/Q_(number_format)) we need to compensate when
|
||||
// calcualting signal energy. Instead of shifting each sample right by 15, we can normalize the result in dB scale once its
|
||||
// calcualted. Signal energy is calculated using RMS^2, where each sample is squared before taking the average of the sum, therefore
|
||||
@@ -175,6 +177,17 @@ typedef struct {
|
||||
uint32_t step;
|
||||
} NR_timer_t;
|
||||
|
||||
typedef struct val_init {
|
||||
int val;
|
||||
bool init;
|
||||
} val_init_t;
|
||||
|
||||
typedef struct meas_s {
|
||||
uint16_t Nid_cell;
|
||||
val_init_t ss_rsrp_dBm;
|
||||
val_init_t csi_rsrp_dBm;
|
||||
} meas_t;
|
||||
|
||||
/**
|
||||
* @brief To start a timer
|
||||
* @param timer Timer to be started
|
||||
|
||||
@@ -44,7 +44,7 @@ add_library(telnetsrv_enb MODULE
|
||||
telnetsrv_enb_phycmd.c
|
||||
)
|
||||
add_dependencies(telnetsrv telnetsrv_enb)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs log_headers)
|
||||
|
||||
message(STATUS "No specific telnet functions for gnb")
|
||||
|
||||
|
||||
@@ -375,32 +375,32 @@ char *telnet_getvarvalue(telnetshell_vardef_t *var, int varindex)
|
||||
char *val;
|
||||
switch (var[varindex].vartype) {
|
||||
case TELNET_VARTYPE_INT32:
|
||||
val = malloc(64);
|
||||
val = calloc_or_fail(1, 64);
|
||||
snprintf(val, 64, "%i", *(int32_t *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT64:
|
||||
val = malloc(128);
|
||||
val = calloc_or_fail(1, 128);
|
||||
snprintf(val, 128, "%lli", (long long)*(int64_t *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT16:
|
||||
val = malloc(16);
|
||||
val = calloc_or_fail(1, 16);
|
||||
snprintf(val, 16, "%hi", *(short *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_INT8:
|
||||
val = malloc(16);
|
||||
val = calloc_or_fail(1, 16);
|
||||
snprintf(val, 16, "%i", (int)(*(int8_t *)(var[varindex].varvalptr)));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_UINT:
|
||||
val = malloc(64);
|
||||
val = calloc_or_fail(1, 64);
|
||||
snprintf(val, 64, "%u", *(unsigned int *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
case TELNET_VARTYPE_DOUBLE:
|
||||
val = malloc(32);
|
||||
val = calloc_or_fail(1, 32);
|
||||
snprintf(val, 32, "%g\n", *(double *)(var[varindex].varvalptr));
|
||||
break;
|
||||
|
||||
@@ -409,7 +409,7 @@ char *telnet_getvarvalue(telnetshell_vardef_t *var, int varindex)
|
||||
break;
|
||||
|
||||
default:
|
||||
val = malloc(64);
|
||||
val = calloc_or_fail(1, 64);
|
||||
snprintf(val, 64, "ERR:var %i unknown type", varindex);
|
||||
break;
|
||||
}
|
||||
@@ -927,7 +927,7 @@ int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmdde
|
||||
for (int j = 0; cmd[j].cmdfunc != NULL; j++) {
|
||||
if (cmd[j].cmdflags & TELNETSRV_CMDFLAG_PUSHINTPOOLQ) {
|
||||
if (afifo == NULL) {
|
||||
afifo = malloc(sizeof(notifiedFIFO_t));
|
||||
afifo = calloc_or_fail(1, sizeof(notifiedFIFO_t));
|
||||
initNotifiedFIFO(afifo);
|
||||
}
|
||||
cmd[j].qptr = afifo;
|
||||
@@ -956,8 +956,8 @@ int telnetsrv_checkbuildver(char *mainexec_buildversion, char **shlib_buildvers
|
||||
}
|
||||
|
||||
int telnetsrv_getfarray(loader_shlibfunc_t **farray) {
|
||||
int const num_func_tln_srv = 3;
|
||||
*farray = malloc(sizeof(loader_shlibfunc_t) * num_func_tln_srv);
|
||||
int const num_func_tln_srv = 3;
|
||||
*farray = calloc_or_fail(num_func_tln_srv, sizeof(loader_shlibfunc_t));
|
||||
(*farray)[0].fname=TELNET_ADDCMD_FNAME;
|
||||
(*farray)[0].fptr=(int (*)(void) )add_telnetcmd;
|
||||
(*farray)[1].fname=TELNET_POLLCMDQ_FNAME;
|
||||
|
||||
@@ -86,7 +86,7 @@ int get_measurgroups(telnet_measurgroupdef_t **measurgroups) {
|
||||
|
||||
void measurcmd_display_phycpu(telnet_printfunc_t prnt) {
|
||||
PHY_VARS_NR_UE *UE = PHY_vars_UE_g[0][0];
|
||||
telnet_cpumeasurdef_t cpumeasur[MAX_CPU_STAT_TYPE];
|
||||
telnet_cpumeasurdef_t cpumeasur[MAX_CPU_STAT_TYPE] = {};
|
||||
for (int i = 0; i < MAX_CPU_STAT_TYPE; i++) {
|
||||
sprintf(cpumeasur[i].statname, "%s", UE->phy_cpu_stats.cpu_time_stats[i].meas_name);
|
||||
cpumeasur[i].astatptr = &UE->phy_cpu_stats.cpu_time_stats[i];
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h"
|
||||
#include "openair2/LAYER2/nr_rlc/nr_rlc_entity_am.h"
|
||||
#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h"
|
||||
#include "openair2/RRC/NR/rrc_gNB_mobility.h"
|
||||
|
||||
#define TELNETSERVERCODE
|
||||
#include "telnetsrv.h"
|
||||
@@ -196,6 +197,53 @@ int rrc_gNB_trigger_f1_ho(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern void nr_HO_N2_trigger_telnet(gNB_RRC_INST *rrc, uint32_t neighbour_pci, uint32_t rrc_ue_id);
|
||||
|
||||
/** @brief Trigger N2 handover for UE
|
||||
* @param buf: Neighbour PCI, SCell PCI, RRC UE ID
|
||||
* @param debug: Debug flag
|
||||
* @param prnt: Print function
|
||||
* @return 0 on success, -1 on failure */
|
||||
int rrc_gNB_trigger_n2_ho(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
{
|
||||
if (!RC.nrrrc)
|
||||
ERROR_MSG_RET("no RRC present, cannot list counts\n");
|
||||
|
||||
if (!buf) {
|
||||
ERROR_MSG_RET("Please provide neighbour cell id and ue id\n");
|
||||
} else {
|
||||
// Parse neighbour cell PCI
|
||||
char *token = strtok(buf, ",");
|
||||
if (!token) {
|
||||
ERROR_MSG_RET("Invalid input. Expected format: Neighbour PCI, ueId\n");
|
||||
}
|
||||
uint32_t neighbour_pci = strtol(token, NULL, 10);
|
||||
|
||||
// Parse ueId
|
||||
token = strtok(NULL, ",");
|
||||
if (!token) {
|
||||
ERROR_MSG_RET("Missing UE ID\n");
|
||||
}
|
||||
uint32_t ueId = strtol(token, NULL, 10);
|
||||
|
||||
// Retrieve UE context
|
||||
rrc_gNB_ue_context_t *ue_p = rrc_gNB_get_ue_context(RC.nrrrc[0], ueId);
|
||||
if (!ue_p) {
|
||||
ERROR_MSG_RET("UE with id %u not found\n", ueId);
|
||||
}
|
||||
gNB_RRC_UE_t *UE = &ue_p->ue_context;
|
||||
|
||||
// Trigger N2 handover
|
||||
nr_HO_N2_trigger_telnet(RC.nrrrc[0], neighbour_pci, UE->rrc_ue_id);
|
||||
|
||||
// Print success message
|
||||
prnt("RRC N2 handover triggered for UE %u with neighbour cell id %u\n",
|
||||
ueId,
|
||||
neighbour_pci);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int force_ul_failure(char *buf, int debug, telnet_printfunc_t prnt)
|
||||
{
|
||||
if (!RC.nrmac)
|
||||
@@ -245,6 +293,7 @@ static telnetshell_cmddef_t cicmds[] = {
|
||||
{"trigger_f1_ho", "[rrc_ue_id(int,opt)]", rrc_gNB_trigger_f1_ho},
|
||||
{"fetch_du_by_ue_id", "[rrc_ue_id(int,opt)]", fetch_du_by_ue_id},
|
||||
{"get_current_bwp", "[rnti(hex,opt)]", get_current_bwp},
|
||||
{"trigger_n2_ho", "[neighbour_pci(uint32_t),ueId(uint32_t)]", rrc_gNB_trigger_n2_ho},
|
||||
{"", "", NULL},
|
||||
};
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ void measurcmd_display_rlcstats(telnet_printfunc_t prnt) {
|
||||
UE_info_t *UE_info = &(RC.mac[eNB_id]->UE_info);
|
||||
telnet_ltemeasurdef_t statsptr[]=LTE_RLCMEASURE;
|
||||
int num_rlcmeasure = sizeof(statsptr)/sizeof(telnet_ltemeasurdef_t );
|
||||
unsigned int *rlcstats = malloc(num_rlcmeasure*sizeof(unsigned int));
|
||||
unsigned int *rlcstats = calloc_or_fail(num_rlcmeasure,sizeof(unsigned int));
|
||||
eNB_MAC_INST *eNB = RC.mac[eNB_id];
|
||||
|
||||
for(int i=0; i <num_rlcmeasure ; i++) {
|
||||
|
||||
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
while ( 1 ) {
|
||||
if ( read(fd,&doneRequest, sizeof(doneRequest)) == sizeof(doneRequest)) {
|
||||
printf("%lu" SEP "%lu" SEP "%lu" SEP "%lu" "\n",
|
||||
printf("%lu" SEP "%llu" SEP "%llu" SEP "%llu" "\n",
|
||||
doneRequest.key,
|
||||
(doneRequest.startProcessingTime-doneRequest.creationTime)/cpuCyclesMicroSec,
|
||||
(doneRequest.endProcessingTime-doneRequest.startProcessingTime)/cpuCyclesMicroSec,
|
||||
|
||||
@@ -7,7 +7,7 @@ add_library(time_management_core OBJECT
|
||||
time_client.c)
|
||||
|
||||
target_link_libraries(time_management PUBLIC time_management_core)
|
||||
target_link_libraries(time_management_core PRIVATE ${T_LIB})
|
||||
target_link_libraries(time_management_core PRIVATE log_headers)
|
||||
|
||||
if(ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
|
||||
50
doc/BUILD.md
50
doc/BUILD.md
@@ -1,26 +1,14 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">OAI Build Procedures</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# OAI Build Procedures
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
This page is valid on tags starting from **`2019.w09`**.
|
||||
|
||||
# Overview
|
||||
## Overview
|
||||
|
||||
The [OAI EPC](https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master/docs/DEPLOY_HOME_MAGMA_MME.md) and [OAI 5GC](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) are developed in distinct projects with their own documentation and are not further described here.
|
||||
|
||||
OAI softmodem sources, which aim to implement 3GPP compliant UEs, eNodeB and gNodeB can be downloaded from the Eurecom [gitlab repository](./GET_SOURCES.md).
|
||||
OAI softmodem sources, which aim to implement 3GPP compliant UEs, eNodeB and gNodeB can be downloaded from the Eurecom [gitlab repository](setup/GET_SOURCES.md).
|
||||
|
||||
Sources come with a build script [build_oai](../cmake_targets/build_oai) located at the root of the `openairinterface5g/cmake_targets` directory. This script is developed to build the oai binaries (executables,shared libraries) for different hardware platforms, and use cases.
|
||||
|
||||
@@ -40,7 +28,7 @@ Running the [build_oai](../cmake_targets/build_oai) script also generates some
|
||||
- `nvram`: a binary used to build (4G) UE (IMEI...) and EMM (IMSI, registered PLMN) non volatile data.
|
||||
- `genids` T Tracer utility, used at build time to generate `T_IDs.h` include file. This binary is located in the [T Tracer source file directory](../common/utils/T) .
|
||||
|
||||
The build system for OAI uses [cmake](https://cmake.org/) which is a tool to generate makefiles. The `build_oai` script is a wrapper using `cmake` and `make`/`ninja` to ease the oai build and use. It logs the `cmake` and `ninja`/`make` commands it executes. The file describing how to build the executables from source files is the [CMakeLists.txt](../CMakeLists.txt), it is used as input by cmake to generate the makefiles.
|
||||
The build system for OAI uses [cmake](https://cmake.org/) which is a tool to generate makefiles. The `build_oai` script is a wrapper using `cmake` and `make`/`ninja` to ease the oai build and use. It logs the `cmake` and `ninja`/`make` commands it executes. The file describing how to build the executables from source files is the [CMakeLists.txt](CMakeLists.txt), it is used as input by cmake to generate the makefiles.
|
||||
|
||||
cmake is further extended by using [CPM](https://github.com/cpm-cmake/CPM.cmake). CPM is a cmake script that handles external code dependencies. It is setup to cache downloaded code in `~/.cache/cpm`. While most external dependencies should be handled by system package managers, CPM has the advantage of using any code that is available in a public git repository.
|
||||
|
||||
@@ -49,9 +37,9 @@ The oai softmodem supports many use cases, and new ones are regularly added. Mos
|
||||
- s1, noS1
|
||||
- all simulators as the rfsimulator, the L2 simulator, with exception of PHY simulators, which are distinct executables.
|
||||
|
||||
# Running `build_oai`
|
||||
## Running `build_oai`
|
||||
|
||||
## List of options
|
||||
### List of options
|
||||
|
||||
Calling the `build_oai` script with the `-h` option gives the list of all available options. A number of important ones:
|
||||
|
||||
@@ -64,9 +52,9 @@ Calling the `build_oai` script with the `-h` option gives the list of all availa
|
||||
- `--ninja` is to use the `ninja` build tool, which speeds up compilation.
|
||||
- `-c` is to clean the workspace and force a complete rebuild.
|
||||
|
||||
`build_oai` also provides various options to enable runtime error checkers, i.e. sanitizers in order to find various types of bugs in the codebase and eventually enhance the stability of the OAI softmodems. Refer to [sanitizers.md](./dev_tools/sanitizers.md) for more details.
|
||||
`build_oai` also provides various options to enable runtime error checkers, i.e. sanitizers in order to find various types of bugs in the codebase and eventually enhance the stability of the OAI softmodems. Refer to [sanitizers.md](dev_tools/sanitizers.md) for more details.
|
||||
|
||||
## Installing dependencies
|
||||
### Installing dependencies
|
||||
|
||||
Install all dependencies by issuing the `-I` option. To install furthermore libraries for optional libraries, use the `--install-optional-packages` option. The `-I` option will also install dependencies for an SDR when paired with `-w`. For instance, in order to install all dependencies and the ones for USRP, run:
|
||||
|
||||
@@ -77,7 +65,7 @@ cd openairinterface5g/cmake_targets/
|
||||
|
||||
Note the section on installing UHD further down for more information.
|
||||
|
||||
## Installing (new) asn1c from source
|
||||
### Installing (new) asn1c from source
|
||||
|
||||
With tag 2023.w22, we switch from our [own
|
||||
`asn1c`](https://gitlab.eurecom.fr/oai/asn1c.git) to a [community-maintained
|
||||
@@ -107,7 +95,7 @@ install elsewhere, using one of these two methods:
|
||||
cmake .. -GNinja -DASN1C_EXEC=/opt/asn1c/bin/asn1c
|
||||
```
|
||||
|
||||
## Installing UHD from source
|
||||
### Installing UHD from source
|
||||
|
||||
Previously for Ubuntu distributions, when installing the pre-requisites, most of the packages are installed from PPA.
|
||||
|
||||
@@ -139,7 +127,7 @@ See:
|
||||
* `cmake_targets/tools/uhd-4.x-tdd-patch.diff`
|
||||
* `cmake_targets/tools/build_helper` --> function `install_usrp_uhd_driver_from_source`
|
||||
|
||||
## Building PHY Simulators
|
||||
### Building PHY Simulators
|
||||
|
||||
The PHY layer simulators (LTE and NR) can be built as follows:
|
||||
|
||||
@@ -150,9 +138,9 @@ cd openairinterface5g/cmake_targets/
|
||||
|
||||
After completing the build, the binaries are available in the `cmake_targets/ran_build/build` directory.
|
||||
|
||||
Detailed information about these simulators can be found [in the dedicated page](./physical-simulators.md)
|
||||
Detailed information about these simulators can be found [in the dedicated page](usage/physical-simulators.md)
|
||||
|
||||
## Building UEs, eNodeB and gNodeB Executables
|
||||
### Building UEs, eNodeB and gNodeB Executables
|
||||
|
||||
After downloading the source files, a single build command can be used to get the binaries supporting all the oai softmodem use cases (UE and [eg]NodeB):
|
||||
|
||||
@@ -165,7 +153,7 @@ You can build any oai softmodem executable separately, you may not need all of t
|
||||
|
||||
After completing the build, the binaries are available in the `cmake_targets/ran_build/build` directory.
|
||||
|
||||
## Building Optional Binaries
|
||||
### Building Optional Binaries
|
||||
|
||||
There are a number of optional libraries that can be built in support of the
|
||||
RAN, such as telnetsrv, scopes, offloading libraries, etc.
|
||||
@@ -187,7 +175,7 @@ Some libraries have further dependencies and might not build on every system:
|
||||
- `websrv`: npm and others
|
||||
- `ldpc_aal`: DPDK with patch
|
||||
|
||||
# Running `cmake` directly
|
||||
## Running `cmake` directly
|
||||
|
||||
`build_oai` is a wrapper on top of `cmake`. It is therefore possible to run `cmake` directly. An example using `ninja`: to build all "main targets" for 5G, excluding additional libraries:
|
||||
```
|
||||
@@ -217,9 +205,9 @@ cmake-gui ../../..
|
||||
```
|
||||
You can of course use all standard cmake/ninja/make commands in this directory.
|
||||
|
||||
## cmake presets
|
||||
### cmake presets
|
||||
|
||||
CMake presets are common project configure options. See https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
|
||||
CMake presets are common project configure options. See [here](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html).
|
||||
|
||||
Configure presets:
|
||||
|
||||
@@ -241,7 +229,7 @@ To build using a build preset:
|
||||
|
||||
cmake --build --preset <preset_name>
|
||||
|
||||
# Cross Compile
|
||||
## Cross Compile
|
||||
|
||||
If you want to use cross-compiler on x86 platform for aarch64 version, please refer the [cross-compile.md](./cross-compile.md) for more information.
|
||||
If you want to use cross-compiler on x86 platform for aarch64 version, please refer the [cross-compile.md](setup/cross-compile.md) for more information.
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ PROJECT_BRIEF = "Full experimental OpenSource LTE and NR implementation
|
||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/oai_logo.png
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/images/oai_logo.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[[_TOC_]]
|
||||
|
||||
# 1. Introduction
|
||||
## 1. Introduction
|
||||
|
||||
E1 is the interface that lies between the nodes CU Control Plane (CUCP) and CU User Plane (CUUP). Once the nodes are configured, all user plane traffic flows through CUUP.
|
||||
|
||||
@@ -75,13 +75,13 @@ sequenceDiagram
|
||||
Note over u: E1AP_CUUP_task (SCTP Handler)
|
||||
Note over u: ASN1 decoder
|
||||
```
|
||||
More details about the E1AP procedures in OAI are available in this document: [E1 Procedures](./e1ap_procedures.md).
|
||||
More details about the E1AP procedures in OAI are available in this document: [E1 Procedures](e1ap_procedures.md).
|
||||
|
||||
# 2. Running the E1 Split
|
||||
## 2. Running the E1 Split
|
||||
|
||||
The setup is assuming that all modules are running on the same machine. The user can refer to the [F1 design document](./../F1AP/F1-design.md) for local deployment of the DU.
|
||||
The setup is assuming that all modules are running on the same machine. The user can refer to the [F1 design document](../F1AP/F1-design.md) for local deployment of the DU.
|
||||
|
||||
## 2.1 Configuration File
|
||||
### 2.1 Configuration File
|
||||
|
||||
The gNB is started based on the node type that is specified in the configuration file. The following parameters must be configured accordingly.
|
||||
|
||||
@@ -130,9 +130,9 @@ The CUUP uses the IP address specified in `gNBs.[0].local_s_address` for F1-U an
|
||||
|
||||
Alternatively, you can use the config files `ci-scripts/conf_files/gnb-cucp.sa.f1.conf` and `ci-scripts/conf_files/gnb-cuup.sa.f1.conf`.
|
||||
|
||||
## 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
### 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md).
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](../tutorials/NR_SA_Tutorial_OAI_CN5G.md).
|
||||
|
||||
0. Open wireshark to capture the E1AP messages. You might set the capture filter
|
||||
to `sctp` to limit the number of captured packages.
|
||||
@@ -165,15 +165,15 @@ OAI UE:
|
||||
sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --rfsimulator.serveraddr 127.0.0.1
|
||||
```
|
||||
|
||||
# 3. Configuration file IP addresses of network functions
|
||||
## 3. Configuration file IP addresses of network functions
|
||||
|
||||
You can also run the nodes on different machines. If you do so please change the interface parameters accordingly and make sure the interfaces are reachable. Please refer to the following figure for an overview of all parameters.
|
||||
|
||||
{width=1200}
|
||||
{width=1200}
|
||||
|
||||
[PDF version](./images/e1-archi.pdf) | [LaTeX/TikZ version](./images/e1-archi.tex) if you want to modify to reflect your setup
|
||||
[PDF version](images/e1-archi.pdf) | [LaTeX/TikZ version](images/e1-archi.tex) if you want to modify to reflect your setup
|
||||
|
||||
# 4. Multiple CU-UP
|
||||
## 4. Multiple CU-UP
|
||||
|
||||
It is possible to connect multiple CU-UP to the same CU-CP. In the handler of
|
||||
the E1 Setup Request, the CU-CP verifies that the PLMN(s) (MCC, MNC) between
|
||||
@@ -195,6 +195,6 @@ that you have to restart the CU-CP if you want to connect the CU-UP again
|
||||
(e.g., after a crash). The CU-CP might also misfunction during attach if a
|
||||
CU-UP was connected, but disconnected in the meantime.
|
||||
|
||||
# 5. Abnormal conditions
|
||||
## 5. Abnormal conditions
|
||||
|
||||
* The CU-UP goes offline during normal operation (e.g. UEs have a valid PDU Session and are exchanging data on the UP): after restarting the CU-UP, the UP is not restored and the user will notice GTP errors. In this case the UEs have to reconnect.
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">E1AP Procedures</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# E1AP Procedures
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Introduction
|
||||
## Introduction
|
||||
The E1 interface is between the gNB-CU-CP (Central Unit - Control Plane) and gNB-CU-UP (Central Unit - User Plane) nodes. This interface is governed by the E1 Application Protocol (E1AP) outlined in the 3GPP release 16 specifications, specifically in the documents:
|
||||
* 3GPP TS 38.463 - E1 Application Protocol (E1AP)
|
||||
* 3GPP TS 38.460 - E1 general aspects and principles
|
||||
@@ -26,18 +14,18 @@ The E1AP protocol consists of the following sets of functions:
|
||||
* E1 Bearer Context Management functions
|
||||
* TEID allocation function
|
||||
|
||||
## E1 Bearer Context Management function
|
||||
### E1 Bearer Context Management function
|
||||
This function handles the establishment, modification, and release of E1 bearer contexts.
|
||||
* E1 Bearer Context Establishment: initiation of E1 bearer context is by gNB-CU-CP and acceptance or rejection is determined by gNB-CU-UP based on admission control criteria (e.g., resource availability).
|
||||
* E1 Bearer Context Modification: can be initiated by either gNB-CU-CP or gNB-CU-UP, with the receiving node having the authority to accept or reject the modification.
|
||||
* Release of Bearer Context: can be triggered either directly by gNB-CU-CP or following a request from gNB-CU-UP.
|
||||
* QoS-Flow to DRB Mapping Configuration: responsible for setting up and modifying the QoS-flow to DRB mapping configuration. gNB-CU-CP decides the flow-to-DRB mapping, generates SDAP and PDCP configurations, and provides them to gNB-CU-UP.
|
||||
|
||||
# OAI implementation
|
||||
## OAI implementation
|
||||
|
||||
For the E1AP design in OAI, please refer to the [E1 Design](./E1-design.md) document.
|
||||
For the E1AP design in OAI, please refer to the [E1 Design](E1-design.md) document.
|
||||
|
||||
## E1 re-establishment
|
||||
### E1 re-establishment
|
||||
|
||||
The purpose of this procedure is to follow-up the re-establishment of RRC connection over the E1 interface. For all activated DRBs a Bearer Context Modification from CU-CP to CU-UP is necessary, according to clause 9.2.2.4 of 3GPP TS 38.463. If any modification to the bearer context is required, the CU-CP informs the CU-UP with the relevant IEs (e.g. in case of PDCP re-establishment, PDCP Configuration IE clause 9.3.1.38), Current implementation in OAI:
|
||||
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">F1 split design</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# F1 split design
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Introduction
|
||||
## Introduction
|
||||
|
||||
The F1 interface is the functional split of 3GPP between the CU (centralized
|
||||
unit: PDCP, RRC, SDAP) and the DU (distributed unit: RLC, MAC, PHY). It is
|
||||
@@ -33,17 +21,17 @@ F1-U:
|
||||
|
||||
No equivalent for 4G exists.
|
||||
|
||||
## Control plane (F1-C)
|
||||
### Control plane (F1-C)
|
||||
|
||||
The interface F1-C is designed for the exchange of signalling messages between the
|
||||
Radio Network Layer (RNL) and the Transport Network Layer (TNL). It
|
||||
consists of F1 Application Protocol messages (F1-AP) exchanged over SCTP.
|
||||
|
||||
## Data plane (F1-U)
|
||||
### Data plane (F1-U)
|
||||
|
||||
F1-U uses GTP-U for information exchange.
|
||||
|
||||
# OAI Implementation Status
|
||||
## OAI Implementation Status
|
||||
|
||||
The implementation of F1AP messages is seamlessly integrated into OAI, supporting both Monolithic SA
|
||||
and CU/DU functional split modes. The F1 code is therefore always compiled with nr-softmodem.
|
||||
@@ -59,17 +47,17 @@ This is the current status:
|
||||
* SA
|
||||
* Single cell per DU
|
||||
* Multiple DUs connected to one CU (both CP and UP)
|
||||
* [Mobility between DUs connected to a single CU](../handover-tutorial.md)
|
||||
* [Mobility between DUs connected to a single CU](../tutorials/handover-tutorial.md)
|
||||
- Not supported:
|
||||
* NSA
|
||||
|
||||
## F1-C
|
||||
### F1-C
|
||||
|
||||
### F1AP messages
|
||||
#### F1AP messages
|
||||
|
||||
Refer to [FEATURE_SET.md](FEATURE_SET.md#gNB-F1AP) to learn about the current F1AP implementation status.
|
||||
Refer to [FEATURE_SET.md](../setup/FEATURE_SET.md#gnb-f1ap) to learn about the current F1AP implementation status.
|
||||
|
||||
### High-level F1-C code structure
|
||||
#### High-level F1-C code structure
|
||||
|
||||
The F1 interface is used internally between CU (mostly RRC) and DU (mostly MAC)
|
||||
to exchange information. In DL, the CU sends messages as defined by the
|
||||
@@ -170,7 +158,7 @@ sequenceDiagram
|
||||
TASK_MAC_GNB->>+TASK_RRC_GNB: raw F1AP message (ITTI)
|
||||
```
|
||||
|
||||
## F1-U
|
||||
### F1-U
|
||||
|
||||
Current status:
|
||||
|
||||
@@ -178,7 +166,7 @@ Current status:
|
||||
* Each packet is acknowledged individually
|
||||
* Support of multiple DUs per CU
|
||||
|
||||
# How to run
|
||||
## How to run
|
||||
|
||||
As mentioned earlier, OAI uses F1 internally. It is always compiled in.
|
||||
To start CU/DU, you use `./nr-softmodem` with the appropriate configuration
|
||||
@@ -190,7 +178,7 @@ sudo cmake_targets/ran_build/build/nr-softmodem -O ci-scripts/conf_files/gnb-du.
|
||||
```
|
||||
|
||||
These files are tested in the CI, and are configured for use in docker,
|
||||
see [this `docker-compose` file](../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
see [this `docker-compose` file](../../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
|
||||
The rules to decide if a config triggers a start of a DU, CU, or monolithic
|
||||
gNB, are, in order:
|
||||
@@ -200,7 +188,7 @@ gNB, are, in order:
|
||||
(`tr_s_preference`), it is a CU.
|
||||
3. It is a (monolithic) gNB.
|
||||
|
||||
## F1 IP configuration for Local network deployment of F1
|
||||
### F1 IP configuration for Local network deployment of F1
|
||||
|
||||
The following paragraphs explain the IP configuration for F1 in the OAI config
|
||||
files on the example of a a local deployment. We assume that the CU will bind
|
||||
@@ -242,7 +230,7 @@ the options `MACRLCs.[0].local_n_address` and
|
||||
`MACRLCs.[0].local_n_address_f1u`, respectively. Note that this is not foreseen
|
||||
for the CU; in the case of the CU, please use separate CU-UP and CU-CP.
|
||||
|
||||
## Configuration of multiple DUs
|
||||
### Configuration of multiple DUs
|
||||
|
||||
Upon F1 Setup Request of a new DU, the CU cross-checks that
|
||||
|
||||
@@ -260,9 +248,9 @@ You have to of course make sure that the local interface of the DU
|
||||
Assuming you use RFsim, you should make the RFsimulator server side (typically
|
||||
the gNB) bind on different hosts (`rfsimulator.serverport`).
|
||||
|
||||
# Code documentation
|
||||
## Code documentation
|
||||
|
||||
## Common multi-threading architecture
|
||||
### Common multi-threading architecture
|
||||
|
||||
The CU and DU interfaces are based on ITTI threads (see `common/utils/ocp_itti/itti.md`)
|
||||
adopted by all OAI upper layers to run isolated threads dedicated to one feature.
|
||||
@@ -301,7 +289,7 @@ All GTP-U tunnels are managed in a Linux Thread, that have partially ITTI design
|
||||
3. incoming packets are sent to the tunnel creator using a C callback (the callback function is given in tunnel creation order). The callback should not block
|
||||
|
||||
|
||||
## F1-C messages towards the CU
|
||||
### F1-C messages towards the CU
|
||||
|
||||
The CU thread starts when the CU starts. It opens listening socket on the
|
||||
configuration-specified IP/port by sending the appropriate message to
|
||||
@@ -332,7 +320,7 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
| UE Context Release Request | `F1AP_UE_CONTEXT_RELEASE_REQ` | `rrc_CU_process_ue_context_release_request()` | RRC will trigger UE release |
|
||||
| UE Context Release Complete | `F1AP_UE_CONTEXT_RELEASE_COMPLETE` | `rrc_CU_process_ue_context_release_complete()` | frees UE Context, signals to NGAP |
|
||||
|
||||
## F1-C Messages towards the DU
|
||||
### F1-C Messages towards the DU
|
||||
|
||||
The task "gNB app", after reading the configuration file, sends a message
|
||||
`F1AP_DU_REGISTER_REQ` to the DU task. This message contains network
|
||||
@@ -371,9 +359,9 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
a reconfiguration has to be triggered if the CU receives a CellGroupConfig,
|
||||
originating at the DU. See also flag `expect_reconfiguration`.
|
||||
|
||||
## F1-U messages
|
||||
### F1-U messages
|
||||
|
||||
### General
|
||||
#### General
|
||||
|
||||
In the DU in UL, RLC checks in `deliver_sdu()` if we are operating in split
|
||||
mode, and either (direct) calls `pdcp_data_ind` (DRB) or (f1ap) sends a GTP
|
||||
@@ -390,7 +378,7 @@ In the DU in DL, assuming the GTP-U tunnel exists, GTP decapsulates the packet
|
||||
and calls the reception call back `nr_rlc_data_req()`, which enqueues the
|
||||
packet into the UE's RLC buffer.
|
||||
|
||||
## Tunnel Setup
|
||||
### Tunnel Setup
|
||||
|
||||
In GTP-U, TS 29.281 specifies a optional header (NR RAN Container). This
|
||||
extension header may be transmitted in a G-PDU over the X2-U, Xn-U and F1-U user
|
||||
|
||||
@@ -1,25 +1,13 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">F1AP Messages Encoding & Decoding Library</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# F1AP Messages Encoding & Decoding Library
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
|
||||
# Intro
|
||||
## Intro
|
||||
|
||||
This library is for the encoding, decoding and testing of F1AP (F1 Application Protocol) messages.
|
||||
|
||||
# Implementation Details
|
||||
## Implementation Details
|
||||
|
||||
The library includes the following components:
|
||||
|
||||
@@ -40,7 +28,7 @@ e.g. The following module contains functions that performs the encoding/decoding
|
||||
|
||||
* [f1ap_rrc_message_transfer.c](../../openair2/F1AP/lib/f1ap_rrc_message_transfer.c)
|
||||
|
||||
# Testing
|
||||
## Testing
|
||||
|
||||
The functions in the file [f1ap_lib_common.c](../../openair2/F1AP/tests/f1ap_lib_test.c) are used to test F1AP message encoding and decoding functionalities, according to the following steps:
|
||||
|
||||
|
||||
@@ -1,38 +1,27 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">Open Air LTE Emulation</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# Open Air LTE Emulation
|
||||
|
||||
**Note: unless you know what you are doing, you likely do not need this!
|
||||
> **Note:**
|
||||
> **Unless you know what you are doing, you likely do not need this!
|
||||
Rather, you are probably looking for the
|
||||
[RFsimulator](../radio/rfsimulator/README.md)!**
|
||||
[RFsimulator](../../radio/rfsimulator/README.md)!**
|
||||
|
||||
oaisim has been scraped and replaced by the same programs that are used for the
|
||||
real-time operation, `lte-softmodem` and `lte-uesoftmodem`. This uses the IF4p5
|
||||
fronthaul protocol to achieve the communication.
|
||||
|
||||
Context: oaisim used to be a simulation mode inside OAI to emulate an eNB and
|
||||
> Context: oaisim used to be a simulation mode inside OAI to emulate an eNB and
|
||||
multiple UEs.
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Build
|
||||
## Build
|
||||
|
||||
Build eNB/UE as normal, as also described in [How to build the eNB and the UE](./BUILD.md):
|
||||
Build eNB/UE as normal, as also described in [How to build the eNB and the UE](../BUILD.md):
|
||||
```bash
|
||||
./build_oai -c --ninja --eNB --UE
|
||||
```
|
||||
|
||||
# How to run an eNB with the noS1 option
|
||||
## How to run an eNB with the noS1 option
|
||||
|
||||
The following paragraph(s) explains how to run the L1 simulator in noS1 mode and using the oai kernel modules.
|
||||
|
||||
@@ -48,7 +37,7 @@ $ cd ../ran_build/build
|
||||
$ sudo -E ./lte-softmodem -O YYY.conf --noS1
|
||||
```
|
||||
|
||||
# How to run a UE with the noS1 option
|
||||
## How to run a UE with the noS1 option
|
||||
|
||||
Similarly modify the example configuration file in `/openairinterface5g/ci-scripts/conf_files/rru.band7.nos1.simulator.conf` and replace loopback interface and IP addresses. Copy your modifications to a new file, let's call XXX.conf the resulting configuration file.
|
||||
|
||||
@@ -64,7 +53,7 @@ $ sudo ./lte-uesoftmodem -O XXX.conf -r 25 --siml1 --noS1
|
||||
|
||||
That should give you equivalent functionality to what you had with oaisim including noise and RF channel emulation (path loss / fading, etc.). You should also be able to run multiple UEs.
|
||||
|
||||
# How to ping an eNB from a UE and vice versa (with the noS1 option)
|
||||
## How to ping an eNB from a UE and vice versa (with the noS1 option)
|
||||
|
||||
Once your eNB and UE (built with the noS1 option) are running and synchronised, you can ping the eNB from the UE with the following command:
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">L2 nFAPI Simulator Usage</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# L2 nFAPI Simulator Usage
|
||||
|
||||
## 4G L2 nFAPI simulator
|
||||
|
||||
@@ -18,11 +6,11 @@ This simulator allows to test L2 and above Layers using the nFAPI interface.
|
||||
|
||||
The UE executable is able to "simulate" multiple UEs in order to stimulate the scheduler in the eNB.
|
||||
|
||||
**This simulator is available starting the `v1.0.0` release on the `master` branch.**
|
||||
> **This simulator is available starting the `v1.0.0` release on the `master` branch.**
|
||||
|
||||
**2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
> **2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
|
||||
**2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
> **2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
|
||||
Currently the Continuous Integration process is validating this simulator the following way:
|
||||
|
||||
@@ -38,11 +26,12 @@ Normally it should be fine to run both executables on the same host using the `l
|
||||
2. [No S1 -- eNB and UE on 2 hosts](L2NFAPI_NOS1.md)
|
||||
|
||||
|
||||
**2022/03/08: Starting the `2022.w01` tag on the `develop` branch, the L2 nFAPI simulation is using a proxy.**
|
||||
> **2022/03/08: Starting the `2022.w01` tag on the `develop` branch, the L2 nFAPI simulation is using a proxy.**
|
||||
|
||||
## 5G L2 nFAPI simulator
|
||||
|
||||
**Note: L2 simulator does not work anymore.**
|
||||
> **Note:**
|
||||
> **L2 simulator does not work anymore.**
|
||||
|
||||
### Download and Build the Proxy Server (from EpiSci)
|
||||
|
||||
@@ -1,26 +1,14 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">L2 nFAPI Simulator (no S1 Mode / 2-host deployment)</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# L2 nFAPI Simulator (no S1 Mode / 2-host deployment)
|
||||
|
||||
**2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
> **2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
|
||||
**2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
> **2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
|
||||
**Table of Contents**
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# 1. Environment #
|
||||
## 1. Environment
|
||||
|
||||
You may not have access to an EPC or you don't want to hassle to deploy one.
|
||||
|
||||
@@ -31,11 +19,11 @@ You may not have access to an EPC or you don't want to hassle to deploy one.
|
||||
|
||||
Example of L2 nFAPI Simulator testing environment:
|
||||
|
||||
<img src="./images/L2-sim-noS1-2-host-deployment.png" alt="" border=3>
|
||||

|
||||
|
||||
Note that the IP addresses are indicative and need to be adapted to your environment.
|
||||
> Note that the IP addresses are indicative and need to be adapted to your environment.
|
||||
|
||||
# 2. Retrieve the OAI eNB-UE source code #
|
||||
## 2. Retrieve the OAI eNB-UE source code
|
||||
|
||||
At the time of writing, the tag used in the `develop` branch to do this documentation was `2020.w16`.
|
||||
|
||||
@@ -57,7 +45,7 @@ cd ue_folder
|
||||
git checkout develop
|
||||
```
|
||||
|
||||
# 3. Setup of the USIM information in UE folder #
|
||||
## 3. Setup of the USIM information in UE folder
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineC
|
||||
@@ -113,11 +101,11 @@ UE1: // <- Edit here
|
||||
|
||||
You can repeat the operation for as many users you want to test with.
|
||||
|
||||
# 4. Setup of the Configuration files #
|
||||
## 4. Setup of the Configuration files
|
||||
|
||||
**CAUTION: both proposed configuration files resides in the ci-scripts realm. You can copy them but you CANNOT push any modification on these 2 files as part of an MR without informing the CI team.**
|
||||
> **CAUTION: both proposed configuration files resides in the ci-scripts realm. You can copy them but you CANNOT push any modification on these 2 files as part of an MR without informing the CI team.**
|
||||
|
||||
## 4.1. The eNB Configuration file ##
|
||||
### 4.1. The eNB Configuration file
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
@@ -143,7 +131,8 @@ MACRLCs = (
|
||||
);
|
||||
```
|
||||
|
||||
If you are testing more than 16 UEs, a proper setting on the RUs is necessary. **Note that this part is NOT present in the original configuration file**.
|
||||
If you are testing more than 16 UEs, a proper setting on the RUs is necessary.
|
||||
> **Note that this part is NOT present in the original configuration file**.
|
||||
|
||||
```
|
||||
RUs = (
|
||||
@@ -178,7 +167,7 @@ Last, the S1 interface shall be properly set.
|
||||
};
|
||||
```
|
||||
|
||||
## 4.2. The UE Configuration file ##
|
||||
### 4.2. The UE Configuration file
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
@@ -203,11 +192,11 @@ L1s = (
|
||||
);
|
||||
```
|
||||
|
||||
# 5. Build OAI UE and eNodeB #
|
||||
## 5. Build OAI UE and eNodeB
|
||||
|
||||
See [Build documentation](./BUILD.md).
|
||||
See [Build documentation](../BUILD.md).
|
||||
|
||||
# 6. Start the eNB #
|
||||
## 6. Start the eNB
|
||||
|
||||
In the first terminal (the one you used to build the eNB):
|
||||
|
||||
@@ -229,7 +218,7 @@ If you don't use redirection, you can test but many logs are printed on the cons
|
||||
|
||||
We do recommend the redirection in steady mode once your setup is correct.
|
||||
|
||||
# 7. Start the UE #
|
||||
## 7. Start the UE
|
||||
|
||||
In the second terminal (the one you used to build the UE):
|
||||
|
||||
@@ -279,7 +268,7 @@ oaitun_uem1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-
|
||||
|
||||
Having the 4 oaitun_ue tunnel interfaces up and with an allocated address means the connection with EPC went alright.
|
||||
|
||||
# 8. Test with ping #
|
||||
## 8. Test with ping
|
||||
|
||||
In a third terminal, after around 10 seconds, the UE(s) shall be connected to the eNB: Check with ifconfig
|
||||
|
||||
@@ -319,15 +308,15 @@ $ ssh sudousername@machineC
|
||||
iperf -c 10.0.1.1 -u -t 30 -b 2M -i 1 -fm -B 10.0.1.2 -p 5002
|
||||
```
|
||||
|
||||
# 9. Limitations #
|
||||
## 9. Limitations
|
||||
|
||||
|
||||
----
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
[oai softmodem features](FEATURE_SET.md)
|
||||
[oai softmodem features](../setup/FEATURE_SET.md)
|
||||
|
||||
[oai softmodem build procedure](BUILD.md)
|
||||
[oai softmodem build procedure](../BUILD.md)
|
||||
|
||||
[L2 nfapi simulator](L2NFAPI.md)
|
||||
@@ -1,26 +1,14 @@
|
||||
<table style="border-collapse: collapse; border: none;">
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||
<b><font size = "5">L2 nFAPI Simulator (with S1 / 2-host deployment)</font></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
# L2 nFAPI Simulator (with S1 / 2-host deployment)
|
||||
|
||||
**2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
> **2022/03/08: CAUTION, THIS TUTORIAL IS NO LONGER VALID on the `develop` branch after the `2022.w01` tag.**
|
||||
|
||||
**2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
> **2022/03/08: CAUTION, THE LAST VALID TAG on `develop` branch is `2021.w51_c`.**
|
||||
|
||||
**Table of Contents**
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# 1. Environment #
|
||||
## 1. Environment
|
||||
|
||||
3 servers are used in this deployment. You can use Virtual Machines instead of each server; like it is done in the CI process.
|
||||
|
||||
@@ -30,17 +18,17 @@
|
||||
|
||||
Example of L2 nFAPI Simulator testing environment:
|
||||
|
||||
<img src="./images/L2-sim-S1-3-host-deployment.png" alt="" border=3>
|
||||

|
||||
|
||||
Note that the IP addresses are indicative and need to be adapted to your environment.
|
||||
> Note that the IP addresses are indicative and need to be adapted to your environment.
|
||||
|
||||
# 2. Prepare the EPC #
|
||||
## 2. Prepare the EPC
|
||||
|
||||
Create the environment for the EPC and register all **USIM** information into the **HSS** database.
|
||||
|
||||
If you are using OAI-EPC ([see on GitHub](https://github.com/OPENAIRINTERFACE/openair-epc-fed)), build **HSS/MME/SPGW** and create config files.
|
||||
|
||||
# 3. Retrieve the OAI eNB-UE source code #
|
||||
## 3. Retrieve the OAI eNB-UE source code
|
||||
|
||||
At the time of writing, the tag used in the `develop` branch to do this documentation was `2020.w16`.
|
||||
|
||||
@@ -62,7 +50,7 @@ cd ue_folder
|
||||
git checkout develop
|
||||
```
|
||||
|
||||
# 4. Setup of the USIM information in UE folder #
|
||||
## 4. Setup of the USIM information in UE folder
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineC
|
||||
@@ -118,11 +106,11 @@ UE1: // <- Edit here
|
||||
|
||||
You can repeat the operation for as many users you want to test with.
|
||||
|
||||
# 5. Setup of the Configuration files #
|
||||
## 5. Setup of the Configuration files
|
||||
|
||||
**CAUTION: both proposed configuration files resides in the ci-scripts realm. You can copy them but you CANNOT push any modification on these 2 files as part of an MR without informing the CI team.**
|
||||
> **CAUTION: both proposed configuration files resides in the ci-scripts realm. You can copy them but you CANNOT push any modification on these 2 files as part of an MR without informing the CI team.**
|
||||
|
||||
## 5.1. The eNB Configuration file ##
|
||||
### 5.1. The eNB Configuration file
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
@@ -148,7 +136,8 @@ MACRLCs = (
|
||||
);
|
||||
```
|
||||
|
||||
If you are testing more than 16 UEs, a proper setting on the RUs is necessary. **Note that this part is NOT present in the original configuration file**.
|
||||
If you are testing more than 16 UEs, a proper setting on the RUs is necessary.
|
||||
> **Note that this part is NOT present in the original configuration file**.
|
||||
|
||||
```
|
||||
RUs = (
|
||||
@@ -183,7 +172,7 @@ Last, the S1 interface shall be properly set.
|
||||
};
|
||||
```
|
||||
|
||||
## 5.2. The UE Configuration file ##
|
||||
### 5.2. The UE Configuration file
|
||||
|
||||
```bash
|
||||
$ ssh sudousername@machineB
|
||||
@@ -208,11 +197,11 @@ L1s = (
|
||||
);
|
||||
```
|
||||
|
||||
# 6. Build OAI UE and eNodeB #
|
||||
## 6. Build OAI UE and eNodeB
|
||||
|
||||
See [Build documentation](./BUILD.md).
|
||||
See [Build documentation](../BUILD.md).
|
||||
|
||||
# 7. Start EPC #
|
||||
## 7. Start EPC
|
||||
|
||||
Start the EPC on machine `A`.
|
||||
|
||||
@@ -221,7 +210,7 @@ $ ssh sudousername@machineA
|
||||
# Start the EPC
|
||||
```
|
||||
|
||||
# 8. Start the eNB #
|
||||
## 8. Start the eNB
|
||||
|
||||
In the first terminal (the one you used to build the eNB):
|
||||
|
||||
@@ -235,7 +224,7 @@ If you don't use redirection, you can test but many logs are printed on the cons
|
||||
|
||||
We do recommend the redirection in steady mode once your setup is correct.
|
||||
|
||||
# 9. Start the UE #
|
||||
## 9. Start the UE
|
||||
|
||||
In the second terminal (the one you used to build the UE):
|
||||
|
||||
@@ -285,7 +274,7 @@ oaitun_uem1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-
|
||||
|
||||
Having the 4 oaitun_ue tunnel interfaces up and with an allocated address means the connection with EPC went alright.
|
||||
|
||||
# 10. Test with ping #
|
||||
## 10. Test with ping
|
||||
|
||||
In a third terminal, after around 10 seconds, the UE(s) shall be connected to the eNB: Check with ifconfig
|
||||
|
||||
@@ -299,15 +288,15 @@ $ ping -c 20 192.172.0.5
|
||||
|
||||
iperf operations can also be performed.
|
||||
|
||||
# 11. Limitations #
|
||||
## 11. Limitations
|
||||
|
||||
|
||||
----
|
||||
|
||||
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
|
||||
|
||||
[oai softmodem features](FEATURE_SET.md)
|
||||
[oai softmodem features](../setup/FEATURE_SET.md)
|
||||
|
||||
[oai softmodem build procedure](BUILD.md)
|
||||
[oai softmodem build procedure](../BUILD.md)
|
||||
|
||||
[L2 nfapi simulator](L2NFAPI.md)
|
||||
@@ -10,7 +10,7 @@ about nFAPI can be found in SCF 225.2.0.
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Quickstart
|
||||
## Quickstart
|
||||
|
||||
Compile OAI as normal. Start the CN and make sure that the VNF configuration
|
||||
matches the PLMN/IP addresses. Then, run the VNF
|
||||
@@ -29,7 +29,7 @@ VNF!)
|
||||
You should not observe a difference between nFAPI split and monolithic.
|
||||
|
||||
|
||||
# Status
|
||||
## Status
|
||||
|
||||
All FAPI message can be transferred between VNF and PNF. This is because OAI
|
||||
uses FAPI with its corresponding messages internally, whether a split is in use
|
||||
@@ -54,7 +54,7 @@ When using RFsim, the system might run slower than in monolithic. This is
|
||||
because the PNF needs to slow down the execution time of a specific slot,
|
||||
because it has to send a Slot.indication to the VNF for scheduling.
|
||||
|
||||
# Configuration
|
||||
## Configuration
|
||||
|
||||
Both PNF and VNF are run through the `nr-softmodem` executable. The type of
|
||||
mode is switched through the `--nfapi` switch, with options `MONOLITHIC`
|
||||
@@ -70,7 +70,7 @@ If the type is `VNF`, you have to modify the `MACRLCs.tr_s_preference`
|
||||
- `MACRLCs.local_s_portd` (local south port for control): VNF's P5 local port
|
||||
- `MACRLCs.remote_s_portd` (remote south port for data): PNF's P7 remote port
|
||||
|
||||
Note that any L1-specific section (`L1s`, `RUs`,
|
||||
> Note that any L1-specific section (`L1s`, `RUs`,
|
||||
RFsimulator-specific/IF7.2-specific configuration or other radios, if
|
||||
necessary) will be ignored and can be deleted.
|
||||
|
||||
@@ -84,7 +84,7 @@ If the type is `PNF`, you have to modify modify the `L1s.tr_n_preference`
|
||||
- `L1s.local_n_portd` (local north port for data): PNF's P7 local port
|
||||
- `L1s.remote_n_portd` (remote north port for data): VNF's P7 remote port
|
||||
|
||||
Note that this file should contain additional, L1-specific sections (`L1s`,
|
||||
> Note that this file should contain additional, L1-specific sections (`L1s`,
|
||||
`RUs` RFsimulator-specific/IF7.2-specific configuration or other radios, if
|
||||
necessary).
|
||||
|
||||
@@ -109,10 +109,10 @@ can proceed as follows:
|
||||
`pnf.conf`, or provide them on the command line for the PNF.
|
||||
- to run, proceed as described in the quick start above.
|
||||
|
||||
Note: all L1-specific options have to be passed to the PNF, and remaining
|
||||
> Note: all L1-specific options have to be passed to the PNF, and remaining
|
||||
options to the VNF.
|
||||
|
||||
## Transport mechanisms between VNF and PNF
|
||||
### Transport mechanisms between VNF and PNF
|
||||
|
||||
Currently, the VNF/PNF split supports three transport mechanisms between each
|
||||
other:
|
||||
@@ -121,7 +121,8 @@ other:
|
||||
|
||||
The socket type may be changed by editing `nfapi_pnf_config_create()` and
|
||||
`nfapi_vnf_config_create()`, in both of which `_this->sctp = <value, 0 or
|
||||
1>;` indicate whether SCTP or regular sockets are to be used. Note: The
|
||||
1>;` indicate whether SCTP or regular sockets are to be used.
|
||||
> Note: The
|
||||
value of `_this->sctp` **must** be the same on the VNF and PNF.
|
||||
2. Intel WLS Lib, which uses DPDK to achieve a shared memory communication between components.
|
||||
3. nvIPC, which is used exclusively for the NVIDIA Aerial L1. Thus, it is only
|
||||
@@ -131,15 +132,15 @@ The change between transport mechanisms is done at compilation time:
|
||||
- No changes to the `build_oai` call are required in order to select socket communication, as it is the default.
|
||||
- In order to select WLS as the transport mechanism between VNF and PNF, first install the WLS library, and afterwards use `-t WLS` as a parameter of `build_oai`:
|
||||
|
||||
### How to use nFAPI
|
||||
#### How to use nFAPI
|
||||
|
||||
nFAPI is used by default. Compile and configure as indicated above.
|
||||
|
||||
### How to use Aerial
|
||||
#### How to use Aerial
|
||||
|
||||
Refer to [this document](./Aerial_FAPI_Split_Tutorial.md) for more information.
|
||||
Refer to [this document](../tutorials/Aerial_FAPI_Split_Tutorial.md) for more information.
|
||||
|
||||
### How to use WLS lib
|
||||
#### How to use WLS lib
|
||||
|
||||
Before the first compilation with WLS support, the [WLS
|
||||
library](https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/wls-lib.html)
|
||||
@@ -152,7 +153,7 @@ The WLS library has a few dependencies:
|
||||
|
||||
Additionally, a patch needs to be applied to the WLS lib Makefile in order for
|
||||
the shared library and headers to be installed into the system, the necessary
|
||||
patch is available [here](../cmake_targets/tools/install_wls_lib.patch)
|
||||
patch is available [here](../../cmake_targets/tools/install_wls_lib.patch)
|
||||
|
||||
Clone the code and apply the patch
|
||||
|
||||
@@ -169,11 +170,11 @@ After installing WLS, you can run the build command as shown below:
|
||||
|
||||
./build_oai -t WLS -w USRP --gNB --nrUE --ninja -C
|
||||
|
||||
#### How to run OAI PNF with OAI VNF
|
||||
##### How to run OAI PNF with OAI VNF
|
||||
|
||||
Refer to the above steps in [Quickstart](#quickstart), but run the PNF first as it is the WLS "master".
|
||||
|
||||
#### How to run OAI PNF with OSC/Radisys O-DU
|
||||
##### How to run OAI PNF with OSC/Radisys O-DU
|
||||
|
||||
Set up the hugepages for DPDK (1GB page size, 6 pages; this only needs to be
|
||||
done once):
|
||||
@@ -217,7 +218,7 @@ Run the O-DU over GDB
|
||||
|
||||
sudo -E gdb -ex run --readnever --args ./odu/odu
|
||||
|
||||
Note: If you see the following prompt in GDB
|
||||
> Note: If you see the following prompt in GDB
|
||||
|
||||
This GDB supports auto-downloading debuginfo from the following URLs:
|
||||
<https://debuginfod.ubuntu.com>
|
||||
@@ -231,11 +232,11 @@ Run the OAI-UE
|
||||
|
||||
sudo ./nr-uesoftmodem -r 273 --numerology 1 --band 78 -C 3400140000 --ssb 1518 --uicc0.imsi 001010000000001 --rfsim
|
||||
|
||||
# nFAPI logging system
|
||||
## nFAPI logging system
|
||||
|
||||
nFAPI has its own logging system, independent of OAI's. It can be activated by
|
||||
setting the `NFAPI_TRACE_LEVEL` environment variable to an appropriate value;
|
||||
see [the environment variables documentation](./environment-variables.md) for
|
||||
see [the environment variables documentation](../setup/environment-variables.md) for
|
||||
more info.
|
||||
|
||||
To see the (any) periodical output at the PNF, define `NFAPI_TRACE_LEVEL=info`.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user