From 75b238633cf1b8e967bb02c2070b571afb225c96 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 7 Nov 2024 17:56:54 +0100 Subject: [PATCH] Add test for E1 CUUP Setup Failure --- openair2/E1AP/tests/e1ap_lib_test.c | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/openair2/E1AP/tests/e1ap_lib_test.c b/openair2/E1AP/tests/e1ap_lib_test.c index 52fe586198..91eab080a9 100644 --- a/openair2/E1AP/tests/e1ap_lib_test.c +++ b/openair2/E1AP/tests/e1ap_lib_test.c @@ -294,6 +294,47 @@ static void test_e1_cuup_setup_response(void) free_e1ap_cuup_setup_response(&cp); } +// Test for E1AP CU-UP Setup Failure +static void test_e1_cuup_setup_failure(void) +{ + e1ap_setup_fail_t orig = {.transac_id = 42, + .cause.type = E1AP_CAUSE_RADIO_NETWORK, + .cause.value = E1AP_RADIO_CAUSE_NORMAL_RELEASE, + .time_to_wait = malloc_or_fail(sizeof(long)), + .crit_diag = malloc_or_fail(sizeof(criticality_diagnostics_t))}; + *orig.time_to_wait = 5; + orig.crit_diag->procedure_code = malloc_or_fail(sizeof(*orig.crit_diag->procedure_code)); + *orig.crit_diag->procedure_code = 99; + orig.crit_diag->triggering_msg = malloc_or_fail(sizeof(*orig.crit_diag->triggering_msg)); + *orig.crit_diag->triggering_msg = TRIGGERING_MSG_SUCCESSFUL_OUTCOME; + orig.crit_diag->procedure_criticality = malloc_or_fail(sizeof(*orig.crit_diag->procedure_criticality)); + *orig.crit_diag->procedure_criticality = CRITICALITY_IGNORE; + orig.crit_diag->num_errors = 1; + orig.crit_diag->errors[0].ie_id = 66; + orig.crit_diag->errors[0].error_type = ERROR_TYPE_MISSING; + orig.crit_diag->errors[0].criticality = CRITICALITY_IGNORE; + + E1AP_E1AP_PDU_t *encoded = encode_e1ap_cuup_setup_failure(&orig); + E1AP_E1AP_PDU_t *decoded_msg = e1ap_encode_decode(encoded); + e1ap_msg_free(encoded); + + e1ap_setup_fail_t decoded = {0}; + bool ret = decode_e1ap_cuup_setup_failure(decoded_msg, &decoded); + AssertFatal(ret, "Failed to decode setup failure"); + e1ap_msg_free(decoded_msg); + + ret = eq_e1ap_cuup_setup_failure(&orig, &decoded); + AssertFatal(ret, "Decoded setup failure doesn't match original"); + free_e1ap_cuup_setup_failure(&decoded); + + e1ap_setup_fail_t cp = cp_e1ap_cuup_setup_failure(&orig); + ret = eq_e1ap_cuup_setup_failure(&orig, &cp); + AssertFatal(ret, "eq_e1ap_cuup_setup_failure(): copied message doesn't match\n"); + + free_e1ap_cuup_setup_failure(&cp); + free_e1ap_cuup_setup_failure(&orig); +} + int main() { // E1 Bearer Context Setup @@ -302,5 +343,6 @@ int main() // E1 Interface Management test_e1_cuup_setup_request(); test_e1_cuup_setup_response(); + test_e1_cuup_setup_failure(); return 0; }