laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38145?usp=email )

Change subject: s1gw: TC_e_rab_setup: also test E-RAB release
......................................................................

s1gw: TC_e_rab_setup: also test E-RAB release

* s1ap: add E-RAB RELEASE API
* pfcp: add PFCP Session Deletion API
* s1gw: make use of this API in TC_e_rab_setup

Change-Id: Id995c51d8ac76316f41ef49d35380a2521d5ae19
---
M s1gw/S1GW_ConnHdlr.ttcn
M s1gw/S1GW_Tests.ttcn
2 files changed, 70 insertions(+), 0 deletions(-)

Approvals:
  pespin: Looks good to me, approved
  laforge: Looks good to me, but someone else must approve
  Jenkins Builder: Verified




diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn
index cd61123..5b2e7bb 100644
--- a/s1gw/S1GW_ConnHdlr.ttcn
+++ b/s1gw/S1GW_ConnHdlr.ttcn
@@ -303,6 +303,7 @@
 };

 private const MME_UE_S1AP_ID c_MME_UE_ID := 4242;
+private const S1AP_IEs.Cause c_REL_CMD_CAUSE := { nas := normal_release };

 function f_ConnHdlr_tx_erab_setup_req(in ERabList erabs,
                                      MME_UE_S1AP_ID mme_ue_id := c_MME_UE_ID)
@@ -399,6 +400,42 @@
        return pdu;
 }

+function f_ConnHdlr_tx_erab_release_cmd(in ERabList erabs,
+                                       S1AP_IEs.Cause cause := c_REL_CMD_CAUSE,
+                                       MME_UE_S1AP_ID mme_ue_id := c_MME_UE_ID)
+runs on ConnHdlr {
+       var ENB_UE_S1AP_ID enb_ue_id := g_pars.idx;
+       var template (value) E_RABList items;
+
+       for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+               var template (value) E_RABItem item;
+
+               item := ts_E_RABItem(erabs[i].erab_id, cause);
+               items[i] := ts_E_RABList(item)[0];
+       }
+
+       f_ConnHdlr_tx_s1ap_from_mme(ts_S1AP_RABReleaseCmd(mme_ue_id, enb_ue_id, 
items));
+}
+
+function f_ConnHdlr_rx_erab_release_cmd(in ERabList erabs,
+                                       S1AP_IEs.Cause cause := c_REL_CMD_CAUSE,
+                                       MME_UE_S1AP_ID mme_ue_id := c_MME_UE_ID)
+runs on ConnHdlr return S1AP_PDU {
+       var ENB_UE_S1AP_ID enb_ue_id := g_pars.idx;
+       var template (present) E_RABList items;
+       var S1AP_PDU pdu;
+
+       for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+               var template (present) E_RABItem item;
+
+               item := ts_E_RABItem(erabs[i].erab_id, cause);
+               items[i] := tr_E_RABList(item)[0];
+       }
+
+       f_ConnHdlr_rx_s1ap_from_mme(pdu, tr_S1AP_RABReleaseCmd(mme_ue_id, 
enb_ue_id, items));
+       return pdu;
+}
+
 function f_ConnHdlr_rx_session_establish_req(in ERab erab)
 runs on ConnHdlr return PDU_PFCP {
        var OCT4 addr := f_inet_addr(g_pars.pfcp_rem_addr);
@@ -504,6 +541,24 @@
        PFCP.send(resp);
 }

+function f_ConnHdlr_rx_session_delete_req(in ERab erab)
+runs on ConnHdlr return PDU_PFCP {
+       /* The final Session Deletion Request PDU */
+       var template (present) PDU_PFCP tr_pdu;
+       tr_pdu := tr_PFCP_Session_Del_Req(erab.pfcp_loc_seid);
+       return f_ConnHdlr_pfcp_expect(tr_pdu);
+}
+
+function f_ConnHdlr_tx_session_delete_resp(in ERab erab,
+                                          in PDU_PFCP req)
+runs on ConnHdlr {
+       /* The final Session Deletion Response PDU */
+       var template (value) PDU_PFCP resp;
+       resp := ts_PFCP_Session_Del_Resp(seq_nr := req.sequence_number,
+                                        seid := erab.pfcp_rem_seid);
+       PFCP.send(resp);
+}
+
 function f_ConnHdlr_erab_setup_req(inout ERabList erabs)
 runs on ConnHdlr {
        log("eNB <- [S1GW <- MME]: E-RAB SETUP REQUEST");
@@ -534,4 +589,17 @@
        f_ConnHdlr_rx_erab_setup_rsp(erabs);
 }

+function f_ConnHdlr_erab_release_cmd(inout ERabList erabs,
+                                    S1AP_IEs.Cause cause := c_REL_CMD_CAUSE)
+runs on ConnHdlr {
+       f_ConnHdlr_tx_erab_release_cmd(erabs, cause);
+       for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+               log("UPF <- S1GW: PFCP Session Deletion Request for E-RAB ID ", 
erabs[i].erab_id);
+               var PDU_PFCP pdu := f_ConnHdlr_rx_session_delete_req(erabs[i]);
+               log("UPF -> S1GW: PFCP Session Deletion Response for E-RAB ID 
", erabs[i].erab_id);
+               f_ConnHdlr_tx_session_delete_resp(erabs[i], pdu);
+       }
+       f_ConnHdlr_rx_erab_release_cmd(erabs, cause);
+}
+
 }
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index fb4ee9b..ebeda6d 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -277,6 +277,7 @@
        vc_conn.done;
 }

+/* Test E-RAB SETUP [and RELEASE] procedures */
 function f_TC_e_rab_setup(charstring id) runs on ConnHdlr {
        f_ConnHdlr_register_pfcp();
        f_ConnHdlr_s1ap_register(g_pars.genb_id);
@@ -285,6 +286,7 @@

        f_ConnHdlr_erab_setup_req(g_pars.erabs);
        f_ConnHdlr_erab_setup_rsp(g_pars.erabs);
+       f_ConnHdlr_erab_release_cmd(g_pars.erabs);

        f_ConnHdlr_s1ap_disconnect();
        f_ConnHdlr_s1ap_unregister(g_pars.genb_id);

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

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Id995c51d8ac76316f41ef49d35380a2521d5ae19
Gerrit-Change-Number: 38145
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to