fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41169?usp=email )


Change subject: s1gw: track eNB connection, fail immediately on loss
......................................................................

s1gw: track eNB connection, fail immediately on loss

Change-Id: I34a3d30270f1236908643b60fc8abe590a780b89
---
M s1gw/S1GW_ConnHdlr.ttcn
M s1gw/S1GW_Tests.ttcn
2 files changed, 29 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/69/41169/1

diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn
index 4e47544..94c6d78 100644
--- a/s1gw/S1GW_ConnHdlr.ttcn
+++ b/s1gw/S1GW_ConnHdlr.ttcn
@@ -45,6 +45,7 @@
        var ConnHdlrPars g_pars;
        port S1AP_CODEC_PT S1AP_ENB;
        var ConnectionId g_s1ap_conn_id := -1;
+       var default conn_track := null;
 };
 type record of ConnHdlr ConnHdlrList;

@@ -92,6 +93,25 @@
        fn.apply(id);
 }

+/* track eNB connection loss events */
+private altstep as_conn_track() runs on ConnHdlr {
+       [] S1AP_CONN.receive(S1APSRV_Event:S1APSRV_EVENT_CONN_DOWN) {
+               setverdict(fail, "eNB disconnected unexpectedly");
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+       }
+}
+
+function f_ConnHdlr_conn_track_enable() runs on ConnHdlr {
+       if (conn_track == null) {
+               conn_track := activate(as_conn_track());
+       }
+}
+
+function f_ConnHdlr_conn_track_disable() runs on ConnHdlr {
+       if (conn_track != null) {
+               deactivate(conn_track);
+       }
+}

 function f_ConnHdlr_s1ap_connect(charstring local_addr, charstring 
remote_addr) runs on ConnHdlr {
        var Result res;
@@ -110,6 +130,9 @@
        }
        g_s1ap_conn_id := res.connId;

+       /* start tracking eNB connection */
+       f_ConnHdlr_conn_track_enable();
+
        /* wait for the establishment confirmation */
        T.start(2.0);
        alt {
@@ -127,6 +150,9 @@
 function f_ConnHdlr_s1ap_disconnect() runs on ConnHdlr {
        var Result res;

+       /* stop tracking eNB connection (teardown expected) */
+       f_ConnHdlr_conn_track_disable();
+
        S1AP_CodecPort_CtrlFunct.f_IPL4_close(S1AP_ENB, g_s1ap_conn_id,
                                              { sctp := c_SctpTuple_S1AP });
        g_s1ap_conn_id := -1;
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index 296c234..501f1be 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -343,6 +343,9 @@
        f_ConnHdlr_s1ap_setup(g_pars.genb_id);
        f_sleep(0.5); /* keep the connection idle for some time */

+       /* stop tracking eNB connection (teardown expected) */
+       f_ConnHdlr_conn_track_disable();
+
        /* MME (S1AP_Server_CT) terminates connection */
        f_ConnHdlr_s1ap_close_conn(g_pars.genb_id);
        /* expect our eNB connection to be released gracefully */

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41169?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: I34a3d30270f1236908643b60fc8abe590a780b89
Gerrit-Change-Number: 41169
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>

Reply via email to