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;
 	}
 }