fixeria has uploaded this change for review.

View Change

s1gw: derive functions from f_TC_e_rab_setup()

... to avoid code duplication when adding more E-RAB related TCs.

Change-Id: I1bff371da6337ecd7710219d1c86f0fff82ad17f
---
M s1gw/S1GW_ConnHdlr.ttcn
M s1gw/S1GW_Tests.ttcn
2 files changed, 91 insertions(+), 50 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/62/38062/1
diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn
index c0188db..11d064d 100644
--- a/s1gw/S1GW_ConnHdlr.ttcn
+++ b/s1gw/S1GW_ConnHdlr.ttcn
@@ -286,4 +286,87 @@
f_pfcp_handle_assoc_setup_req();
}
}
+
+type record MmeEnbERabId {
+ integer mme_id,
+ integer enb_id,
+ integer erab_id
+};
+
+type record of ERabParams ERabParamsList;
+type record ERabParams {
+ GTP_TEID teid,
+ charstring tla
+};
+
+function f_ConnHdlr_tx_erab_setup_req(MmeEnbERabId id, ERabParams params)
+runs on ConnHdlr {
+ var template (value) E_RABToBeSetupListBearerSUReq items;
+ var template (value) E_RABToBeSetupItemBearerSUReq item;
+ var template (value) E_RABLevelQoSParameters qos_params;
+ var template (value) TransportLayerAddress tla;
+
+ tla := oct2bit(f_inet_addr(params.tla));
+ qos_params := ts_E_RABLevelQoSParameters(qci := 5);
+ item := ts_S1AP_RABToBeSetupItemBearerSUReq(rab_id := id.erab_id,
+ qos_params := qos_params,
+ tla := tla,
+ gtp_teid := params.teid,
+ nas_pdu := ''O);
+ items := ts_S1AP_RABToBeSetupListBearerSUReq(item);
+
+ f_ConnHdlr_tx_s1ap_from_mme(ts_S1AP_RABSetupReq(id.mme_id, id.enb_id, items));
+}
+
+function f_ConnHdlr_rx_erab_setup_req(MmeEnbERabId id, ERabParams params)
+runs on ConnHdlr return S1AP_PDU {
+ var template (present) E_RABToBeSetupListBearerSUReq items;
+ var template (present) E_RABToBeSetupItemBearerSUReq item;
+ var template (present) TransportLayerAddress tla;
+ var S1AP_PDU pdu;
+
+ tla := oct2bit(f_inet_addr(params.tla));
+ item := tr_S1AP_RABToBeSetupItemBearerSUReq(rab_id := id.erab_id,
+ qos_params := ?,
+ tla := tla,
+ gtp_teid := params.teid,
+ nas_pdu := ''O);
+ items := tr_S1AP_RABToBeSetupListBearerSUReq(item);
+
+ f_ConnHdlr_rx_s1ap_from_mme(pdu, tr_S1AP_RABSetupReq(id.mme_id, id.enb_id, items));
+ return pdu;
+}
+
+function f_ConnHdlr_tx_erab_setup_rsp(MmeEnbERabId id, ERabParams params)
+runs on ConnHdlr {
+ var template (value) E_RABSetupListBearerSURes items;
+ var template (value) E_RABSetupItemBearerSURes item;
+ var template (value) TransportLayerAddress tla;
+
+ tla := oct2bit(f_inet_addr(params.tla));
+ item := ts_S1AP_RABSetupItemBearerSURes(rab_id := id.erab_id,
+ tla := tla,
+ gtp_teid := params.teid);
+ items := ts_S1AP_RABSetupListBearerSURes(item);
+
+ f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_RABSetupRsp(id.mme_id, id.enb_id, items));
+}
+
+function f_ConnHdlr_rx_erab_setup_rsp(MmeEnbERabId id, ERabParams params)
+runs on ConnHdlr return S1AP_PDU {
+ var template (present) E_RABSetupListBearerSURes items;
+ var template (present) E_RABSetupItemBearerSURes item;
+ var template (present) TransportLayerAddress tla;
+ var S1AP_PDU pdu;
+
+ tla := oct2bit(f_inet_addr(params.tla));
+ item := tr_S1AP_RABSetupItemBearerSURes(rab_id := id.erab_id,
+ tla := tla,
+ gtp_teid := params.teid);
+ items := tr_S1AP_RABSetupListBearerSURes(item);
+
+ f_ConnHdlr_rx_s1ap_from_enb(pdu, tr_S1AP_RABSetupRsp(id.mme_id, id.enb_id, items));
+ return pdu;
+}
+
}
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index 9e1a27e..35aed5f 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -247,10 +247,8 @@
}

function f_TC_e_rab_setup(charstring id) runs on ConnHdlr {
- const integer mme_id := 7;
- const integer enb_id := 9;
- const integer erab_id := 6;
- var S1AP_PDU pdu;
+ const MmeEnbERabId erab_id := {7, 9, 6};
+ var GTP_TEID teid;

f_ConnHdlr_register_pfcp();
f_ConnHdlr_s1ap_register(g_pars.genb_id);
@@ -258,55 +256,15 @@
f_ConnHdlr_s1ap_setup(g_pars.genb_id);

log("eNB <- [S1GW] <- MME: E-RAB SETUP REQUEST");
- var template (value) E_RABToBeSetupListBearerSUReq items_req;
- var E_RABToBeSetupItemBearerSUReq item_req := {
- e_RAB_ID := erab_id,
- e_RABlevelQoSParameters := {
- qCI := 5,
- allocationRetentionPriority := {
- priorityLevel := 1,
- pre_emptionCapability := shall_not_trigger_pre_emption,
- pre_emptionVulnerability := not_pre_emptable,
- iE_Extensions := omit
- },
- gbrQosInformation := omit,
- iE_Extensions := omit
- },
- transportLayerAddress := -,
- gTP_TEID := f_rnd_octstring(4),
- nAS_PDU := ''O,
- iE_Extensions := omit
- };
-
- /* MME -> S1GW */
- item_req.transportLayerAddress := oct2bit(f_inet_addr("1.2.3.4"));
- items_req := ts_S1AP_RABToBeSetupListBearerSUReq(item_req);
- f_ConnHdlr_tx_s1ap_from_mme(ts_S1AP_RABSetupReq(mme_id, enb_id, items_req));
-
- /* S1GW -> eNB */
- item_req.transportLayerAddress := oct2bit(f_inet_addr(mp_s1gw_mme_ip));
- items_req := ts_S1AP_RABToBeSetupListBearerSUReq(item_req);
- f_ConnHdlr_rx_s1ap_from_mme(pdu, tr_S1AP_RABSetupReq(mme_id, enb_id, items_req));
+ teid := f_rnd_octstring(4);
+ f_ConnHdlr_tx_erab_setup_req(erab_id, {teid, "1.2.3.4"});
+ f_ConnHdlr_rx_erab_setup_req(erab_id, {teid, mp_s1gw_mme_ip});


log("eNB -> [S1GW] -> MME: E-RAB SETUP RESPONSE");
- var template (value) E_RABSetupListBearerSURes items_res;
- var E_RABSetupItemBearerSURes item_res := {
- e_RAB_ID := erab_id,
- transportLayerAddress := -,
- gTP_TEID := f_rnd_octstring(4),
- iE_Extensions := omit
- };
-
- /* eNB -> S1GW */
- item_res.transportLayerAddress := oct2bit(f_inet_addr("4.3.2.1"));
- items_res := ts_S1AP_RABSetupListBearerSURes(item_res);
- f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_RABSetupRsp(mme_id, enb_id, items_res));
-
- /* S1GW -> MME */
- item_res.transportLayerAddress := oct2bit(f_inet_addr(mp_s1gw_enb_ip));
- items_res := ts_S1AP_RABSetupListBearerSURes(item_res);
- f_ConnHdlr_rx_s1ap_from_enb(pdu, tr_S1AP_RABSetupRsp(mme_id, enb_id, items_res));
+ teid := f_rnd_octstring(4);
+ f_ConnHdlr_tx_erab_setup_rsp(erab_id, {teid, "4.3.2.1"});
+ f_ConnHdlr_rx_erab_setup_rsp(erab_id, {teid, mp_s1gw_enb_ip});

f_ConnHdlr_s1ap_disconnect();
f_ConnHdlr_s1ap_unregister(g_pars.genb_id);

To view, visit change 38062. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I1bff371da6337ecd7710219d1c86f0fff82ad17f
Gerrit-Change-Number: 38062
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>