fixeria has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39462?usp=email )
Change subject: s1gw: add TCs for UE CONTEXT RELEASE procedures
......................................................................
s1gw: add TCs for UE CONTEXT RELEASE procedures
Change-Id: I065692f311e9d03630ab3ca2f6a03465418f0e71
Related: SYS#7310
---
M s1gw/S1GW_ConnHdlr.ttcn
M s1gw/S1GW_Tests.ttcn
M s1gw/expected-results.xml
3 files changed, 94 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/62/39462/1
diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn
index b2b207d..e84c3ab 100644
--- a/s1gw/S1GW_ConnHdlr.ttcn
+++ b/s1gw/S1GW_ConnHdlr.ttcn
@@ -859,4 +859,47 @@
f_ConnHdlr_rx_initial_ctx_setup_rsp(erabs);
}
+function f_ConnHdlr_ue_ctx_release_req(S1AP_IEs.Cause cause := c_REL_CMD_CAUSE)
+runs on ConnHdlr {
+ var MME_UE_S1AP_ID mme_ue_id := g_pars.mme_ue_id;
+ var ENB_UE_S1AP_ID enb_ue_id := g_pars.idx;
+ var S1AP_PDU pdu;
+
+ log("[eNB -> S1GW] -> MME: UE CONTEXT RELEASE REQUEST");
+ f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_UeContextReleaseReq(mme_ue_id, enb_ue_id, cause));
+ f_ConnHdlr_session_delete(g_pars.erabs);
+ log("eNB -> [S1GW -> MME]: UE CONTEXT RELEASE REQUEST");
+ f_ConnHdlr_rx_s1ap_from_enb(pdu, tr_S1AP_UeContextReleaseReq(mme_ue_id, enb_ue_id,
cause));
+}
+
+function f_ConnHdlr_ue_ctx_release_cmd(S1AP_IEs.Cause cause := c_REL_CMD_CAUSE)
+runs on ConnHdlr {
+ var template (value) UE_S1AP_IDs ue_ids := {
+ uE_S1AP_ID_pair := {
+ mME_UE_S1AP_ID := g_pars.mme_ue_id,
+ eNB_UE_S1AP_ID := g_pars.idx,
+ iE_Extensions := omit
+ }
+ };
+ var S1AP_PDU pdu;
+
+ log("eNB <- [S1GW <- MME]: UE CONTEXT RELEASE COMMAND");
+ f_ConnHdlr_tx_s1ap_from_mme(ts_S1AP_UeContextReleaseCmd(ue_ids, cause));
+ f_ConnHdlr_session_delete(g_pars.erabs);
+ log("[eNB <- S1GW] <- MME: UE CONTEXT RELEASE COMMAND");
+ f_ConnHdlr_rx_s1ap_from_mme(pdu, tr_S1AP_UeContextReleaseCmd(ue_ids, cause));
+}
+
+function f_ConnHdlr_ue_ctx_release_compl()
+runs on ConnHdlr {
+ var MME_UE_S1AP_ID mme_ue_id := g_pars.mme_ue_id;
+ var ENB_UE_S1AP_ID enb_ue_id := g_pars.idx;
+ var S1AP_PDU pdu;
+
+ log("[eNB -> S1GW] -> MME: UE CONTEXT RELEASE COMPLETE");
+ f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_UeContextReleaseCompl(mme_ue_id, enb_ue_id));
+ log("eNB -> [S1GW -> MME]: UE CONTEXT RELEASE COMPLETE");
+ f_ConnHdlr_rx_s1ap_from_enb(pdu, tr_S1AP_UeContextReleaseCompl(mme_ue_id, enb_ue_id));
+}
+
}
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index 089bd0d..8bb2f09 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -468,6 +468,48 @@
f_TC_exec(refers(f_TC_initial_ctx_setup_failure));
}
+/* Test UE CONTEXT RELEASE REQUEST procedure (eNB initiated) */
+function f_TC_ue_ctx_release_req(charstring id) runs on ConnHdlr {
+ 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);
+
+ f_ConnHdlr_initial_ctx_setup_req(g_pars.erabs);
+ f_ConnHdlr_initial_ctx_setup_rsp(g_pars.erabs);
+ f_ConnHdlr_ue_ctx_release_req();
+
+ f_ConnHdlr_s1ap_disconnect();
+ f_ConnHdlr_s1ap_unregister(g_pars.genb_id);
+}
+testcase TC_ue_ctx_release_req() runs on test_CT {
+ f_TC_exec(refers(f_TC_ue_ctx_release_req), num_erabs := 1);
+}
+testcase TC_ue_ctx_release_req3() runs on test_CT {
+ f_TC_exec(refers(f_TC_ue_ctx_release_req), num_erabs := 3);
+}
+
+/* Test UE CONTEXT RELEASE COMMAND/COMPLETE procedure (MME initiated) */
+function f_TC_ue_ctx_release_cmd_compl(charstring id) runs on ConnHdlr {
+ 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);
+
+ f_ConnHdlr_initial_ctx_setup_req(g_pars.erabs);
+ f_ConnHdlr_initial_ctx_setup_rsp(g_pars.erabs);
+
+ f_ConnHdlr_ue_ctx_release_cmd();
+ f_ConnHdlr_ue_ctx_release_compl();
+
+ f_ConnHdlr_s1ap_disconnect();
+ f_ConnHdlr_s1ap_unregister(g_pars.genb_id);
+}
+testcase TC_ue_ctx_release_cmd_compl() runs on test_CT {
+ f_TC_exec(refers(f_TC_ue_ctx_release_cmd_compl), num_erabs := 1);
+}
+testcase TC_ue_ctx_release_cmd_compl3() runs on test_CT {
+ f_TC_exec(refers(f_TC_ue_ctx_release_cmd_compl), num_erabs := 3);
+}
+
function f_TC_pfcp_heartbeat(charstring id) runs on ConnHdlr {
var integer rts := f_PFCPEM_get_recovery_timestamp();
var PDU_PFCP pfcp_pdu;
@@ -501,6 +543,10 @@
execute( TC_initial_ctx_setup_multi() );
execute( TC_initial_ctx_setup3_multi() );
execute( TC_initial_ctx_setup_failure() );
+ execute( TC_ue_ctx_release_req() );
+ execute( TC_ue_ctx_release_req3() );
+ execute( TC_ue_ctx_release_cmd_compl() );
+ execute( TC_ue_ctx_release_cmd_compl3() );
execute( TC_pfcp_heartbeat() );
}
diff --git a/s1gw/expected-results.xml b/s1gw/expected-results.xml
index c6995c9..c5cb28f 100644
--- a/s1gw/expected-results.xml
+++ b/s1gw/expected-results.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<testsuite name='S1GW_Tests' tests='16' failures='0'
errors='0' skipped='0' inconc='0' time='MASKED'>
+<testsuite name='S1GW_Tests' tests='20' 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'/>
@@ -15,5 +15,9 @@
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup_multi'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup3_multi'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_initial_ctx_setup_failure'
time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_req'
time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_req3'
time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_cmd_compl'
time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_cmd_compl3'
time='MASKED'/>
<testcase classname='S1GW_Tests' name='TC_pfcp_heartbeat'
time='MASKED'/>
</testsuite>
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39462?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: I065692f311e9d03630ab3ca2f6a03465418f0e71
Gerrit-Change-Number: 39462
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>