Fix the test program [#536]

This commit is contained in:
Sukchan Lee 2020-08-31 22:41:39 -04:00
parent bc476c2e0e
commit 111536ea9a
18 changed files with 191 additions and 181 deletions

View File

@ -1502,3 +1502,20 @@ void ogs_pfcp_subnet_remove_all(void)
ogs_list_for_each_safe(&self.subnet_list, next_subnet, subnet)
ogs_pfcp_subnet_remove(subnet);
}
void ogs_pfcp_pool_init(ogs_pfcp_sess_t *sess)
{
ogs_pool_init(&sess->pdr_pool, OGS_MAX_NUM_OF_PDR);
ogs_pool_init(&sess->far_pool, OGS_MAX_NUM_OF_FAR);
ogs_pool_init(&sess->urr_pool, OGS_MAX_NUM_OF_URR);
ogs_pool_init(&sess->qer_pool, OGS_MAX_NUM_OF_QER);
ogs_pool_init(&sess->bar_pool, OGS_MAX_NUM_OF_BAR);
}
void ogs_pfcp_pool_final(ogs_pfcp_sess_t *sess)
{
ogs_pool_final(&sess->pdr_pool);
ogs_pool_final(&sess->far_pool);
ogs_pool_final(&sess->urr_pool);
ogs_pool_final(&sess->qer_pool);
ogs_pool_final(&sess->bar_pool);
}

View File

@ -362,6 +362,9 @@ ogs_pfcp_subnet_t *ogs_pfcp_subnet_next(ogs_pfcp_subnet_t *subnet);
void ogs_pfcp_subnet_remove(ogs_pfcp_subnet_t *subnet);
void ogs_pfcp_subnet_remove_all(void);
void ogs_pfcp_pool_init(ogs_pfcp_sess_t *sess);
void ogs_pfcp_pool_final(ogs_pfcp_sess_t *sess);
#ifdef __cplusplus
}
#endif

View File

