pcu: Get rid of PCU_Tests.ttcn tests
Delete PCU_Tests.ttcn along with the configs, since they are broken and
we are only adding new tests to PCU_Tests_RAW.ttcn. They are broken
because it's not possible to run multiple tests after another.
Some components which used to be in PCU_Tests.ttcn and which were used
by other PCU_Tests*.ttcn files have been moved to SGSN_Components.ttcn
Selftests have been moved to PCU_selftest.ttcn.
Small placeholder for module PCU_Tests is left in PCU_Tests.ttcn to
still be able to compile the binary as "PCU_Tests" and avoid changing
that part of docker setup. We'll eventually rename RAW tests soon
anyway.
Change-Id: Ie862a1525e9f4f9a3f2427ac3898810e3d044d2f
diff --git a/pcu/SGSN_Components.ttcn b/pcu/SGSN_Components.ttcn
new file mode 100644
index 0000000..4bbd18c
--- /dev/null
+++ b/pcu/SGSN_Components.ttcn
@@ -0,0 +1,104 @@
+module SGSN_Components {
+/*
+ * Osmocom PCU test suite in TTCN-3, components for BSSGP handlng
+ * (C) 2018-2019 Harald Welte <laforge@gnumonks.org>
+ * (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * 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 BSSGP_Types all;
+import from BSSGP_Emulation all;
+import from NS_Types all;
+import from NS_Emulation all;
+import from GPRS_Context all;
+
+modulepar {
+ BssgpConfig mp_gb_cfg := {
+ nsei := 1234,
+ bvci := 1234,
+ cell_id := {
+ ra_id := {
+ lai := {
+ mcc_mnc := '262F42'H, lac := 13135
+ },
+ rac := 0
+ },
+ cell_id := 20960
+ },
+ sgsn_role := true,
+ depth := BSSGP_DECODE_DEPTH_BSSGP
+ };
+
+ NSConfiguration mp_nsconfig := {
+ local_udp_port := 23000,
+ local_ip := "127.0.0.1",
+ remote_udp_port := 21000,
+ remote_ip := "127.0.0.1",
+ nsvci := 0,
+ nsei := 2342,
+ role_sgsn := true,
+ handle_sns := true
+ };
+}
+
+/* FIXME: merge this into BSSGP_Client_CT ? */
+type component bssgp_CT extends BSSGP_Client_CT {
+ var NS_CT ns_component;
+ var BSSGP_CT bssgp_component;
+ var boolean g_initialized := false;
+}
+
+/* FIXME: merge this into BSSGP_Client_CT ? */
+function f_init_bssgp() runs on bssgp_CT {
+ var MmContext mmctx := {
+ imsi := '262420000000001'H,
+ tlli := 'FFFFFFFF'O,
+ n_u := 0
+ };
+
+
+ if (g_initialized == true) {
+ return;
+ }
+ g_initialized := true;
+
+ /* create a new NS component */
+ ns_component := NS_CT.create;
+ bssgp_component := BSSGP_CT.create;
+ /* connect our BSSGP port to the BSSGP Emulation */
+ connect(self:BSSGP[0], bssgp_component:BSSGP_SP);
+ connect(self:BSSGP_SIG[0], bssgp_component:BSSGP_SP_SIG);
+ connect(self:BSSGP_PROC[0], bssgp_component:BSSGP_PROC);
+ /* connect lower-end of BSSGP with BSSGP_CODEC_PORT (maps to NS_PT*/
+ connect(bssgp_component:BSCP, ns_component:NS_SP);
+ /* connect lower-end of NS emulation to NS_CODEC_PORT (on top of IPl4) */
+ map(ns_component:NSCP, system:NS_CODEC_PORT);
+ ns_component.start(NSStart(mp_nsconfig));
+ bssgp_component.start(BssgpStart(mp_gb_cfg));
+
+ f_bssgp_client_register(mmctx.imsi, mmctx.tlli, mp_gb_cfg.cell_id);
+}
+
+/* Establish BSSGP connection to PCU */
+function f_bssgp_establish() runs on BSSGP_Client_CT {
+ timer T:= 10.0;
+
+ T.start
+ alt {
+ [] BSSGP[0].receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { }
+ [] BSSGP[0].receive { repeat; }
+ [] T.timeout {
+ setverdict(fail, "Timeout establishing BSSGP connection");
+ mtc.stop;
+ }
+ }
+ T.stop
+ log("BSSGP successfully initialized");
+}
+
+}