msc: Add tests for HLR SAI timeout and HLR SAI error
Change-Id: I7f8c8ff9ccadd7b7b14cba12a34cebe6855a5367
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 15ffc20..9f8dd69 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -518,7 +518,73 @@
var BSC_ConnHdlr vc_conn;
f_init();
- vc_conn := f_start_handler(refers(f_tc_lu_and_mo_call), testcasename(), 1);
+ vc_conn := f_start_handler(refers(f_tc_lu_and_mo_call), testcasename(), 6);
+ vc_conn.done;
+}
+
+/* Test LU (with authentication enabled), where HLR times out sending SAI response */
+private function f_tc_lu_auth_sai_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+ g_pars := pars;
+
+ var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
+ var PDU_DTAP_MT dtap_mt;
+
+ /* tell GSUP dispatcher to send this IMSI to us */
+ f_create_gsup_expect(hex2str(g_pars.imsi));
+
+ /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */
+ f_bssap_compl_l3(l3_lu);
+
+ /* Send Early Classmark, just for the fun of it */
+ BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
+
+ GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
+ /* The HLR would normally return an auth vector here, but we fail to do so. */
+
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej));
+ BSSAP.receive(tr_BSSMAP_ClearCommand);
+ BSSAP.send(ts_BSSMAP_ClearComplete);
+ BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+ setverdict(pass);
+}
+testcase TC_lu_auth_sai_timeout() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+
+ vc_conn := f_start_handler(refers(f_tc_lu_auth_sai_timeout), testcasename(), 7);
+ vc_conn.done;
+}
+
+/* Test LU (with authentication enabled), where HLR rejects sending SAI error */
+private function f_tc_lu_auth_sai_err(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+ g_pars := pars;
+
+ var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
+ var PDU_DTAP_MT dtap_mt;
+
+ /* tell GSUP dispatcher to send this IMSI to us */
+ f_create_gsup_expect(hex2str(g_pars.imsi));
+
+ /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */
+ f_bssap_compl_l3(l3_lu);
+
+ /* Send Early Classmark, just for the fun of it */
+ BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
+
+ GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
+ GSUP.send(ts_GSUP_SAI_ERR(g_pars.imsi, 13));
+
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej));
+ BSSAP.receive(tr_BSSMAP_ClearCommand);
+ BSSAP.send(ts_BSSMAP_ClearComplete);
+ BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+ setverdict(pass);
+}
+testcase TC_lu_auth_sai_err() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+
+ vc_conn := f_start_handler(refers(f_tc_lu_auth_sai_err), testcasename(), 8);
vc_conn.done;
}
@@ -531,6 +597,8 @@
execute( TC_lu_imsi_reject() );
execute( TC_lu_imsi_timeout_gsup() );
execute( TC_lu_and_mo_call() );
+ execute( TC_lu_auth_sai_timeout() );
+ execute( TC_lu_auth_sai_err() );
}