@ -427,71 +427,88 @@ int amf_nsmf_pdu_session_handle_release_sm_context(amf_sess_t *sess, int state)
/* Check last session */
if (ogs_list_count(&amf_ue->sess_list) == 0) {
if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_authentication)) {
amf_ue_sbi_discover_and_send(OpenAPI_nf_type_AUSF, amf_ue, NULL,
amf_nausf_auth_build_authenticate);
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_de_registered)) {
nas_5gs_send_de_registration_accept(amf_ue);
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_exception)) {
if (state == AMF_RELEASE_SM_CONTEXT_NG_CONTEXT_REMOVE) {
/*
* 1. GMM Exception
* 1. Initial context setup failure
* 2. Release All SM contexts
* 3. UE Context release command
* 4. UE Context release complete
*/
ngap_send_amf_ue_context_release_command(amf_ue,
NGAP_Cause_PR_nas, NGAP_CauseNas_normal_release,
NGAP_UE_CTX_REL_UE_CONTEXT_REMOVE, 0);
NGAP_UE_CTX_REL_NG_CONTEXT_REMOVE, 0);
} else if (state == AMF_RELEASE_SM_CONTEXT_REGISTRATION_ACCEPT) {
/*
* 1. Registration request
* 2. Release All SM contexts
* 3. Registration accept
*/
nas_5gs_send_registration_accept(amf_ue);
} else if (state == AMF_RELEASE_SM_CONTEXT_SERVICE_ACCEPT) {
/*
* 1. Service request
* 2. Release All SM contexts
* 3. Service accept
*/
nas_5gs_send_service_accept(amf_ue);
} else {
if (state == AMF_RELEASE_SM_CONTEXT_NG_CONTEXT_REMOVE) {
/* NO_STATE */
if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_authentication)) {
amf_ue_sbi_discover_and_send(OpenAPI_nf_type_AUSF, amf_ue, NULL,
amf_nausf_auth_build_authenticate);
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_de_registered)) {
/*
* 1. Initial context setup failure
* 1. PDU session release request
* 2. PDUSessionResourceReleaseCommand +
* PDU session release command
* 3. PDUSessionResourceReleaseREsponse
* 4. PDU session release complete
* 5. Deregistration request
* 6. UEContextReleaseCommand
* 7. UEContextReleaseComplete
*/
nas_5gs_send_de_registration_accept(amf_ue);
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered)) {
/*
* 1. PDU session release request
* 2. PDUSessionResourceReleaseCommand +
* PDU session release command
* 3. PDUSessionResourceReleaseREsponse
* 4. PDU session release complete
*
* No Deregistration request in the above step
*
* So, Nothing to do!
*/
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_exception)) {
/*
* 1. GMM Exception
* 2. Release All SM contexts
* 3. UE Context release command
* 4. UE Context release complete
*/
ngap_send_amf_ue_context_release_command(amf_ue,
NGAP_Cause_PR_nas, NGAP_CauseNas_normal_release,
NGAP_UE_CTX_REL_NG_CONTEXT_REMOVE, 0);
NGAP_UE_CTX_REL_UE_CONTEXT_REMOVE, 0);
} else if (state == AMF_RELEASE_SM_CONTEXT_REGISTRATION_ACCEPT) {
/*
* 1. Registration request
* 2. Release All SM contexts
* 3. Registration accept
*/
nas_5gs_send_registration_accept(amf_ue);
} else if (state == AMF_RELEASE_SM_CONTEXT_SERVICE_ACCEPT) {
/*
* 1. Service request
* 2. Release All SM contexts
* 3. Service accept
*/
nas_5gs_send_service_accept(amf_ue);
} else {
ogs_fatal("Unknown state[%d]", state);
if (OGS_FSM_CHECK(&amf_ue->sm,
} else if (OGS_FSM_CHECK(&amf_ue->sm,
gmm_state_initial_context_setup)) {
ogs_fatal("Release SM Context in initial-context-setup");
} else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered)) {
ogs_fatal("Release SM Context in registered");
} else if (OGS_FSM_CHECK(
&amf_ue->sm, gmm_state_security_mode)) {
ogs_fatal("Release SM Context in security-mode");
} else {
ogs_fatal("Release SM Context : INVALID STATE");
}
ogs_fatal("Release SM Context in initial-context-setup");
ogs_assert_if_reached();
} else if (OGS_FSM_CHECK(
&amf_ue->sm, gmm_state_security_mode)) {
ogs_fatal("Release SM Context in security-mode");
ogs_assert_if_reached();
} else {
ogs_fatal("Release SM Context : INVALID STATE");
ogs_assert_if_reached();
}
}

View File

@ -389,11 +389,7 @@ sgwc_sess_t *sgwc_sess_add(sgwc_ue_t *sgwc_ue, char *apn)
}
memset(sess, 0, sizeof *sess);
ogs_pool_init(&sess->pfcp.pdr_pool, OGS_MAX_NUM_OF_PDR);
ogs_pool_init(&sess->pfcp.far_pool, OGS_MAX_NUM_OF_FAR);
ogs_pool_init(&sess->pfcp.urr_pool, OGS_MAX_NUM_OF_URR);
ogs_pool_init(&sess->pfcp.qer_pool, OGS_MAX_NUM_OF_QER);
ogs_pool_init(&sess->pfcp.bar_pool, OGS_MAX_NUM_OF_BAR);
ogs_pfcp_pool_init(&sess->pfcp);
sess->index = ogs_pool_index(&sgwc_sess_pool, sess);
ogs_assert(sess->index > 0 && sess->index <= ogs_app()->pool.sess);
@ -490,11 +486,7 @@ int sgwc_sess_remove(sgwc_sess_t *sess)
sgwc_bearer_remove_all(sess);
ogs_pool_final(&sess->pfcp.pdr_pool);
ogs_pool_final(&sess->pfcp.far_pool);
ogs_pool_final(&sess->pfcp.urr_pool);
ogs_pool_final(&sess->pfcp.qer_pool);
ogs_pool_final(&sess->pfcp.bar_pool);
ogs_pfcp_pool_final(&sess->pfcp);
ogs_pool_free(&sgwc_sess_pool, sess);

