fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39873?usp=email )
Change subject: msc: add TC_gsup_mt_sms_{paging,conn}_timeout ......................................................................
msc: add TC_gsup_mt_sms_{paging,conn}_timeout
Change-Id: Ief16753783e044911f1e3cef8d7012810d709e61 Related: SYS#7323 --- M msc/MSC_Tests.ttcn M msc/expected-results.xml 2 files changed, 110 insertions(+), 0 deletions(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 03f2412..a36dbb8 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -3294,6 +3294,112 @@ f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); }
+/* Test sending of GSUP MT-forwardSM-Err if MS does not respond to paging */ +friend function f_TC_gsup_mt_sms_paging_timeout(charstring id, BSC_ConnHdlrPars pars) +runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var boolean released := false; + timer T; + + f_init_handler(pars); + + /* We need to inspect GSUP activity */ + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Perform location update */ + f_perform_lu(); + + /* Register an 'expect' for given IMSI (+TMSI) */ + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); + + /* Submit a MT SMS on GSUP, expect paging */ + f_gsup_forwardSM_req(spars); + f_expect_paging(); + + /* ... MS does not respond to paging ... */ + + T.start(10.0 + 2.0); /* X4 + 2 seconds */ + alt { + /* Expect the MSC to indicate an error after paging timeout + * TODO: expect a specific SM-RP-Cause value + * XXX: should we expect SM-RP-REF to be 'FF'O? */ + [] GSUP.receive(tr_GSUP_MT_FORWARD_SM_ERR(g_pars.imsi, ?, ?)); + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); + [] T.timeout { + setverdict(fail, "Timeout waiting for GSUP MT-forwardSM-Err"); + } + } +} +testcase TC_gsup_mt_sms_paging_timeout() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config(MSCVTY, "msc", "sms-over-gsup"); + vc_conn := f_start_handler(refers(f_TC_gsup_mt_sms_paging_timeout), 93); + vc_conn.done; + f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); +} + +/* Test sending of GSUP MT-forwardSM-Err if MS does not send RP-ACK */ +friend function f_TC_gsup_mt_sms_conn_timeout(charstring id, BSC_ConnHdlrPars pars) +runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var boolean released := false; + timer T; + + f_init_handler(pars); + + /* We need to inspect GSUP activity */ + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Perform location update */ + f_perform_lu(); + + /* Register an 'expect' for given IMSI (+TMSI) */ + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); + + /* Submit a MT SMS on GSUP, expect paging */ + f_gsup_forwardSM_req(spars); + f_expect_paging(); + + f_establish_fully(EST_TYPE_PAG_RESP); + + /* expect a MT SMS on DTAP */ + BSSAP.receive(f_mt_sms_deliver_pdu(spars)); + + /* ... MS does not send RP-ACK ... */ + + T.start(5.0 + 2.0); /* X1 + 2 seconds */ + alt { + /* Expect the MSC to indicate an error after connection timeout + * TODO: expect a specific SM-RP-Cause value + * XXX: should we expect SM-RP-REF to be 'FF'O? */ + [] GSUP.receive(tr_GSUP_MT_FORWARD_SM_ERR(g_pars.imsi, ?, ?)); + /* Timeout of X1 (5s) will trigger connection release */ + [not released] as_expect_clear() { + released := true; + repeat; + } + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); + [] T.timeout { + setverdict(fail, "Timeout waiting for GSUP MT-forwardSM-Err"); + } + } + + if (not released) { + f_expect_clear(); + } +} +testcase TC_gsup_mt_sms_conn_timeout() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config(MSCVTY, "msc", "sms-over-gsup"); + vc_conn := f_start_handler(refers(f_TC_gsup_mt_sms_conn_timeout), 94); + vc_conn.done; + f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); +} + /* convert GSM L3 TON to SMPP_TON enum */ function f_sm_ton_from_gsm(BIT3 ton) return SMPP_TON { select (ton) { @@ -7446,6 +7552,8 @@ execute( TC_gsup_mo_mt_sms_rp_mr() ); execute( TC_gsup_mt_multi_part_sms() ); execute( TC_gsup_mt_sms_lu_delay() ); + execute( TC_gsup_mt_sms_paging_timeout() ); + execute( TC_gsup_mt_sms_conn_timeout() );
execute( TC_lu_and_mo_ussd_single_request() ); execute( TC_lu_and_mt_ussd_notification() ); diff --git a/msc/expected-results.xml b/msc/expected-results.xml index d846cad..ffe85a6 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -81,6 +81,8 @@ <testcase classname='MSC_Tests' name='TC_gsup_mo_mt_sms_rp_mr' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_gsup_mt_multi_part_sms' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_lu_delay' time='MASKED'/> + <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_paging_timeout' time='MASKED'/> + <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_conn_timeout' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mo_ussd_single_request' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mt_ussd_notification' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mo_ussd_during_mt_call' time='MASKED'/>