fixeria has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38310?usp=email )
Change subject: s1gw: add TC_e_rab_setup_failure
......................................................................
s1gw: add TC_e_rab_setup_failure
Change-Id: I97102292678e732265dcae04d60f7a708a5246dc
Related: osmo-s1gw.git I242e84fb09b00f4794b6e1aa770f348a0e60aea4
Related: SYS#6772
---
M s1gw/S1GW_Tests.ttcn
M s1gw/expected-results.xml
2 files changed, 63 insertions(+), 1 deletion(-)
Approvals:
fixeria: Looks good to me, approved
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index baede7d..729bc77 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -367,6 +367,66 @@
vc_conn.done;
}
+/* Test E-RAB SETUP procedure being aborted by the S1GW due to
+ * PFCP Session Establishment failure (cause=REQUEST_REJECTED). */
+function f_TC_e_rab_setup_failure(charstring id) runs on ConnHdlr {
+ var OCT4 addr := f_inet_addr(g_pars.pfcp_loc_addr);
+ var ERab erab := g_pars.erabs[0];
+
+ f_ConnHdlr_s1ap_register(g_pars.genb_id);
+ f_ConnHdlr_s1ap_connect(mp_enb_bind_ip, mp_s1gw_enb_ip);
+ f_ConnHdlr_s1ap_setup(g_pars.genb_id);
+
+ /* see comments in f_ConnHdlr_erab_setup_req() */
+ f_PFCPEM_subscribe_seid('0000000000000000'O);
+ f_PFCPEM_subscribe_seid(erab.pfcp_loc_seid);
+
+ log("eNB <- [S1GW <- MME]: E-RAB SETUP REQUEST");
+ f_ConnHdlr_tx_erab_setup_req({erab});
+ log("UPF <- S1GW: PFCP Session Establishment Request");
+ var PDU_PFCP req := f_ConnHdlr_rx_session_establish_req(erab);
+ /* store peer's SEID, so that it can be used in outgoing PDUs later */
+ erab.pfcp_rem_seid :=
req.message_body.pfcp_session_establishment_request.CP_F_SEID.seid;
+
+ log("UPF -> S1GW: PFCP Session Establishment Response (failure)");
+ var template (value) PDU_PFCP resp;
+ resp := ts_PFCP_Session_Est_Resp(seq_nr := req.sequence_number,
+ node_id := ts_PFCP_Node_ID_ipv4(addr),
+ seid := erab.pfcp_rem_seid,
+ f_seid := ts_PFCP_F_SEID_ipv4(addr, erab.pfcp_loc_seid),
+ created_pdr := {},
+ cause := ts_PFCP_Cause(REQUEST_REJECTED));
+ PFCP.send(resp);
+
+ /* see comments in f_ConnHdlr_erab_setup_req() */
+ f_PFCPEM_unsubscribe_seid('0000000000000000'O);
+ f_PFCPEM_unsubscribe_seid(erab.pfcp_loc_seid);
+
+ /* expect E-RAB SETUP RESPONSE replied by the S1GW */
+ var template (present) S1AP_PDU setup_rsp;
+ var template (present) E_RABItem item;
+ var S1AP_PDU s1ap_pdu;
+
+ log("eNB -- [S1GW -> MME]: E-RAB SETUP RESPONSE (failure)");
+ item := tr_E_RABItem(erab.erab_id, {transport := transport_resource_unavailable});
+ setup_rsp := tr_S1AP_RABSetupRsp(g_pars.mme_ue_id, g_pars.idx,
+ rab_setup_items := omit,
+ rab_failed_items := tr_E_RABList(item));
+ f_ConnHdlr_rx_s1ap_from_enb(s1ap_pdu);
+
+ f_ConnHdlr_s1ap_disconnect();
+ f_ConnHdlr_s1ap_unregister(g_pars.genb_id);
+}
+testcase TC_e_rab_setup_failure() runs on test_CT {
+ var ConnHdlrPars pars := valueof(t_ConnHdlrPars);
+ var ConnHdlr vc_conn;
+
+ f_init();
+
+ vc_conn := f_ConnHdlr_spawn(refers(f_TC_e_rab_setup_failure), pars);
+ vc_conn.done;
+}
+
/* Test INITIAL CONTEXT SETUP procedure (successful case) */
function f_TC_initial_ctx_setup(charstring id) runs on ConnHdlr {
f_ConnHdlr_s1ap_register(g_pars.genb_id);
@@ -484,6 +544,7 @@
execute( TC_e_rab_setup_multi() );
execute( TC_e_rab_setup3_multi() );
execute( TC_e_rab_release_ind() );
+ execute( TC_e_rab_setup_failure() );
execute( TC_initial_ctx_setup() );
execute( TC_initial_ctx_setup3() );
execute( TC_initial_ctx_setup_multi() );
diff --git a/s1gw/expected-results.xml b/s1gw/expected-results.xml
index 3ddbb23..c6995c9 100644
--- a/s1gw/expected-results.xml
+++ b/s1gw/expected-results.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<testsuite name='S1GW_Tests' tests='15' failures='0'
errors='0' skipped='0' inconc='0' time='MASKED'>
+<testsuite name='S1GW_Tests' tests='16' failures='0'
errors='0' skipped='0' inconc='0' time='MASKED'>
<testcase classname='S1GW_Tests' name='TC_setup'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_setup_multi'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_conn_term_by_mme'
time='MASKED'/>
@@ -9,6 +9,7 @@
<testcase classname='S1GW_Tests' name='TC_e_rab_setup_multi'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_e_rab_setup3_multi'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_e_rab_release_ind'
time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_e_rab_setup_failure'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup3'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup_multi'
time='MASKED'/>
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38310?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: I97102292678e732265dcae04d60f7a708a5246dc
Gerrit-Change-Number: 38310
Gerrit-PatchSet: 4
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>