View File

@ -374,11 +374,7 @@ sgwu_sess_t *sgwu_sess_add(ogs_pfcp_f_seid_t *cp_f_seid,
ogs_assert(sess);
memset(sess, 0, sizeof *sess);
ogs_pool_init(&sess->pfcp.pdr_pool, OGS_MAX_NUM_OF_PDR);
ogs_pool_init(&sess->pfcp.far_pool, OGS_MAX_NUM_OF_FAR);
ogs_pool_init(&sess->pfcp.urr_pool, OGS_MAX_NUM_OF_URR);
ogs_pool_init(&sess->pfcp.qer_pool, OGS_MAX_NUM_OF_QER);
ogs_pool_init(&sess->pfcp.bar_pool, OGS_MAX_NUM_OF_BAR);
ogs_pfcp_pool_init(&sess->pfcp);
sess->index = ogs_pool_index(&sgwu_sess_pool, sess);
ogs_assert(sess->index > 0 && sess->index <= ogs_app()->pool.sess);
@ -412,11 +408,7 @@ int sgwu_sess_remove(sgwu_sess_t *sess)
ogs_hash_set(self.sess_hash, &sess->sgwc_sxa_seid,
sizeof(sess->sgwc_sxa_seid), NULL);
ogs_pool_final(&sess->pfcp.pdr_pool);
ogs_pool_final(&sess->pfcp.far_pool);
ogs_pool_final(&sess->pfcp.urr_pool);
ogs_pool_final(&sess->pfcp.qer_pool);
ogs_pool_final(&sess->pfcp.bar_pool);
ogs_pfcp_pool_final(&sess->pfcp);
ogs_pool_free(&sgwu_sess_pool, sess);

View File

@ -777,12 +777,7 @@ smf_sess_t *smf_sess_add_by_psi(smf_ue_t *smf_ue, uint8_t psi)
}
memset(sess, 0, sizeof *sess);
ogs_pool_init(&sess->pfcp.pdr_pool, OGS_MAX_NUM_OF_PDR);
ogs_pool_init(&sess->pfcp.far_pool, OGS_MAX_NUM_OF_FAR);
ogs_pool_init(&sess->pfcp.urr_pool, OGS_MAX_NUM_OF_URR);
ogs_pool_init(&sess->pfcp.qer_pool, OGS_MAX_NUM_OF_QER);
ogs_pool_init(&sess->pfcp.bar_pool, OGS_MAX_NUM_OF_BAR);
ogs_pfcp_pool_init(&sess->pfcp);
smf_qfi_pool_init(sess);
sess->index = ogs_pool_index(&smf_sess_pool, sess);
@ -984,12 +979,7 @@ void smf_sess_remove(smf_sess_t *sess)
smf_bearer_remove_all(sess);
ogs_pool_final(&sess->pfcp.pdr_pool);
ogs_pool_final(&sess->pfcp.far_pool);
ogs_pool_final(&sess->pfcp.urr_pool);
ogs_pool_final(&sess->pfcp.qer_pool);
ogs_pool_final(&sess->pfcp.bar_pool);
ogs_pfcp_pool_final(&sess->pfcp);
ogs_pool_final(&sess->qfi_pool);
ogs_pool_free(&smf_sess_pool, sess);

View File

