msc: Introduce shared f_expect_clear()
Avoid having to copy+paste the matching of a channel clear/relesae Change-Id: If070b079f2ffadb8065fb99d1c8951ac9baec88b
This commit is contained in:
parent
ad2952e063
commit
1ddc716eaf
|
@ -454,6 +454,41 @@ runs on BSC_ConnHdlr {
|
|||
setverdict(pass);
|
||||
}
|
||||
|
||||
/* expect a clear command */
|
||||
function f_expect_clear(float t := 5.0) runs on BSC_ConnHdlr {
|
||||
timer T := t;
|
||||
|
||||
T.start;
|
||||
alt {
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) { }
|
||||
[] BSSAP.receive {
|
||||
setverdict(fail, "Unexpected BSSMAP while waiting for ClearCommand");
|
||||
self.stop;
|
||||
}
|
||||
[] T.timeout {
|
||||
setverdict(inconc, "Timeout waiting for ClearCommand");
|
||||
self.stop;
|
||||
}
|
||||
}
|
||||
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
|
||||
T.start;
|
||||
alt {
|
||||
[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
|
||||
setverdict(pass);
|
||||
}
|
||||
[] BSSAP.receive {
|
||||
setverdict(fail, "Unexpected BSSMAP while waiting for SCCP Release");
|
||||
self.stop;
|
||||
}
|
||||
[] T.timeout {
|
||||
setverdict(inconc, "Timeout waiting for SCCP Release");
|
||||
self.stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -437,10 +437,7 @@ private function f_tc_lu_imsi_reject(charstring id, BSC_ConnHdlrPars pars) runs
|
|||
self.stop;
|
||||
}
|
||||
}
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_imsi_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -467,10 +464,7 @@ private function f_tc_lu_imsi_timeout_gsup(charstring id, BSC_ConnHdlrPars pars)
|
|||
self.stop;
|
||||
}
|
||||
}
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_imsi_timeout_gsup() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -520,13 +514,7 @@ runs on BSC_ConnHdlr {
|
|||
[] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); }
|
||||
}
|
||||
|
||||
alt {
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
|
||||
setverdict(pass);
|
||||
}
|
||||
[] BSSAP.receive { setverdict(fail, "Received unexpected BSSAP"); }
|
||||
[] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); }
|
||||
}
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_cmserv_imsi_unknown() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -573,10 +561,7 @@ private function f_tc_lu_auth_sai_timeout(charstring id, BSC_ConnHdlrPars pars)
|
|||
/* 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);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_auth_sai_timeout() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -607,10 +592,7 @@ private function f_tc_lu_auth_sai_err(charstring id, BSC_ConnHdlrPars pars) runs
|
|||
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);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_auth_sai_err() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -704,10 +686,7 @@ private function f_tc_lu_by_imei(charstring id, BSC_ConnHdlrPars pars) runs on B
|
|||
[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req)) { repeat; }
|
||||
}
|
||||
/* wait for normal teardown */
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_by_imei() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -753,10 +732,7 @@ private function f_tc_lu_tmsi_noauth_unknown(charstring id, BSC_ConnHdlrPars par
|
|||
}
|
||||
|
||||
/* wait for normal teardown */
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_by_tmsi_noauth_unknown() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -780,10 +756,7 @@ private function f_tc_imsi_detach_by_imsi(charstring id, BSC_ConnHdlrPars pars)
|
|||
BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
|
||||
|
||||
/* wait for normal teardown */
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_imsi_detach_by_imsi() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -806,10 +779,7 @@ private function f_tc_imsi_detach_by_tmsi(charstring id, BSC_ConnHdlrPars pars)
|
|||
BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
|
||||
|
||||
/* wait for normal teardown */
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_imsi_detach_by_tmsi() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -832,10 +802,7 @@ private function f_tc_imsi_detach_by_imei(charstring id, BSC_ConnHdlrPars pars)
|
|||
BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
|
||||
|
||||
/* wait for normal teardown */
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_imsi_detach_by_imei() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -885,11 +852,7 @@ private function f_emerg_call(MobileIdentityLV mi) runs on BSC_ConnHdlr {
|
|||
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);
|
||||
f_expect_clear();
|
||||
}
|
||||
|
||||
/* establish an emergency call by IMEI, no SIM inserted (and hence no IMSI) */
|
||||
|
@ -900,10 +863,7 @@ private function f_tc_emerg_call_imei_reject(charstring id, BSC_ConnHdlrPars par
|
|||
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
|
||||
f_bssap_compl_l3(l3_info);
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ('05'O)));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_emerg_call_imei_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -940,10 +900,7 @@ private function f_tc_cm_serv_req_vgcs_reject(charstring id, BSC_ConnHdlrPars pa
|
|||
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VGCS, mi));
|
||||
f_bssap_compl_l3(l3_info);
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_cm_serv_req_vgcs_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -964,10 +921,7 @@ private function f_tc_cm_serv_req_vbs_reject(charstring id, BSC_ConnHdlrPars par
|
|||
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VBS, mi));
|
||||
f_bssap_compl_l3(l3_info);
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_cm_serv_req_vbs_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -988,10 +942,7 @@ private function f_tc_cm_serv_req_lcs_reject(charstring id, BSC_ConnHdlrPars par
|
|||
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_LCS, mi));
|
||||
f_bssap_compl_l3(l3_info);
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_cm_serv_req_lcs_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -1012,10 +963,7 @@ private function f_tc_cm_reest_req_reject(charstring id, BSC_ConnHdlrPars pars)
|
|||
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_REEST_REQ(0, mi));
|
||||
f_bssap_compl_l3(l3_info);
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_cm_reest_req_reject() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -1054,10 +1002,7 @@ private function f_tc_lu_auth_2G_fail(charstring id, BSC_ConnHdlrPars pars) runs
|
|||
|
||||
/* Expect LU REJECT with Cause == Illegal MS */
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej('03'O)));
|
||||
BSSAP.receive(tr_BSSMAP_ClearCommand);
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_lu_auth_2G_fail() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -1146,20 +1091,7 @@ private function f_tc_establish_and_nothing(charstring id, BSC_ConnHdlrPars pars
|
|||
f_perform_lu(false, true, true, false);
|
||||
|
||||
f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), false, false);
|
||||
timer T := 30.0;
|
||||
T.start;
|
||||
alt {
|
||||
[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
}
|
||||
[] BSSAP.receive { repeat; }
|
||||
[] MNCC.receive { repeat; }
|
||||
[] GSUP.receive { repeat; }
|
||||
[] MGCP.receive { repeat; }
|
||||
}
|
||||
f_expect_clear();
|
||||
}
|
||||
testcase TC_establish_and_nothing() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -1183,20 +1115,7 @@ private function f_tc_mo_setup_and_nothing(charstring id, BSC_ConnHdlrPars pars)
|
|||
|
||||
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
|
||||
|
||||
timer T := 30.0;
|
||||
T.start;
|
||||
alt {
|
||||
[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
}
|
||||
[] BSSAP.receive { repeat; }
|
||||
[] MNCC.receive { repeat; }
|
||||
[] GSUP.receive { repeat; }
|
||||
[] MGCP.receive { repeat; }
|
||||
}
|
||||
f_expect_clear(30.0);
|
||||
}
|
||||
testcase TC_mo_setup_and_nothing() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
@ -1230,20 +1149,7 @@ private function f_tc_mo_crcx_ran_timeout(charstring id, BSC_ConnHdlrPars pars)
|
|||
cpars.mgcp_ep := mgcp_cmd.line.ep;
|
||||
/* never respond to this */
|
||||
|
||||
timer T := 30.0;
|
||||
T.start;
|
||||
alt {
|
||||
[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
setverdict(pass);
|
||||
}
|
||||
[] BSSAP.receive { repeat; }
|
||||
[] MNCC.receive { repeat; }
|
||||
[] GSUP.receive { repeat; }
|
||||
[] MGCP.receive { repeat; }
|
||||
}
|
||||
f_expect_clear(30.0);
|
||||
}
|
||||
testcase TC_mo_crcx_ran_timeout() runs on MTC_CT {
|
||||
var BSC_ConnHdlr vc_conn;
|
||||
|
|
Loading…
Reference in New Issue