Review at  https://gerrit.osmocom.org/6404

sgsn: Skeleton of a SGSN test fremwork

Based on the exsting NS/BSSGP emulation as well as the VTY, GSUP and
CTRL implementations, we are now building a test framework skeleton
for osmo-sgsn.

Change-Id: Icce90f9d8a680c7a523163e2c0bc03d12ff857e2
---
M library/BSSGP_Emulation.ttcn
A sgsn/SGSN_Tests.ttcn
A sgsn/gen_links.sh
A sgsn/regen_makefile.sh
4 files changed, 145 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/04/6404/1

diff --git a/library/BSSGP_Emulation.ttcn b/library/BSSGP_Emulation.ttcn
index 70c9c80..52649ef 100644
--- a/library/BSSGP_Emulation.ttcn
+++ b/library/BSSGP_Emulation.ttcn
@@ -40,7 +40,8 @@
                out     PDU_BSSGP;
        } with { extension "internal" };
 
-       function BssgpStart() runs on BSSGP_CT {
+       function BssgpStart(boolean sgsn_role := false) runs on BSSGP_CT {
+               g_sgsn_role := sgsn_role
                f_init();
                f_ScanEvents();
        }
@@ -189,10 +190,13 @@
                                [] g_T1.timeout {
                                        f_sendUnblock();
                                }
-                               [] 
BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK_ACK(mp_bvci))) {
+                               [] 
BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK_ACK(mp_bvci), 0)) {
                                        g_T1.stop;
                                        f_change_state(BVC_S_UNBLOCKED);
                                }
