pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35884?usp=email )


Change subject: epdg: Introduce test TC_ho_lte_to_wifi
......................................................................

epdg: Introduce test TC_ho_lte_to_wifi

This test emulates a UE doing handover to ePDG, when it may create extra
dedicated bearers.

Change-Id: Ibdfeda1fa5d7016b1952d64b306cd501cb33f61b
---
M epdg/EPDG_Tests.ttcn
M library/GTPv2_Templates.ttcn
2 files changed, 137 insertions(+), 21 deletions(-)



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

diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn
index e5cdafd..14bb060 100644
--- a/epdg/EPDG_Tests.ttcn
+++ b/epdg/EPDG_Tests.ttcn
@@ -488,6 +488,47 @@
        }
 }

+/* Expect CreateBearerResponse */
+private altstep as_GTP2C_CreateBearer_success() runs on EPDG_ConnHdlr {
+       var PDU_GTPCv2 rx_msg;
+
+       [] GTP2.receive(tr_GTP2C_CreateBearerResp(g_pars.teic_local)) -> value 
rx_msg {
+               setverdict(pass);
+       }
+       [] GTP2.receive(PDU_GTPCv2:?) -> value rx_msg {
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, 
log2str("Unexpected GTP2C msg rx: ", rx_msg));
+       }
+}
+private function f_GTP2C_CreateBearer_success(uint4_t dedicated_bearer_id := 
6) runs on EPDG_ConnHdlr {
+
+       var template (value) FullyQualifiedTEID fteid_u_ie := 
ts_GTP2C_FTEID(FTEID_IF_S2bU_ePDG_GTPU, g_pars.bearer.teid_local, 
dedicated_bearer_id,
+                                                           
f_inet_addr(mp_s2b_local_ip), omit);
+       var template (value) FullyQualifiedTEID_List teid_list := { fteid_u_ie 
};
+
+       var template (value) FullyQualifiedPDN_ConnectionSetID pgw_fq_csid := 
ts_GTP2C_FQCSID_IPv4(f_inet_addr(mp_s2b_local_ip), int2oct(dedicated_bearer_id, 
2));
+       var template (value) FullyQualifiedPDN_ConnectionSetID_List csid_list 
:= { pgw_fq_csid };
+
+       var template (value) BearerContextGrouped_List bcg_list := {
+                       ts_GTP2C_BcGrouped({
+                               ePS_Bearer_ID := 
ts_GTP2C_EpsBearerId(dedicated_bearer_id),
+                               cause := omit,
+                               ePS_Bearer_TFT := omit,
+                               fullyQualifiedTEID := teid_list,
+                               bearerLevel_QoS := ts_GTP2C_BearerQos('09'O, 
0,0,0,0),
+                               chargingID := 
ts_GTP2C_ChargingID(f_rnd_octstring(4)),
+                               bearerFlags := omit,
+                               transactionIdentifier := omit,
+                               protocolConfigOptions := omit,
+                               rAN_NASCause := omit,
+                               additionalProtocolConfigOptions := omit,
+                               extendedProtocolConfigOptions := omit
+                               })
+       };
+       GTP2.send(ts_GTP2C_CreateBearerReq(g_pars.teic_remote, omit, 
g_pars.bearer.ebi,
+                                          dedicated_bearer_id, bcg_list, 
csid_list));
+       as_GTP2C_CreateBearer_success();
+}
+
 /* Expect DeleteBearerResponse */
 private altstep as_GTP2C_DeleteBearer_success() runs on EPDG_ConnHdlr {
        var PDU_GTPCv2 rx_msg;
@@ -618,6 +659,23 @@
        setverdict(pass);
 }

