SGSN: introduce NS tests

Similiar to the PCU_Tests_NS introduce SGSN_Tests_NS.

Change-Id: Ib2bffbb110961474928f35d212cb492d4b6fdee0
diff --git a/sgsn/SGSN_Tests_NS.ttcn b/sgsn/SGSN_Tests_NS.ttcn
new file mode 100644
index 0000000..cce32cc
--- /dev/null
+++ b/sgsn/SGSN_Tests_NS.ttcn
@@ -0,0 +1,58 @@
+module SGSN_Tests_NS {
+
+/* Osmocom SGSN test suite in TTCN-3
+ * (C) 2020 sysmocom - s.f.m.c. GmbH
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+import from Osmocom_Types all;
+import from Osmocom_Gb_Types all;
+import from Osmocom_VTY_Functions all;
+import from NS_CodecPort all;
+import from NS_Types all;
+import from RAW_NS all;
+import from SGSN_Tests all;
+
+type component RAW_Test_CT extends RAW_NS_CT, test_CT {
+}
+
+testcase TC_NS_connect_reset() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0, tc_offset := 10);
+	f_vty_config(SGSNVTY, "ns", "encapsulation udp use-reset-block-unblock enabled");
+
+	/* Send a NS-ALIVE */
+	f_outgoing_ns_reset();
+
+	f_sleep(1.0);
+	f_cleanup();
+}
+
+testcase TC_NS_connect_alive() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0, tc_offset := 20);
+	f_vty_config(SGSNVTY, "ns", "encapsulation udp use-reset-block-unblock disabled");
+
+	/* Send a NS-ALIVE */
+	NSCP[0].send(t_NS_Send(g_ns_conn_id[0], t_NS_ALIVE));
+	alt {
+	[] NSCP[0].receive(t_NS_RecvFrom(t_NS_ALIVE_ACK));
+	[] NSCP[0].receive(t_NS_RecvFrom(tr_NS_STATUS(*))) { setverdict(fail); }
+	[] NSCP[0].receive { repeat; }
+	}
+
+	f_sleep(1.0);
+	f_cleanup();
+}
+
+control {
+	execute( TC_NS_connect_alive() );
+	execute( TC_NS_connect_reset() );
+}
+
+}