From 718269f1eb3af2b1d4886cf8aebcf6a4aa9d600f Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Mon, 13 May 2024 15:55:21 +0200 Subject: [PATCH] Add test for F1AP DL RRC Transfer enc/dec messages --- openair2/F1AP/tests/f1ap_lib_test.c | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/openair2/F1AP/tests/f1ap_lib_test.c b/openair2/F1AP/tests/f1ap_lib_test.c index 896ea127e6..3bd71c97b5 100644 --- a/openair2/F1AP/tests/f1ap_lib_test.c +++ b/openair2/F1AP/tests/f1ap_lib_test.c @@ -82,8 +82,48 @@ static void test_initial_ul_rrc_message_transfer(void) free_initial_ul_rrc_message_transfer(&cp); } +/** + * @brief Test DL RRC Message Transfer encoding/decoding + */ +static void test_dl_rrc_message_transfer(void) +{ + uint8_t *rrc = (uint8_t *)calloc(strlen("RRC Container") + 1, sizeof(uint8_t)); + uint32_t *old_gNB_DU_ue_id = calloc(1, sizeof(uint32_t)); + AssertFatal(rrc != NULL && old_gNB_DU_ue_id != NULL, "out of memory\n"); + memcpy((void *)rrc, "RRC Container", strlen("RRC Container") + 1); + + f1ap_dl_rrc_message_t orig = { + .gNB_DU_ue_id = 12, + .gNB_CU_ue_id = 12, + .old_gNB_DU_ue_id = old_gNB_DU_ue_id, + .srb_id = 1, + .rrc_container = rrc, + .rrc_container_length = sizeof(rrc), + }; + + F1AP_F1AP_PDU_t *f1enc = encode_dl_rrc_message_transfer(&orig); + F1AP_F1AP_PDU_t *f1dec = f1ap_encode_decode(f1enc); + f1ap_msg_free(f1enc); + + f1ap_dl_rrc_message_t decoded = {0}; + bool ret = decode_dl_rrc_message_transfer(f1dec, &decoded); + AssertFatal(ret, "decode_initial_ul_rrc_message_transfer(): could not decode message\n"); + f1ap_msg_free(f1dec); + + ret = eq_dl_rrc_message_transfer(&orig, &decoded); + AssertFatal(ret, "eq_dl_rrc_message_transfer(): decoded message doesn't match\n"); + free_dl_rrc_message_transfer(&decoded); + + f1ap_dl_rrc_message_t cp = cp_dl_rrc_message_transfer(&orig); + ret = eq_dl_rrc_message_transfer(&orig, &cp); + AssertFatal(ret, "eq_dl_rrc_message_transfer(): copied message doesn't match\n"); + free_dl_rrc_message_transfer(&orig); + free_dl_rrc_message_transfer(&cp); +} + int main() { test_initial_ul_rrc_message_transfer(); + test_dl_rrc_message_transfer(); return 0; }