[MERGED] osmo-ttcn3-hacks[master]: msc: Introduce shared f_expect_clear()

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sat Jan 27 13:32:53 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: msc: Introduce shared f_expect_clear()
......................................................................


msc: Introduce shared f_expect_clear()

Avoid having to copy+paste the matching of a channel clear/relesae

Change-Id: If070b079f2ffadb8065fb99d1c8951ac9baec88b
---
M msc_tests/BSC_ConnectionHandler.ttcn
M msc_tests/MSC_Tests.ttcn
2 files changed, 55 insertions(+), 114 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn
index 97c02b8..a7ce1ea 100644
--- a/msc_tests/BSC_ConnectionHandler.ttcn
+++ b/msc_tests/BSC_ConnectionHandler.ttcn
@@ -454,6 +454,41 @@
 	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;
+		}
+	}
+}
+
 
 
 
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 2e9176f..c241d74 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -437,10 +437,7 @@
 			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 @@
 			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 @@
 	[] 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 @@
 	/* 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 @@
 	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 @@
 	[] 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 @@
 	}
 
 	/* 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 	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 @@
 
 	/* 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 @@
 	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 @@
 
 	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 @@
 	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;

-- 
To view, visit https://gerrit.osmocom.org/6132
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If070b079f2ffadb8065fb99d1c8951ac9baec88b
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list