Stop tests after failures

Call mtc.stop after setverdict(fail), add reasons to most failures and
fail with verdict error for internal errors.

Change-Id: I9b618235939fa41160b9be6677b121963d3ec857
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 2897a0b..d71d3dc 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -113,14 +113,8 @@
 }
 
 private function f_shutdown_helper() runs on test_CT {
-	for (var integer i := 0; i < NUM_BTS; i := i+1) {
-		if (isbound(bts[i]) and isbound(bts[i].rsl)) {
-			f_ipa_rsl_stop(bts[i].rsl);
-		}
-	}
-	f_ipa_ctrl_stop();
-	all port.stop;
 	setverdict(pass);
+	mtc.stop;
 }
 
 private function f_legacy_bssap_reset() runs on test_CT {
@@ -199,7 +193,7 @@
 	[] IPA_RSL[i].receive { repeat }
 	[] T.timeout {
 		setverdict(fail, "Timeout RSL waiting for ASP_IPA_EVENT_ID_ACK");
-		self.stop;
+		mtc.stop;
 		}
 	}
 }
@@ -230,7 +224,7 @@
 		f_sleep(0.1);
 		if (not T.running) {
 			setverdict(fail, "Timeout waiting for oml-connection-state ", status);
-			self.stop;
+			mtc.stop;
 		}
 	}
 }
@@ -240,7 +234,7 @@
 	var BSSAP_N_UNITDATA_ind ud_ind;
 	[] T_guard.timeout {
 			setverdict(fail, "Timeout of T_guard");
-			self.stop;
+			mtc.stop;
 		}
 	/* always respond with RESET ACK to RESET */
 	[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind {
@@ -253,7 +247,7 @@
 altstep no_bssmap_reset() runs on test_CT {
 	[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) {
 		setverdict(fail, "unexpected BSSMAP Reset");
-		self.stop;
+		mtc.stop;
 	}
 }
 
@@ -340,7 +334,7 @@
 	[] IPA_RSL[bts_nr].receive { repeat; }
 	[] T.timeout {
 		setverdict(fail, "Timeout expecting ", t_rx);
-		self.stop;
+		mtc.stop;
 		}
 	}
 	return rx_rsl_ud.rsl;
@@ -1325,7 +1319,7 @@
 	alt {
 	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) {
 		setverdict(fail, "Received PAGING after LOAD_IND(0)");
-		self.stop;
+		mtc.stop;
 		}
 	[] T_retrans.timeout {
 		/* re-trnsmit the zero-space LOAD IND to avoid BSC 'auto credit' */
@@ -1404,15 +1398,15 @@
 	alt {
 	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) {
 		setverdict(fail, "Received PAGING after A-RESET");
-		self.stop;
+		mtc.stop;
 		}
 	[] IPA_RSL[1].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) {
 		setverdict(fail, "Received PAGING after A-RESET");
-		self.stop;
+		mtc.stop;
 		}
 	[] IPA_RSL[2].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_PAGING_CMD(?))) {
 		setverdict(fail, "Received PAGING after A-RESET");
-		self.stop;
+		mtc.stop;
 		}
 	[] T.timeout {
 		setverdict(pass);
@@ -1467,10 +1461,9 @@
 	}
 	[] IPA_RSL[0].receive { repeat }
 	[] T.timeout {
-		self.stop;
+		return false;
 		}
 	}
-
 	return false;
 }
 
@@ -1762,7 +1755,7 @@
 	}
 	case else {
 		setverdict(fail, "Unsupported codec ", a_elem);
-		self.stop;
+		mtc.stop;
 	}
 	}
 	return ret;
@@ -1835,7 +1828,7 @@
 	var RSL_IE_Body mode_ie;
 	if (f_rsl_find_ie(rsl, RSL_IE_CHAN_MODE, mode_ie) == false) {
 		setverdict(fail, "Couldn't find CHAN_MODE IE");
-		self.stop;
+		mtc.stop;
 	}
 	var template RSL_IE_Body t_mode_ie := f_rsl_chmod_tmpl_from_codec(g_pars.ass_codec_list.codecElements[0]);
 	if (not match(mode_ie, t_mode_ie)) {
@@ -1846,7 +1839,7 @@
 	if (g_pars.expect_mr_conf_ie != omit) {
 		if (f_rsl_find_ie(rsl, RSL_IE_MR_CONFIG, mr_conf) == false) {
 			setverdict(fail, "Missing MR CONFIG IE in RSL Chan Activ");
-			self.stop;
+			mtc.stop;
 		}
 		log("found RSL MR CONFIG IE: ", mr_conf);
 
@@ -1858,7 +1851,7 @@
 		if (f_rsl_find_ie(rsl, RSL_IE_MR_CONFIG, mr_conf) == true) {
 			log("found RSL MR CONFIG IE: ", mr_conf);
 			setverdict(fail, "Found MR CONFIG IE in RSL Chan Activ, expecting omit");
-			self.stop;
+			mtc.stop;
 		}
 	}
 }