@ -388,11 +388,7 @@ upf_sess_t *upf_sess_add(ogs_pfcp_f_seid_t *cp_f_seid,
ogs_assert(sess);
memset(sess, 0, sizeof *sess);
ogs_pool_init(&sess->pfcp.pdr_pool, OGS_MAX_NUM_OF_PDR);
ogs_pool_init(&sess->pfcp.far_pool, OGS_MAX_NUM_OF_FAR);
ogs_pool_init(&sess->pfcp.urr_pool, OGS_MAX_NUM_OF_URR);
ogs_pool_init(&sess->pfcp.qer_pool, OGS_MAX_NUM_OF_QER);
ogs_pool_init(&sess->pfcp.bar_pool, OGS_MAX_NUM_OF_BAR);
ogs_pfcp_pool_init(&sess->pfcp);
sess->index = ogs_pool_index(&upf_sess_pool, sess);
ogs_assert(sess->index > 0 && sess->index <= ogs_app()->pool.sess);
@ -489,11 +485,7 @@ int upf_sess_remove(upf_sess_t *sess)
ogs_pfcp_ue_ip_free(sess->ipv6);
}
ogs_pool_final(&sess->pfcp.pdr_pool);
ogs_pool_final(&sess->pfcp.far_pool);
ogs_pool_final(&sess->pfcp.urr_pool);
ogs_pool_final(&sess->pfcp.qer_pool);
ogs_pool_final(&sess->pfcp.bar_pool);
ogs_pfcp_pool_final(&sess->pfcp);
ogs_pool_free(&upf_sess_pool, sess);

View File

@ -51,17 +51,24 @@ int app_initialize(const char *const argv[])
nrf_thread = test_child_create("nrf", argv_out);
if (ogs_app()->parameter.no_amf == 0)
amf_thread = test_child_create("amf", argv_out);
if (ogs_app()->parameter.no_ausf == 0)
ausf_thread = test_child_create("ausf", argv_out);
if (ogs_app()->parameter.no_udm == 0)
udm_thread = test_child_create("udm", argv_out);
if (ogs_app()->parameter.no_smf == 0)
smf_thread = test_child_create("smf", argv_out);
if (ogs_app()->parameter.no_upf == 0)
upf_thread = test_child_create("upf", argv_out);
if (ogs_app()->parameter.no_ausf == 0)
ausf_thread = test_child_create("ausf", argv_out);
if (ogs_app()->parameter.no_udm == 0)
udm_thread = test_child_create("udm", argv_out);
if (ogs_app()->parameter.no_udr == 0)
udr_thread = test_child_create("udr", argv_out);
/*
* Wait for all sockets listening
*
* If freeDiameter is not used, we can use a delay of less than 1 second.
*/
ogs_msleep(500);
return OGS_OK;;
}

View File