+private function f_TC_ho_lte_to_wifi(charstring id) runs on EPDG_ConnHdlr {
+       f_initial_attach();
+       /* Whenever UE comes from 3GPP, PGW may activate a dedicated S2b bearer
+        * and notify ePDG with a Create Bearer Request */
+       f_GTP2C_CreateBearer_success();
+       f_GSUP_PurgeMS_success();
+}
+
+testcase TC_ho_lte_to_wifi() runs on MTC_CT {
+       var EPDG_ConnHdlrPars pars := f_init_pars();
+       var EPDG_ConnHdlr vc_conn;
+       f_init();
+       vc_conn := f_start_handler(refers(f_TC_ho_lte_to_wifi), pars);
+       vc_conn.done;
+       setverdict(pass);
+}
+
 private function f_TC_ho_wifi_to_lte(charstring id) runs on EPDG_ConnHdlr {
        f_initial_attach();
        /* Whenever UE goes back to 3GPP, PGW will notify ePDG with a Delete 
Bearer Request
@@ -636,6 +694,7 @@

 control {
        execute ( TC_authinfo_normal() );
+       execute ( TC_ho_lte_to_wifi() );
        execute ( TC_ho_wifi_to_lte() );
 }

diff --git a/library/GTPv2_Templates.ttcn b/library/GTPv2_Templates.ttcn
index afe0138..9f242ee 100644
--- a/library/GTPv2_Templates.ttcn
+++ b/library/GTPv2_Templates.ttcn
@@ -671,6 +671,13 @@
        pTI_Value := pti,
        additionalOctets := omit
 }
+private function f_ts_GTP2C_ProcTransId_omit(template (omit) integer pti)
+return template (omit) ProcedureTransactionID {
+       if (istemplatekind(pti, "omit")) {
+               return omit;
+       }
+       return ts_GTP2C_ProcTransId(pti);
+}
 template (present) ProcedureTransactionID
 tr_GTP2C_ProcTransId(template (present) integer pti) := {
        elementIdentifier := '64'O,
@@ -725,7 +732,35 @@
        additionalOctets := *
 }

-
+/* 8.62 Fully qualified PDN Connection Set Identifier (FQ-CSID) */
+template (value) NodeID ts_GTP2C_FQCSID_NodeID_IPv4(template (value) OCT4 
addr) := {
+       globalUnicastIPv4 := addr
+}
+template (value) FullyQualifiedPDN_ConnectionSetID
+ts_GTP2C_FQCSID(template (value) integer nRofCSIDs,
+               template (value) integer nodeIDType,
+               template (value) NodeID nodeID,
+               template (value) PDN_CSID_List pDN_CSID_List,
+               template (value) uint4_t instance := 0) := {
+       elementIdentifier := '84'O,
+       lengthIndicator := 0, /* overwritten */
+       instance := int2bit(valueof(instance), 4),
+       spare := '0000'B,
+       nRofCSIDs := nRofCSIDs,
+       nodeIDType := nodeIDType,
+       nodeID := nodeID,
+       pDN_CSID_List := pDN_CSID_List,
+       additionalOctets := omit
+}
+template (value) FullyQualifiedPDN_ConnectionSetID
+ts_GTP2C_FQCSID_IPv4(template (value) OCT4 addr,
+                    template (value) OCT2 csid,
+                    template (value) uint4_t instance := 0) :=
+ts_GTP2C_FQCSID(nRofCSIDs := 1,
+               nodeIDType := 0,
+               nodeID := ts_GTP2C_FQCSID_NodeID_IPv4(addr),
+               pDN_CSID_List := {csid},
+               instance := instance);


 template (value) PDU_GTPCv2 ts_PDU_GTP2C(template (omit) OCT4 teid, template 
(value) OCT3 seq,
@@ -1068,33 +1103,19 @@

 template (value) PDU_GTPCv2
 ts_GTP2C_CreateBearerReq(template (value) OCT4 d_teid,
-                        template (value) integer proc_trans_id,
+                        template (omit) integer proc_trans_id,
                         template (value) uint4_t linked_id,
                         template (value) uint4_t bearer_id,
-                        template (omit) FullyQualifiedTEID_List teid_list,
+                        template (value) BearerContextGrouped_List 
bearer_ctx_list,
+                        template (omit) FullyQualifiedPDN_ConnectionSetID_List 
csid := omit,
                         template (value) Bearer_QoS qos := 
ts_GTP2C_BearerQos('09'O, 0,0,0,0)) :=
 ts_PDU_GTP2C(d_teid, '000000'O, '5F'O, {
        createBearerRequest := {
-               procedureTransactionID := ts_GTP2C_ProcTransId(proc_trans_id),
+               procedureTransactionID := 
f_ts_GTP2C_ProcTransId_omit(proc_trans_id),
                linkedEPS_BearerID := ts_GTP2C_EpsBearerId(linked_id),
                protocolConfigOptions := omit,
-               bearerContextGrouped := {
-                       ts_GTP2C_BcGrouped({
-                               ePS_Bearer_ID := 
ts_GTP2C_EpsBearerId(bearer_id),
-                               cause := omit,
-                               ePS_Bearer_TFT := omit,
-                               fullyQualifiedTEID := teid_list,
-                               bearerLevel_QoS := qos,
-                               chargingID := omit,
-                               bearerFlags := omit,
-                               transactionIdentifier := omit,
-                               protocolConfigOptions := omit,
-                               rAN_NASCause := omit,
-                               additionalProtocolConfigOptions := omit,
-                               extendedProtocolConfigOptions := omit
-                               })
-               },
-               csid := omit,
+               bearerContextGrouped := bearer_ctx_list,
+               csid := csid,
                changeReportingAction := omit,
                cSG_InformationReportingAction := omit,
                heNBInformationReporting := omit,
@@ -1105,6 +1126,30 @@
                nBIFOMContainer := omit,
                privateExtension := omit
        }});
+template (present) PDU_GTPCv2
+tr_GTP2C_CreateBearerResp(template (present) OCT4 d_teid,
+                          template (present) OCT3 seq := ?,
+                          template (present) GTP2C_Cause cause := ?
+                       ) :=
+tr_PDU_GTP2C(d_teid, seq, {
+       createBearerResponse := {
+               cause := tr_GTP2C_Cause(cause),
+               bearerContextGrouped := *,
+               recovery := *,
+               csid := *,
+               protocolConfigOptions := *,
+               uE_TimeZone := *,
+               uLI := *,
+               trustedWLANAccessNetworkIdentifier := *,
+               overloadControlInformationGrouped := *,
+               presenceReportingAreaInformation := *,
+               iP_Addr := *,
+               wLANLocationTimestamp := *,
+               portNumber := *,
+               nBIFOMContainer := *,
+               extendedProtocolConfigOptions := *,
+               privateExtension:= *
+       }});

 template (present) PDU_GTPCv2
 tr_GTP2C_ModifyBearerReq(template (present) OCT4 d_teid := ?,

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35884?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ibdfeda1fa5d7016b1952d64b306cd501cb33f61b
Gerrit-Change-Number: 35884
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to