@@ -1973,7 +1966,7 @@
 	alt {
 	[] BSSAP.receive(PDU_BSSAP:?) -> value bssap {
 		setverdict(fail, "Unexpected BSSMAP ", bssap);
-		self.stop;
+		mtc.stop;
 		}
 	[] T.timeout {
 		setverdict(pass);
@@ -2087,7 +2080,7 @@
 		ss_nr := chan_nr.u.sdcch8.sub_chan;
 	} else {
 		setverdict(fail, "Invalid ChanNr ", chan_nr);
-		self.stop;
+		mtc.stop;
 	}
 
 	var charstring cmd := "bts "&int2str(bts_nr)&" trx "&int2str(trx_nr)&
@@ -2337,7 +2330,7 @@
 	var charstring mode := f_ts_dyn_mode_get(bts_nr, trx_nr, ts_nr);
 	if (not match(mode, exp)) {
 		setverdict(fail, "Unexpected TS Mode: ", mode);
-		self.stop;
+		mtc.stop;
 	}
 }
 
diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn
index a82728a..102c30e 100644
--- a/bsc/MSC_ConnectionHandler.ttcn
+++ b/bsc/MSC_ConnectionHandler.ttcn
@@ -147,7 +147,7 @@
 		}
 	}
 	setverdict(fail, "Only 2 Connections per EP!");
-	self.stop;
+	mtc.stop;
 }
 
 /* Helper function to pick a specific connection by its cid. Since we reach out
@@ -160,7 +160,7 @@
 		}
 	}
 	setverdict(fail, "No Connection for ID ", cid);
-	self.stop;
+	mtc.stop;
 }
 
 /* altstep for handling of IPACC media related commands. Activated by as_Media() to test
@@ -189,7 +189,7 @@
 		b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);
 		if (g_media.bts.conn_id != ie.ipa_conn_id) {
 			setverdict(fail, "IPA MDCX for unknown ConnId", rsl);
-			self.stop;
+			mtc.stop;
 		}
 		/* mandatory */
 		b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_REMOTE_IP, ie);
@@ -233,7 +233,7 @@
 		b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);
 		if (g_media.bts1.conn_id != ie.ipa_conn_id) {
 			setverdict(fail, "IPA MDCX for unknown ConnId", rsl);
-			self.stop;
+			mtc.stop;
 		}
 		/* mandatory */
 		b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_REMOTE_IP, ie);
@@ -269,7 +269,7 @@
 		if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {
 			if (cid != 0) {
 				setverdict(fail, "MGCP wildcard EP only works in first CRCX");
-				self.stop;
+				mtc.stop;
 			}
 			/* we keep the endpoint name allocated during MediaState_init */
 		} else {
@@ -575,12 +575,12 @@
 	}
 	else {
 		setverdict(fail, "Unknown ChDesc!");
-		self.stop;
+		mtc.stop;
 	}
 
 	if (ch_desc.octet3 and4b '10'O == '10'O) {
 		setverdict(fail, "No support for Hopping");
-		self.stop;
+		mtc.stop;
 	} else {
 		var OCT2 concat := ch_desc.octet3 & ch_desc.octet4;
 		arfcn := oct2int(concat);
@@ -670,7 +670,7 @@
 			repeat;
 		} else {
 			setverdict(fail, "Unexpected L3 received", l3);
-			self.stop;
+			mtc.stop;
 		}
 		}
 	[st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_REL_REQ(st.old_chan_nr, tr_RslLinkID_DCCH(0))) {
@@ -955,7 +955,7 @@
 	}
 	log("g_media ", g_media);
 	if (not isbound(bssap)) {
-		self.stop;
+		mtc.stop;
 	}
 
 	/* When the BSC detects that LCLS is possible it will cross the
@@ -1019,7 +1019,7 @@
 			repeat;
 		} else {
 			setverdict(fail, "Unexpected L3 received", l3);
-			self.stop;
+			mtc.stop;
 		}
 		}
 	[st.rr_ho_cmpl_seen] as_Media_ipacc();