@ -30,6 +30,7 @@ static ogs_thread_t *sgwc_thread = NULL;
static ogs_thread_t *sgwu_thread = NULL;
static ogs_thread_t *smf_thread = NULL;
static ogs_thread_t *mme_thread = NULL;
static ogs_thread_t *amf_thread = NULL;
int app_initialize(const char *const argv[])
{
@ -53,39 +54,22 @@ int app_initialize(const char *const argv[])
if (ogs_app()->parameter.no_nrf == 0)
nrf_thread = test_child_create("nrf", argv_out);
if (ogs_app()->parameter.no_pcrf == 0)
pcrf_thread = test_child_create("pcrf", argv_out);
if (ogs_app()->parameter.no_hss == 0)
hss_thread = test_child_create("hss", argv_out);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
if (ogs_app()->parameter.no_upf == 0)
upf_thread = test_child_create("upf", argv_out);
if (ogs_app()->parameter.no_sgwu == 0)
sgwu_thread = test_child_create("sgwu", argv_out);
if (ogs_app()->parameter.no_sgwc == 0)
sgwc_thread = test_child_create("sgwc", argv_out);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
if (ogs_app()->parameter.no_smf == 0)
smf_thread = test_child_create("smf", argv_out);
if (ogs_app()->parameter.no_mme == 0)
mme_thread = test_child_create("mme", argv_out);
if (ogs_app()->parameter.no_sgwc == 0)
sgwc_thread = test_child_create("sgwc", argv_out);
if (ogs_app()->parameter.no_smf == 0)
smf_thread = test_child_create("smf", argv_out);
if (ogs_app()->parameter.no_amf == 0)
amf_thread = test_child_create("amf", argv_out);
if (ogs_app()->parameter.no_sgwu == 0)
sgwu_thread = test_child_create("sgwu", argv_out);
if (ogs_app()->parameter.no_upf == 0)
upf_thread = test_child_create("upf", argv_out);
if (ogs_app()->parameter.no_hss == 0)
hss_thread = test_child_create("hss", argv_out);
if (ogs_app()->parameter.no_pcrf == 0)
pcrf_thread = test_child_create("pcrf", argv_out);
if (ogs_app()->parameter.no_ausf == 0)
ausf_thread = test_child_create("ausf", argv_out);
if (ogs_app()->parameter.no_udm == 0)
@ -93,6 +77,13 @@ int app_initialize(const char *const argv[])
if (ogs_app()->parameter.no_udr == 0)
udr_thread = test_child_create("udr", argv_out);
/*
* Wait for all sockets listening
*
* Note that at least 1 second is needed if freeDiameter is running.
*/
ogs_msleep(1200);
return OGS_OK;;
}
@ -102,6 +93,7 @@ void app_terminate(void)
if (udm_thread) ogs_thread_destroy(udm_thread);
if (ausf_thread) ogs_thread_destroy(ausf_thread);
if (amf_thread) ogs_thread_destroy(amf_thread);
if (mme_thread) ogs_thread_destroy(mme_thread);
if (smf_thread) ogs_thread_destroy(smf_thread);

View File

@ -50,38 +50,27 @@ int app_initialize(const char *const argv[])
if (ogs_app()->parameter.no_nrf == 0)
nrf_thread = test_child_create("nrf", argv_out);
if (ogs_app()->parameter.no_pcrf == 0)
pcrf_thread = test_child_create("pcrf", argv_out);
if (ogs_app()->parameter.no_hss == 0)
hss_thread = test_child_create("hss", argv_out);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
if (ogs_app()->parameter.no_upf == 0)
upf_thread = test_child_create("upf", argv_out);
if (ogs_app()->parameter.no_sgwu == 0)
sgwu_thread = test_child_create("sgwu", argv_out);
if (ogs_app()->parameter.no_sgwc == 0)
sgwc_thread = test_child_create("sgwc", argv_out);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
if (ogs_app()->parameter.no_smf == 0)
smf_thread = test_child_create("smf", argv_out);
if (ogs_app()->parameter.no_mme == 0)
mme_thread = test_child_create("mme", argv_out);
if (ogs_app()->parameter.no_sgwc == 0)
sgwc_thread = test_child_create("sgwc", argv_out);
if (ogs_app()->parameter.no_smf == 0)
smf_thread = test_child_create("smf", argv_out);
if (ogs_app()->parameter.no_sgwu == 0)
sgwu_thread = test_child_create("sgwu", argv_out);
if (ogs_app()->parameter.no_upf == 0)
upf_thread = test_child_create("upf", argv_out);
if (ogs_app()->parameter.no_hss == 0)
hss_thread = test_child_create("hss", argv_out);
if (ogs_app()->parameter.no_pcrf == 0)
pcrf_thread = test_child_create("pcrf", argv_out);
/*
* Wait for all sockets listening
*
* Note that at least 1 second is needed if freeDiameter is running.
*/
ogs_msleep(1200);
return OGS_OK;;
}

View File

@ -68,14 +68,6 @@ static void initialize(const char *const argv[])
rv = app_initialize(argv);
ogs_assert(rv == OGS_OK);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
}
int main(int argc, const char *const argv[])

View File

