diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn index 9beaddfea..fdf3b0fc9 100644 --- a/cbc/CBC_Tests.ttcn +++ b/cbc/CBC_Tests.ttcn @@ -596,6 +596,63 @@ testcase TC_ecbe_create_delete_mme_server() runs on test_CT { f_shutdown_helper(); } +/* Create 2 concurrent messages against an MME, then delete them */ +private function f_mme_TC_concurrent_cbs_msg_mme() runs on MME_ConnHdlr { + var CBS_Message msg[2]; + msg[0] := g_pars.exp_cbs_msg; + msg[1] := msg[0]; + msg[1].msg_id := msg[0].msg_id + 1; + + for (var integer i := 0; i < lengthof(msg); i := i + 1) { + f_sbcap_handle_write_replace_warn_req(msg[i], 0); + if (ispresent(g_pars.write_replace_warning_ind_cause) and + ispresent(g_pars.bcast_cell_id_list)) { + f_sbcap_tx_write_replace_warn_ind(0, msg[i], + g_pars.write_replace_warning_ind_cause, + g_pars.bcast_cell_id_list) + } + } + /* Now handle Stop: */ + for (var integer i := 0; i < lengthof(msg); i := i + 1) { + f_sbcap_handle_stop_warn_req(0, msg[i]); + } +} +testcase TC_concurrent_cbs_msg_mme() runs on test_CT { + var template (value) CellId_Broadcast_List bcast_cell_id_li; + var CBS_Message msg[2]; + var EcbeCbcMessage ecbe; + + msg[0] := valueof(t_CBSmsg(49, 16752)); + msg[1] := msg[0]; + msg[1].msg_id := msg[0].msg_id + 1; + + f_init(num_bsc := 0, num_mme := 1); + + bcast_cell_id_li := { + ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 1234)) + }; + g_pars_MME[0].start_fn := refers(f_mme_TC_concurrent_cbs_msg_mme); + g_pars_MME[0].exp_cbs_msg := msg[0]; + g_pars_MME[0].write_replace_warning_ind_cause := SBC_AP_Cause_message_accepted; + g_pars_MME[0].bcast_cell_id_list := valueof(bcast_cell_id_li); + f_start(); + + for (var integer i := 0; i < lengthof(msg); i := i + 1) { + ecbe := f_cbs2ecbe(msg[i], "TTCN-3"); + f_ecbe_tx_post_cbs(ecbe); + f_ecbe_rx_resp(201); + } + + f_sleep(2.0); + + for (var integer i := 0; i < lengthof(msg); i := i + 1) { + f_ecbe_tx_delete_cbs(msg[i].msg_id); + f_ecbe_rx_resp(200); + } + + f_shutdown_helper(); +} + control { execute( TC_rx_keepalive() ); execute( TC_rx_keepalive_timeout() ); @@ -609,6 +666,7 @@ control { execute( TC_ecbe_create_delete_bsc_and_mme() ); execute( TC_ecbe_create_delete_bsc_server() ); execute( TC_ecbe_create_delete_mme_server() ); + execute( TC_concurrent_cbs_msg_mme() ); } }