jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33853 )
Change subject: BSC_Test_ASCI: Add Talker detect with link fail test ......................................................................
BSC_Test_ASCI: Add Talker detect with link fail test
The talker requests uplink. Instead of receiving link establishment from the BTS, the BSC receives a link failure. The MSC expects to receive an UPLINK RELEASE INDICATION, caused by radio link failure.
Change-Id: Ied56a6bdc0bfa541b1419e63e9e209ed20af804c --- M bsc/BSC_Tests_ASCI.ttcn M bsc/MSC_ConnectionHandler.ttcn 2 files changed, 64 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/33853/1
diff --git a/bsc/BSC_Tests_ASCI.ttcn b/bsc/BSC_Tests_ASCI.ttcn index 70fcb4d..b4b0173 100644 --- a/bsc/BSC_Tests_ASCI.ttcn +++ b/bsc/BSC_Tests_ASCI.ttcn @@ -92,6 +92,7 @@ var boolean uplink_req := false; var boolean uplink_req_conf := false; var boolean uplink_rel_ind := false; + var boolean uplink_rel_ind_failure := false; var boolean assign_res := false; var boolean assign_fail := false; /* Note: This timer is used to receive messages after the expected event. @@ -150,6 +151,14 @@ } repeat; } + [] BSSAP.receive(tr_BSSMAP_UplinkRelInd(GSM0808_CAUSE_RADIO_INTERFACE_FAILURE, omit)) -> value rx_bssap { + log("VGCS: received uplink rel ind, caused by failure"); + uplink_rel_ind_failure := true; + if (g_pars.asci_test.vgcs_talker_fail) { + T.start; + } + repeat; + } [] COORD.receive(COORD_VGCS_ASSIGN_RES) { log("VGCS: got assignment result at call control"); assign_res := true; @@ -236,6 +245,19 @@ setverdict(pass); return; } + if (g_pars.asci_test.vgcs_talker_fail) { + if (not uplink_rel_ind_failure) { + setverdict(fail, "VGCS: No uplink release indication as expected!"); + return; + } + if (not uplink_free) { + setverdict(fail, "VGCS: Uplink not free as expected!"); + return; + } + log("VGCS: Uplink release and uplink marked free as expected!"); + setverdict(pass); + return; + } if (g_pars.asci_test.vgcs_talker_est) { if (not uplink_req_conf) { setverdict(fail, "VGCS: No uplink request confirm as expected!"); @@ -343,11 +365,16 @@ log("VGCS: got assignment result on channel"); COORD.send(COORD_VGCS_ASSIGN_RES); if (g_pars.asci_test.vgcs_talker_req or + g_pars.asci_test.vgcs_talker_fail or g_pars.asci_test.vgcs_talker_est or g_pars.asci_test.vgcs_talker_rel) { log("VGCS: sending talker det"); RSL.send(ts_RSL_TALKER_DET(g_chan_nr)); } + if (g_pars.asci_test.vgcs_talker_fail) { + log("VGCS: sending RSL failure ind"); + RSL.send(ts_RSL_CONN_FAIL_IND(g_chan_nr, RSL_ERR_TALKER_ACC_FAIL)); + } if (g_pars.asci_test.vgcs_talker_est or g_pars.asci_test.vgcs_talker_rel) { log("VGCS: sending RSL etabish ind"); @@ -493,6 +520,28 @@ f_shutdown_helper(); }
+testcase TC_vgcs_vbs_talker_fail() runs on test_CT { + var MSC_ConnHdlr call_conn, chan_conn; + var TestHdlrParams pars := f_gen_test_hdlr_pars(); + + f_init(1, true); + + pars.sccp_addr_msc := g_bssap[0].sccp_addr_own; + pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer; + + pars.asci_test.vgcs_talker_fail := true; + + call_conn := f_start_handler(refers(f_tc_vgcs_vbs_setup), pars); + chan_conn := f_start_handler(refers(f_tc_asci_assignment), pars); + /* Connect COORD ports of both functions. The functions will delay before using them. */ + connect(call_conn:COORD, chan_conn:COORD); + + call_conn.done; + chan_conn.done; + + f_shutdown_helper(); +} + testcase TC_vgcs_vbs_talker_est() runs on test_CT { var MSC_ConnHdlr call_conn, chan_conn; var TestHdlrParams pars := f_gen_test_hdlr_pars(); @@ -586,6 +635,7 @@ execute( TC_vgcs_vbs_assignment() ); execute( TC_vgcs_vbs_assignment_fail() ); execute( TC_vgcs_vbs_talker_req() ); + execute( TC_vgcs_vbs_talker_fail() ); execute( TC_vgcs_vbs_talker_est() ); execute( TC_vgcs_vbs_talker_rel() ); execute( TC_vgcs_vbs_uplink_seized() ); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index f919fa6..0c62003 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -757,6 +757,7 @@ boolean vgcs_assign_ok, boolean vgcs_assign_fail, boolean vgcs_talker_req, + boolean vgcs_talker_fail, boolean vgcs_talker_est, boolean vgcs_talker_rel, boolean vgcs_uplink_seized,