From cc0ad07aa0025bb4e6a050a8b8091e8c44926569 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Mon, 13 May 2024 15:51:22 +0200 Subject: [PATCH] Add test for F1AP UL RRC Message Transfer enc/dec lib --- openair2/F1AP/tests/f1ap_lib_test.c | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/openair2/F1AP/tests/f1ap_lib_test.c b/openair2/F1AP/tests/f1ap_lib_test.c index 3bd71c97b5..5974e52f7a 100644 --- a/openair2/F1AP/tests/f1ap_lib_test.c +++ b/openair2/F1AP/tests/f1ap_lib_test.c @@ -87,7 +87,7 @@ static void test_initial_ul_rrc_message_transfer(void) */ static void test_dl_rrc_message_transfer(void) { - uint8_t *rrc = (uint8_t *)calloc(strlen("RRC Container") + 1, sizeof(uint8_t)); + uint8_t *rrc = 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); @@ -121,9 +121,44 @@ static void test_dl_rrc_message_transfer(void) free_dl_rrc_message_transfer(&cp); } +/** + * @brief Test UL RRC Message Transfer encoding/decoding + */ +static void test_ul_rrc_message_transfer(void) +{ + uint8_t rrc[] = "RRC Container"; + + f1ap_ul_rrc_message_t orig = { + .gNB_DU_ue_id = 12, + .gNB_CU_ue_id = 12, + .srb_id = 1, + .rrc_container = rrc, + .rrc_container_length = sizeof(rrc), + }; + + F1AP_F1AP_PDU_t *f1enc = encode_ul_rrc_message_transfer(&orig); + F1AP_F1AP_PDU_t *f1dec = f1ap_encode_decode(f1enc); + f1ap_msg_free(f1enc); + + f1ap_ul_rrc_message_t decoded = {0}; + bool ret = decode_ul_rrc_message_transfer(f1dec, &decoded); + AssertFatal(ret, "decode_initial_ul_rrc_message_transfer(): could not decode message\n"); + f1ap_msg_free(f1dec); + + ret = eq_ul_rrc_message_transfer(&orig, &decoded); + AssertFatal(ret, "eq_dl_rrc_message_transfer(): decoded message doesn't match\n"); + free_ul_rrc_message_transfer(&decoded); + + f1ap_ul_rrc_message_t cp = cp_ul_rrc_message_transfer(&orig); + ret = eq_ul_rrc_message_transfer(&orig, &cp); + AssertFatal(ret, "eq_dl_rrc_message_transfer(): copied message doesn't match\n"); + free_ul_rrc_message_transfer(&cp); +} + int main() { test_initial_ul_rrc_message_transfer(); test_dl_rrc_message_transfer(); + test_ul_rrc_message_transfer(); return 0; }