msc: Introduce test TC_(iu_)chan_rel_sccp_tiar_timeout

Verify SCCP T(iar) timeout triggers release of established channel.

Related: OS#4343
Change-Id: Id6488a262e656f5c8fabb4e81f4797b305eb09e2
This commit is contained in:
Pau Espin 2020-01-10 18:03:28 +01:00 committed by laforge
parent c675b6119c
commit a42745c93b
3 changed files with 64 additions and 0 deletions

View File

@ -113,6 +113,11 @@ type component MTC_CT extends CTRL_Adapter_CT {
* handler is not active, which means that also no guard timer is
* set up. The following timer will serve as a replacement */
timer Tguard_direct := 60.0;
/* Configure T(tias) over VTY, seconds */
var integer g_msc_sccp_timer_ias := 7 * 60;
/* Configure T(tiar) over VTY, seconds */
var integer g_msc_sccp_timer_iar := 15 * 60;
}
modulepar {
@ -337,6 +342,8 @@ function f_init(integer num_bsc := 1, boolean sgsap := false, boolean gsup := tr
f_vty_config(MSCVTY, "msc", "assign-tmsi");
f_vty_config(MSCVTY, "msc", "check-imei-rqd 0");
f_vty_config(MSCVTY, "network", "encryption a5 0");
f_vty_config(MSCVTY, "cs7 instance 0", "sccp-timer ias " & int2str(g_msc_sccp_timer_ias));
f_vty_config(MSCVTY, "cs7 instance 0", "sccp-timer iar " & int2str(g_msc_sccp_timer_iar));
if (mp_enable_osmux_test) {
if (osmux) {
f_vty_config(MSCVTY, "msc", "osmux on");
@ -676,6 +683,45 @@ testcase TC_lu_and_mo_call() runs on MTC_CT {
vc_conn.done;
}
/* Verify T(iar) triggers and releases the channel */
friend function f_lu_and_mo_call_sccp_tiar_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
timer T_wait_iar := int2float(5 + 1); /* g_msc_sccp_timer_iar + Give extra time (+1 sec) */
f_init_handler(pars);
var CallParameters cpars := valueof(t_CallParams);
f_perform_lu();
f_mo_call_establish(cpars);
/* Expect the channel cleared upon T(iar) triggered: */
T_wait_iar.start;
alt {
[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
T_wait_iar.stop
setverdict(pass);
}
[] MGCP.receive(tr_DLCX(?)) { repeat; }
[] T_wait_iar.timeout {
setverdict(fail, "Timeout waiting for T(iar) triggered SCCP RSLD");
mtc.stop;
}
}
setverdict(pass);
}
testcase TC_lu_and_mo_call_sccp_tiar_timeout() runs on MTC_CT {
var BSC_ConnHdlr vc_conn;
/* Set T(iar) in MSC low enough that it will trigger before other side
has time to keep alive with a T(ias). Keep recommended ratio of
T(iar) >= T(ias)*2 */
g_msc_sccp_timer_ias := 2;
g_msc_sccp_timer_iar := 5;
f_init();
vc_conn := f_start_handler(refers(f_lu_and_mo_call_sccp_tiar_timeout), 89);
vc_conn.done;
}
/* Test LU (with authentication enabled), where HLR times out sending SAI response */
friend function f_tc_lu_auth_sai_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
@ -5816,6 +5862,7 @@ control {
execute( TC_lu_imsi_timeout_tmsi_realloc() );
execute( TC_cmserv_imsi_unknown() );
execute( TC_lu_and_mo_call() );
execute( TC_lu_and_mo_call_sccp_tiar_timeout() );
execute( TC_lu_auth_sai_timeout() );
execute( TC_lu_auth_sai_err() );
execute( TC_lu_clear_request() );

View File

@ -80,6 +80,21 @@ testcase TC_iu_lu_and_mo_call() runs on MTC_CT {
vc_conn.done;
}
testcase TC_iu_lu_and_mo_call_sccp_tiar_timeout() runs on MTC_CT {
var BSC_ConnHdlr vc_conn;
/* Set T(iar) in MSC low enough that it will trigger before other side
has time to keep alive with a T(ias). Keep recommended ratio of
T(iar) >= T(ias)*2 */
g_msc_sccp_timer_ias := 2;
g_msc_sccp_timer_iar := 5;
f_init(3);
vc_conn := f_start_handler(refers(f_lu_and_mo_call_sccp_tiar_timeout), 1019, ran_idx := 2, ran_is_geran := false);
vc_conn.done;
}
testcase TC_iu_lu_auth_sai_timeout() runs on MTC_CT {
var BSC_ConnHdlr vc_conn;
f_init(3);
@ -515,6 +530,7 @@ control {
execute( TC_iu_lu_imsi_timeout_tmsi_realloc() );
execute( TC_iu_cmserv_imsi_unknown() );
execute( TC_iu_lu_and_mo_call() );
execute( TC_iu_lu_and_mo_call_sccp_tiar_timeout() );
execute( TC_iu_lu_auth_sai_timeout() );
execute( TC_iu_lu_auth_sai_err() );
execute( TC_iu_lu_release_request() );

View File

@ -14,6 +14,7 @@
</testcase>
<testcase classname='MSC_Tests' name='TC_cmserv_imsi_unknown' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_and_mo_call' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_and_mo_call_sccp_tiar_timeout' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_auth_sai_timeout' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_auth_sai_err' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_clear_request' time='MASKED'/>