+                               [not g_sgsn_role] 
BSCP.receive(f_BnsUdInd(tr_BVC_RESET_ACK(mp_bvci, omit), 0)) {
+                                       f_sendUnblock();
+                               }
                        }
                } else if (g_ptp_bvc_state == BVC_S_UNBLOCKED) {
                        alt {
diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
new file mode 100644
index 0000000..d535432
--- /dev/null
+++ b/sgsn/SGSN_Tests.ttcn
@@ -0,0 +1,67 @@
+module SGSN_Tests {
+
+import from General_Types all;
+import from Osmocom_Types all;
+import from NS_Types all;
+import from NS_Emulation all;
+import from BSSGP_Types all;
+import from BSSGP_Emulation all;
+
+type component test_CT {
+       var NS_CT vc_NS;
+
+       var BSSGP_CT vc_BSSGP;
+       port BSSGP_PT BSSGP;
+
+       var boolean g_initialized := false;
+};
+
+function f_init() runs on test_CT {
+       if (g_initialized == true) {
+               return;
+       }
+       g_initialized := true;
+
+       vc_NS := NS_CT.create;
+       vc_BSSGP := BSSGP_CT.create;
+       /* connect our BSSGP port to upper end of BSSGP emulation */
+       connect(self:BSSGP, vc_BSSGP:BSSGP_SP);
+       /* connect lower end of BSSGP emulation with NS upper port */
+       connect(vc_BSSGP:BSCP, vc_NS:NS_SP);
+       /* connect lower end of NS emulation to NS codec port (on top of IPL4) 
*/
+       map(vc_NS:NSCP, system:NS_CODEC_PORT);
+
+       vc_NS.start(NSStart());
+       vc_BSSGP.start(BssgpStart(false));
+}
+
+/* TODO:
+   * RAU without Attach
+   * Detach without Attach
+   * SM procedures without attach / RAU
+   * ATTACH / RAU
+   ** with / without authentication
+   ** with / without P-TMSI allocation
+   ** timeout from HLR on SAI
+   ** timeout from HLR on UL
+   ** reject from HLR on SAI
+   ** reject from HLR on UL
+   * re-transmissions of LLC frames
+   * PDP Context activation
+   ** with different GGSN config in SGSN VTY
+   ** with different PDP context type (v4/v6/v46)
+   ** timeout from GGSN
+   ** reject from GGSN
+ */
+
+testcase TC_wait_ns_up() runs on test_CT {
+       f_init();
+       f_sleep(20.0);
+}
+
+
+//control { }
+
+
+
+}
diff --git a/sgsn/gen_links.sh b/sgsn/gen_links.sh
new file mode 100755
index 0000000..160f1f0
--- /dev/null
+++ b/sgsn/gen_links.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+BASEDIR=../deps
+
+gen_links() {
+       DIR=$1
+       FILES=$*
+       for f in $FILES; do
+               echo "Linking $f"
+               ln -sf $DIR/$f $f
+       done
+}
+
+#DIR=$BASEDIR/titan.TestPorts.UNIX_DOMAIN_SOCKETasp/src
+#FILES="UD_PT.cc  UD_PT.hh  UD_PortType.ttcn  UD_Types.ttcn"
+#gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src
+FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn 
TCCConversion.cc TCCConversion.hh TCCInterface.cc TCCInterface_ip.h"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src
+FILES="Socket_API_Definitions.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.IPL4asp/src
+FILES="IPL4asp_Functions.ttcn  IPL4asp_PT.cc  IPL4asp_PT.hh 
IPL4asp_PortType.ttcn  IPL4asp_Types.ttcn  IPL4asp_discovery.cc 
IPL4asp_protocol_L234.hh"
+gen_links $DIR $FILES
+
+#DIR=$BASEDIR/titan.TestPorts.UNIX_DOMAIN_SOCKETasp/src
+#FILES="UD_PT.cc  UD_PT.hh  UD_PortType.ttcn  UD_Types.ttcn"
+#gen_links $DIR $FILES
+
+# for Osmocom_VTY
+DIR=$BASEDIR/titan.TestPorts.TELNETasp/src
+FILES="TELNETasp_PT.cc  TELNETasp_PT.hh  TELNETasp_PortType.ttcn"
+gen_links $DIR $FILES
+
+# required by IPA Emulation
+DIR=../MTP3asp_CNL113337/src
+FILES="MTP3asp_PortType.ttcn  MTP3asp_Types.ttcn"
+gen_links $DIR $FILES
+
+# required by MGCP Types, which is required by IPA Emulation
+DIR=$BASEDIR/titan.ProtocolModules.SDP/src
+FILES="SDP_EncDec.cc SDP_Types.ttcn SDP_parse_.tab.c SDP_parse_.tab.h 
SDP_parse_parser.h SDP_parser.l
+SDP_parser.y lex.SDP_parse_.c"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.NS_v7.3.0/src
+FILES="NS_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.BSSGP_v13.0.0/src
+FILES="BSSGP_EncDec.cc  BSSGP_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=../library
+FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn 
RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
+FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn 
NS_CodecPort_CtrlFunctDef.cc "
+FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "
+FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn 
Osmocom_CTRL_Adapter.ttcn "
+FILES+="Osmocom_VTY_Functions.ttcn "
+# IPA_Emulation + dependencies
+FILES+="IPA_Types.ttcn IPA_Emulation.ttcn IPA_CodecPort.ttcn 
IPA_CodecPort_CtrlFunct.ttcn
+IPA_CodecPort_CtrlFunctDef.cc Native_Functions.ttcn Native_FunctionDefs.cc 
GSUP_Types.ttcn MGCP_Types.ttcn RSL_Types.ttcn "
+gen_links $DIR $FILES
diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh
new file mode 100755
index 0000000..6824d94
--- /dev/null
+++ b/sgsn/regen_makefile.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc 
TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc RLCMAC_EncDec.cc 
Native_FunctionDefs.cc SDP_EncDec.cc SDP_parse_.tab.c lex.SDP_parse_.c 
TELNETasp_PT.cc IPA_CodecPort_CtrlFunctDef.cc"
+
+../regen-makefile.sh SGSN_Tests.ttcn $FILES

-- 
To view, visit https://gerrit.osmocom.org/6404
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icce90f9d8a680c7a523163e2c0bc03d12ff857e2
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>

Reply via email to