fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37245?usp=email )

Change subject: s1gw: add TC_e_rab_setup
......................................................................

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(-)

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




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 https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37245?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I94eb8cac4b5659c0f6f1bb248a80692b8cf84b6f
Gerrit-Change-Number: 37245
Gerrit-PatchSet: 5
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to