fixeria submitted this change.

View Change


Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved pespin: Looks good to me, but someone else must approve
s1gw: add TC_e_rab_setup

Change-Id: I94eb8cac4b5659c0f6f1bb248a80692b8cf84b6f
Related: SYS#6772
---
M s1gw/S1GW_Tests.ttcn
M s1gw/expected-results.xml
2 files changed, 148 insertions(+), 5 deletions(-)

diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index c7c55ef..0fb3075 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -155,6 +155,63 @@
S1AP_ENB.receive(PortEvent:{connClosed := ?});
}

+function f_ConnHdlr_tx_s1ap_from_enb(template (value) S1AP_PDU pdu)
+runs on ConnHdlr {
+ S1AP_ENB.send(t_S1AP_Send(g_s1ap_conn_id, pdu));
+}
+
+function f_ConnHdlr_tx_s1ap_from_mme(template (value) S1AP_PDU pdu)
+runs on ConnHdlr {
+ S1AP_CONN.send(pdu);
+}
+
+function f_ConnHdlr_rx_s1ap_from_enb(out S1AP_PDU pdu,
+ template (present) S1AP_PDU tr_pdu := ?,
+ float Tval := 0.5)
+runs on ConnHdlr {
+ timer T := Tval;
+
+ T.start;
+ alt {
+ [] S1AP_CONN.receive(tr_pdu) -> value pdu {
+ setverdict(pass);
+ T.stop;
+ }
+ [] S1AP_CONN.receive(S1AP_PDU:?) -> value pdu {
+ setverdict(fail, "Rx unexpected S1AP PDU from eNB: ", pdu);
+ T.stop;
+ }
+ [] T.timeout {
+ setverdict(fail, "Timeout waiting for S1AP PDU from eNB: ", tr_pdu);
+ }
+ }
+}
+
+function f_ConnHdlr_rx_s1ap_from_mme(out S1AP_PDU pdu,
+ template (present) S1AP_PDU tr_pdu := ?,
+ float Tval := 0.5)
+runs on ConnHdlr {
+ var S1AP_RecvFrom recv;
+ timer T := Tval;
+
+ T.start;
+ alt {
+ [] S1AP_ENB.receive(t_S1AP_RecvFrom(tr_pdu)) -> value recv {
+ pdu := recv.msg;
+ setverdict(pass);
+ T.stop;
+ }
+ [] S1AP_ENB.receive(t_S1AP_RecvFrom(?)) -> value recv {
+ pdu := recv.msg;
+ setverdict(fail, "Rx unexpected S1AP PDU from MME: ", pdu);
+ T.stop;
+ }
+ [] T.timeout {
+ setverdict(fail, "Timeout waiting for S1AP PDU from MME: ", tr_pdu);
+ }
+ }
+}
+
function f_ConnHdlr_setup(Global_ENB_ID genb_id) runs on ConnHdlr {
var S1AP_PDU pdu;
timer T;
@@ -167,10 +224,9 @@
}
};

- S1AP_ENB.send(t_S1AP_Send(g_s1ap_conn_id,
- ts_S1AP_SetupReq(genb_id,
- supported_tas_dummy,
- v32)));
+ f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_SetupReq(genb_id,
+ supported_tas_dummy,
+ v32));
T.start(1.0);
alt {
[] S1AP_CONN.receive(S1APSRV_Event:S1APSRV_EVENT_CONN_UP) { repeat; }
@@ -274,11 +330,87 @@
vc_conn.done;
}

+function f_TC_e_rab_setup(ConnHdlrPars pars) runs on ConnHdlr {
+ const integer mme_id := 7;
+ const integer enb_id := 9;
+ const integer erab_id := 6;
+ var S1AP_PDU pdu;
+
+ f_ConnHdlr_register(pars.genb_id);
+ f_ConnHdlr_connect();
+ f_ConnHdlr_setup(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
+ };
+
+ /* eNB -> S1GW */
+ item_req.transportLayerAddress := oct2bit(f_inet_addr("1.2.3.4"));
+ items_req := ts_S1AP_RABToBeSetupListBearerSUReq(item_req);
+ f_ConnHdlr_tx_s1ap_from_enb(ts_S1AP_RABSetupReq(mme_id, enb_id, items_req));
+
+ /* S1GW -> MME */
+ item_req.transportLayerAddress := oct2bit(f_inet_addr(mp_s1gw_mme_ip));
+ items_req := ts_S1AP_RABToBeSetupListBearerSUReq(item_req);
+ f_ConnHdlr_rx_s1ap_from_enb(pdu, tr_S1AP_RABSetupReq(mme_id, enb_id, items_req));
+
+
+ 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
+ };
+
+ /* MME -> S1GW */
+ item_res.transportLayerAddress := oct2bit(f_inet_addr("4.3.2.1"));
+ items_res := ts_S1AP_RABSetupListBearerSURes(item_res);
+ f_ConnHdlr_tx_s1ap_from_mme(ts_S1AP_RABSetupRsp(mme_id, enb_id, items_res));
+
+ /* S1GW -> eNB */
+ item_res.transportLayerAddress := oct2bit(f_inet_addr(mp_s1gw_enb_ip));
+ items_res := ts_S1AP_RABSetupListBearerSURes(item_res);
+ f_ConnHdlr_rx_s1ap_from_mme(pdu, tr_S1AP_RABSetupRsp(mme_id, enb_id, items_res));
+
+ f_ConnHdlr_disconnect();
+ f_ConnHdlr_unregister(pars.genb_id);
+}
+testcase TC_e_rab_setup() runs on test_CT {
+ var ConnHdlrPars pars := valueof(t_ConnHdlrPars);
+ var ConnHdlr vc_conn;
+
+ f_init();
+ f_init_s1ap_srv();
+
+ vc_conn := f_ConnHdlr_spawn(refers(f_TC_e_rab_setup), pars);
+ vc_conn.done;
+}
+
control {
execute( TC_setup() );
execute( TC_setup_multi() );
execute( TC_conn_term_by_mme() );
execute( TC_conn_term_mme_unavail() );
+ execute( TC_e_rab_setup() );
}

}
diff --git a/s1gw/expected-results.xml b/s1gw/expected-results.xml
index b10fd4a..ed75300 100644
--- a/s1gw/expected-results.xml
+++ b/s1gw/expected-results.xml
@@ -1,7 +1,8 @@
<?xml version="1.0"?>
-<testsuite name='S1GW_Tests' tests='4' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'>
+<testsuite name='S1GW_Tests' tests='5' 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'/>
<testcase classname='S1GW_Tests' name='TC_conn_term_mme_unavail' time='MASKED'/>
+ <testcase classname='S1GW_Tests' name='TC_e_rab_setup' time='MASKED'/>
</testsuite>

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

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I94eb8cac4b5659c0f6f1bb248a80692b8cf84b6f
Gerrit-Change-Number: 37245
Gerrit-PatchSet: 5
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged