WIP: MSC: Add MO call testing
Change-Id: If32cb359b3cf732c4752856538552595dbbf2a8a
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 68e0bef..dea27a7 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -21,6 +21,7 @@
import from Osmocom_CTRL_Adapter all;
import from MNCC_Emulation all;
+import from MNCC_Types all;
import from GSUP_Emulation all;
import from GSUP_Types all;
@@ -458,6 +459,56 @@
vc_conn.done;
}
+private function f_tc_lu_and_mo_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+ g_pars := pars;
+ f_perform_lu(false, true, true);
+
+ f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), false);
+
+ var hexstring called := '12345'H;
+ var integer tid := 0;
+ var MNCC_PDU mncc;
+ f_create_mncc_expect(hex2str(called));
+
+ BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(tid, called)));
+ MNCC.receive(tr_MNCC_SETUP_ind(?, tr_MNCC_number(hex2str(called)))) -> value mncc;
+ /* FIXME: extract call_id */
+
+ /* Call Proceeding */
+ MNCC.send(ts_MNCC_CALL_PROC_req(mncc.u.signal.callref, ts_MNCC_bcap_voice));
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(tid)));
+
+ /* Alerting */
+ MNCC.send(ts_MNCC_ALERT_req(mncc.u.signal.callref));
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(tid)));
+
+ /* Answer. This causes TCH assignment in case of "late assignment" */
+ MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
+
+ f_sleep(3.0);
+
+ /* Hangup by "B" side */
+ MNCC.send(ts_MNCC_DISC_req(mncc.u.signal.callref, valueof(ts_MNCC_cause(23))));
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(tid)));
+
+ /* Release of call */
+ MNCC.send(ts_MNCC_REL_req(mncc.u.signal.callref, valueof(ts_MNCC_cause(42))));
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(tid)));
+
+ /* clearing of radio channel */
+ BSSAP.receive(tr_BSSMAP_ClearCommand);
+ BSSAP.send(ts_BSSMAP_ClearComplete);
+ BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+
+ f_sleep(5.0);
+}
+testcase TC_lu_and_mo_call() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+
+ vc_conn := f_start_handler(refers(f_tc_lu_and_mo_call), testcasename(), 1);
+ vc_conn.done;
+}
@@ -467,6 +518,7 @@
//execute( TC_lu_imsi_noauth_notmsi() );
execute( TC_lu_imsi_reject() );
execute( TC_lu_imsi_timeout_gsup() );
+ execute( TC_lu_and_mo_call() );
}