fixeria has uploaded this change for review. (
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, 69 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/45/38145/1
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..2e513da 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -285,6 +285,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: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Id995c51d8ac76316f41ef49d35380a2521d5ae19
Gerrit-Change-Number: 38145
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>