@ -51,14 +51,6 @@ static void initialize(const char *const argv[])
rv = app_initialize(argv);
ogs_assert(rv == OGS_OK);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
}
int main(int argc, const char *const argv[])

View File

@ -387,6 +387,9 @@ static void test1_func(abts_case *tc, void *data)
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* DELAY is needed in dedicated EPS bearer */
ogs_msleep(100);
/* Send GTP-U ICMP Packet */
bearer = test_bearer_find_by_ue_ebi(test_ue, 5);
ogs_assert(bearer);

View File

@ -1278,7 +1278,16 @@ static void test4_func(abts_case *tc, void *data)
rv = testgnb_ngap_send(ngap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(100);
/* Send GTP-U ICMP Packet */
qos_flow = test_qos_flow_find_by_ue_qfi(test_ue, 1);
ogs_assert(qos_flow);
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive GTP-U ICMP Packet */
recvbuf = testgnb_gtpu_read(gtpu);
ABTS_PTR_NOTNULL(tc, recvbuf);
ogs_pkbuf_free(recvbuf);
/* Send PDU Session release request */
sess->ul_nas_transport_param.request_type = 0;

View File

@ -253,6 +253,19 @@ static void test1_func(abts_case *tc, void *data)
ABTS_PTR_NOTNULL(tc, recvbuf);
testngap_recv(test_ue, recvbuf);
/*
* Related to issue #536. When running with VirtualBox 1 Core,
* AMF sends namf-callback response very late. In SMF,
* the Session context has already been removed, so an assertion occurs.
*
* It seems to be related to the response part of MHD. We will check
* if the same situation occurs after upgrading to nghttp2.
*
* If this issue still occurs on nghttp2,
* I will remove the assertion from SMF.
*/
ogs_msleep(100);
/* Send GMM Status */
gmmbuf = testgmm_build_gmm_status(test_ue,
OGS_5GMM_CAUSE_MESSAGE_NOT_COMPATIBLE_WITH_THE_PROTOCOL_STATE);

View File

@ -57,18 +57,10 @@ static void initialize(const char *const argv[])
ogs_assert(rv == OGS_OK);
test_epc_init();
rv = app_initialize(argv);
rv = pcscf_fd_init();
ogs_assert(rv == OGS_OK);
/*
* To avoid freeDiameter error
*
* ROUTING ERROR
* 'No remaining suitable candidate to route the message to' for:
*/
ogs_msleep(500);
rv = pcscf_fd_init();
rv = app_initialize(argv);
ogs_assert(rv == OGS_OK);
}

View File

@ -971,6 +971,9 @@ static void test2_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed in dedicated EPS bearer */
ogs_msleep(100);
/* Send AA-Request */
pcscf_rx_send_aar(&rx_sid, sess,
OGS_DIAM_RX_SUBSCRIPTION_ID_TYPE_END_USER_IMSI, 0, 1);

View File

@ -524,6 +524,9 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed before AA-Request */
ogs_msleep(100);
/* Send AA-Request */
rx_sid = NULL;
pcscf_rx_send_aar2(&rx_sid, sess,
@ -665,6 +668,9 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed before AA-Request */
ogs_msleep(100);
/* Send AA-Request */
rx_sid = NULL;
pcscf_rx_send_aar2(&rx_sid, sess,
@ -806,6 +812,9 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed before AA-Request */
ogs_msleep(100);
/* Send AA-Request */
rx_sid = NULL;
pcscf_rx_send_aar2(&rx_sid, sess,
@ -947,6 +956,9 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed before AA-Request */
ogs_msleep(100);
/* Send AA-Request */
rx_sid = NULL;
pcscf_rx_send_aar2(&rx_sid, sess,
@ -1088,6 +1100,9 @@ static void test1_func(abts_case *tc, void *data)
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* DELAY is needed before AA-Request */
ogs_msleep(100);
/* Send AA-Request */
rx_sid = NULL;
pcscf_rx_send_aar2(&rx_sid, sess,