neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32216 )
Change subject: bsc: add TC_mscpool_sccp_n_pcstate_detaches_msc ......................................................................
bsc: add TC_mscpool_sccp_n_pcstate_detaches_msc
Related: SYS#6319 OS#5917 Related: I3a0869598b8395601a16d78dbc46eec400c0ea84 (osmo-bsc) Change-Id: Ia1aea4e33230d6a685b72ea5ba20dd9c7d265d44 --- M bsc/BSC_Tests.ttcn 1 file changed, 57 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/16/32216/1
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index bfab0fa..39c82ab 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -9161,6 +9161,50 @@ f_shutdown_helper(); }
+/* When an MSC point-code gets an SCCP N-PCSTATE saying it is unreachable, immediately mark the MSC as unusable. */ +testcase TC_mscpool_sccp_n_pcstate_detaches_msc() runs on test_CT { + + f_init(nr_bts := 3, handler_mode := true, nr_msc := 2); + f_sleep(1.0); + + /* Control which MSC gets chosen next by the round-robin, otherwise + * would be randomly affected by which other tests ran before this. */ + f_vty_transceive(BSCVTY, "mscpool roundrobin next 0"); + + f_ctrs_msc_init(); + + var MSC_ConnHdlr vc_conn1; + var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0); + pars1.mscpool.rsl_idx := 0; + pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O)); + vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1); + vc_conn1.done; + f_ctrs_msc_expect(0, "mscpool:subscr:new"); + + var MSC_ConnHdlr vc_conn2; + var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1); + pars2.mscpool.rsl_idx := 1; + pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H)))); + vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2); + vc_conn2.done; + f_ctrs_msc_expect(1, "mscpool:subscr:new"); + + f_logp(BSCVTY, "disconnecting msc0"); + /* Disconnect the first MSC */ + f_ran_adapter_cleanup(g_bssap[0]); + + /* Now round-robin would wrap to the first MSC, but since the first MSC is disconnected, it wraps around to msc + * 2 again. */ + var MSC_ConnHdlr vc_conn3; + var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 1); + pars3.mscpool.rsl_idx := 2; + pars3.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H)))); + vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3); + vc_conn3.done; + f_ctrs_msc_expect(1, "mscpool:subscr:new"); + f_shutdown_helper(); +} + /* Allow/Deny emergency calls globally via VTY */ private function f_vty_allow_emerg_msc(boolean allow) runs on test_CT { f_vty_enter_cfg_msc(BSCVTY, 0); @@ -12463,6 +12507,8 @@ execute( TC_mscpool_paging_and_response_tmsi() ); execute( TC_mscpool_no_allow_attach_round_robin() ); execute( TC_mscpool_no_allow_attach_valid_nri() ); + + execute( TC_mscpool_sccp_n_pcstate_detaches_msc() ); }
execute( TC_early_conn_fail() );