MME_Tests: add testcase TC_s1ap_reset

There is currently no testcase that makes sure that the S1AP reset
works.

Related: OS#5760
Change-Id: I23f4d5f2c39790b6cb0dacaec1e31912177af3ec
diff --git a/library/s1ap/S1AP_Templates.ttcn b/library/s1ap/S1AP_Templates.ttcn
index 46ec779..9e75cec 100644
--- a/library/s1ap/S1AP_Templates.ttcn
+++ b/library/s1ap/S1AP_Templates.ttcn
@@ -251,8 +251,18 @@
 		}
 	}
 }
-
-
+template (present) S1AP_PDU
+tr_S1AP_ResetAck_any := {
+	successfulOutcome := {
+		procedureCode := id_Reset,
+		criticality := reject,
+		value_ := {
+			ResetAcknowledge := {
+				protocolIEs := ?
+			}
+		}
+	}
+}
 
 
 /*********************************************************************************
@@ -938,7 +948,7 @@
 /* all non-UE-related S1AP messages */
 template (present) S1AP_PDU
 tr_S1AP_nonUErelated := (tr_S1AP_SetupReq, tr_S1AP_SetupResp, tr_S1AP_SetupFail,
-			 tr_S1AP_Reset, tr_S1AP_ResetAck, tr_S1AP_MMEDirectInfTrans
+			 tr_S1AP_Reset, tr_S1AP_ResetAck, tr_S1AP_ResetAck_any, tr_S1AP_MMEDirectInfTrans
 			);
 
 }
diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn
index ebfb673..17a4d60 100644
--- a/mme/MME_Tests.ttcn
+++ b/mme/MME_Tests.ttcn
@@ -905,6 +905,31 @@
 	vc_conn.done;
 }
 
+/* Successful RESET procedure from eNB to MME */
+testcase TC_s1ap_reset() runs on MTC_CT {
+	var charstring id := testcasename();
+	f_init_s1ap(id, 3);
+	f_s1ap_setup(0);
+
+	var template (value) Cause reset_cause := {misc := om_intervention};
+	var template (value) ResetType reset_type := {s1_Interface := reset_all};
+	timer T := 5.0;
+
+	S1AP_UNIT[0].send(ts_S1AP_Reset(reset_cause, reset_type));
+	T.start;
+	alt {
+	[] S1AP_UNIT[0].receive(tr_S1AP_ResetAck_any) {
+		setverdict(pass);
+		}
+	[] S1AP_UNIT[0].receive {
+		setverdict(fail, "Received unexpected S1AP");
+		}
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for S1AP Setup result");
+		}
+	}
+}
+
 control {
 	execute( TC_s1ap_setup_wrong_plmn() );
 	execute( TC_s1ap_setup_wrong_tac() );
@@ -912,6 +937,8 @@
 	execute( TC_s1ap_attach() );
 	execute( TC_gn_echo_request() );
 	execute( TC_RIM_RAN_INF() );
+	execute( TC_s1ap_reset() );
 }
 
+
 }