fixeria has uploaded this change for review. ( 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 --- M s1gw/S1GW_Tests.ttcn M s1gw/expected-results.xml 2 files changed, 54 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/10/38310/1
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn index baede7d..6f4562b 100644 --- a/s1gw/S1GW_Tests.ttcn +++ b/s1gw/S1GW_Tests.ttcn @@ -367,6 +367,57 @@ 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); + + var S1AP_PDU s1ap_pdu; /* XXX: expect E-RAB SETUP RESPONSE here */ + 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 +535,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'/>