From 37c9eebb8b21e73991f0535221bd4e8f358be71f Mon Sep 17 00:00:00 2001 From: Robert Schmidt <robert.schmidt@openairinterface.org> Date: Wed, 11 Jan 2023 15:30:05 +0100 Subject: [PATCH] NR_RLC: CMakeLists.txt in own subdirectory, with tests --- CMakeLists.txt | 29 ++++++++----------- openair2/CMakeLists.txt | 1 + openair2/LAYER2/CMakeLists.txt | 1 + openair2/LAYER2/nr_rlc/CMakeLists.txt | 22 ++++++++++++++ openair2/LAYER2/nr_rlc/tests/CMakeLists.txt | 14 +++++++++ .../LAYER2/nr_rlc/tests/exec_nr_rlc_test.sh | 18 ++++++++++++ openair2/LAYER2/nr_rlc/tests/test.c | 1 - 7 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 openair2/LAYER2/CMakeLists.txt create mode 100644 openair2/LAYER2/nr_rlc/CMakeLists.txt create mode 100644 openair2/LAYER2/nr_rlc/tests/CMakeLists.txt create mode 100755 openair2/LAYER2/nr_rlc/tests/exec_nr_rlc_test.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index a592ce73bf..185398c24e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1187,18 +1187,6 @@ set(RLC_V2 ${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_sdu.c ) -set(NR_RLC_SRC - ${OPENAIR2_DIR}/LAYER2/nr_rlc/asn1_utils.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_am.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_tm.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_um.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_oai_api.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_pdu.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_sdu.c - ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_ue_manager.c - ) - set(NR_PDCP_SRC ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_oai_api.c ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c @@ -1256,7 +1244,6 @@ set(L2_LTE_SRC ) set(L2_NR_SRC - ${NR_RLC_SRC} ${NR_PDCP_SRC} ${NR_SDAP_SRC} ${NR_RRC_DIR}/rrc_gNB.c @@ -1294,7 +1281,6 @@ set(L2_RRC_SRC_UE ) set(NR_L2_SRC_UE - ${NR_RLC_SRC} ${NR_PDCP_SRC} ${NR_SDAP_SRC} ${NR_UE_RRC_DIR}/L2_interface_ue.c @@ -1447,13 +1433,12 @@ add_library(e1_pdcp_if target_link_libraries(e1_pdcp_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) -target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap) +target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc) if(E2_AGENT) target_link_libraries(L2_NR PUBLIC e2_agent e2_ran_func) target_compile_definitions(L2_NR PRIVATE E2_AGENT) endif() - add_library(L2_LTE_NR ${L2_RRC_SRC} ${MAC_SRC} @@ -1482,7 +1467,7 @@ endif() target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs) add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} ) -target_link_libraries(NR_L2_UE PRIVATE f1ap) +target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc) target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs) add_library(MAC_NR_COMMON @@ -2450,6 +2435,16 @@ make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src}) include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt) +set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests") +set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL) +if(ENABLE_TESTS) + # activates globally adding tests such that they can be run using ctest + enable_testing() + # meta-target: each test is supposed to add_dependencies(tests ${NEWTEST}) + # then, it is possible to build and execute all tests using "ninja tests && ctest" + add_custom_target(tests) +endif() + add_subdirectory(common) add_subdirectory(doc) add_subdirectory(openair1) diff --git a/openair2/CMakeLists.txt b/openair2/CMakeLists.txt index c6e28a6b36..762d3670fb 100644 --- a/openair2/CMakeLists.txt +++ b/openair2/CMakeLists.txt @@ -3,6 +3,7 @@ if(E2_AGENT) add_subdirectory(E2AP) endif() add_subdirectory(F1AP) +add_subdirectory(LAYER2) add_subdirectory(M2AP) add_subdirectory(X2AP) add_subdirectory(RRC) diff --git a/openair2/LAYER2/CMakeLists.txt b/openair2/LAYER2/CMakeLists.txt new file mode 100644 index 0000000000..b8bc21e78c --- /dev/null +++ b/openair2/LAYER2/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(nr_rlc) diff --git a/openair2/LAYER2/nr_rlc/CMakeLists.txt b/openair2/LAYER2/nr_rlc/CMakeLists.txt new file mode 100644 index 0000000000..d72ac37d09 --- /dev/null +++ b/openair2/LAYER2/nr_rlc/CMakeLists.txt @@ -0,0 +1,22 @@ +add_library(nr_rlc_core OBJECT + nr_rlc_entity.c + nr_rlc_entity_am.c + nr_rlc_entity_tm.c + nr_rlc_entity_um.c + nr_rlc_pdu.c + nr_rlc_sdu.c) +target_include_directories(nr_rlc_core PRIVATE ../../..) +target_link_libraries(nr_rlc_core PRIVATE ${T_LIB}) +add_library(nr_rlc STATIC + asn1_utils.c + nr_rlc_oai_api.c + nr_rlc_ue_manager.c +) +# L2_NR: for PDCP +target_link_libraries(nr_rlc PUBLIC pthread f1ap nr_rlc_core UTIL ${T_LIB}) +target_include_directories(nr_rlc PRIVATE ../../..) +target_link_libraries(nr_rlc PRIVATE asn1_lte_rrc asn1_nr_rrc) + +if(ENABLE_TESTS) + add_subdirectory(tests) +endif() diff --git a/openair2/LAYER2/nr_rlc/tests/CMakeLists.txt b/openair2/LAYER2/nr_rlc/tests/CMakeLists.txt new file mode 100644 index 0000000000..b47293393d --- /dev/null +++ b/openair2/LAYER2/nr_rlc/tests/CMakeLists.txt @@ -0,0 +1,14 @@ + +foreach(TESTNUM RANGE 1 17) + add_executable(nr_rlc_test_${TESTNUM} test.c) + target_link_libraries(nr_rlc_test_${TESTNUM} PRIVATE nr_rlc_core pthread UTIL ${T_LIB}) + target_compile_definitions(nr_rlc_test_${TESTNUM} PRIVATE TEST="test${TESTNUM}.h") + #target_include_directories(nr_rlc_test_${TESTNUM} PRIVATE LOG) + #target_compile_options(nr_rlc_test_${TESTNUM} PRIVATE -g --coverage -Wall) + add_dependencies(tests nr_rlc_test_${TESTNUM}) +endforeach() + +add_test(NAME nr_rlc_tests + COMMAND exec_nr_rlc_test.sh ${CMAKE_CURRENT_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + diff --git a/openair2/LAYER2/nr_rlc/tests/exec_nr_rlc_test.sh b/openair2/LAYER2/nr_rlc/tests/exec_nr_rlc_test.sh new file mode 100755 index 0000000000..8f2052075b --- /dev/null +++ b/openair2/LAYER2/nr_rlc/tests/exec_nr_rlc_test.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# this script is to be executed in the current folder. It takes one argument, +# which is the directory in which the executables are. + +if [ $# -ne 1 ]; then + echo "usage: $0 <directory-of-execs>" + exit 1 +fi + +EXEC_DIR=$1 + +for i in {1..17}; do + diff \ + <($EXEC_DIR/nr_rlc_test_$i | \grep ^TEST) \ + <(gunzip -c test$i.txt.gz) \ + || exit 1 +done diff --git a/openair2/LAYER2/nr_rlc/tests/test.c b/openair2/LAYER2/nr_rlc/tests/test.c index 2ba5c35fff..235c477675 100644 --- a/openair2/LAYER2/nr_rlc/tests/test.c +++ b/openair2/LAYER2/nr_rlc/tests/test.c @@ -12,7 +12,6 @@ #include "common/utils/LOG/log.h" -int oai_exit; /* * GNB_AM <rx_maxsize> <tx_maxsize> <t_poll_retransmit> <t_reassembly> * <t_status_prohibit> <poll_pdu> <poll_byte> <max_retx_threshold> -- 2.26.2