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


Change subject: hnbgw: mgcp: Support running CS RAB ConnHdlr concurrently
......................................................................

hnbgw: mgcp: Support running CS RAB ConnHdlr concurrently

Use Mutex to serialize CRCX wildcard endpoint, in order to be able
to properly steer the message to the good ConnHdlr.

Change-Id: Ibd97a37d98abfa746b58db0ea8bb591e7c8dc638
---
M hnbgw/ConnHdlr.ttcn
M hnbgw/HNBGW_Tests.ttcn
2 files changed, 14 insertions(+), 11 deletions(-)



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

diff --git a/hnbgw/ConnHdlr.ttcn b/hnbgw/ConnHdlr.ttcn
index 0d6b9cb..753087f 100644
--- a/hnbgw/ConnHdlr.ttcn
+++ b/hnbgw/ConnHdlr.ttcn
@@ -687,6 +687,15 @@
        var template RAB_SetupOrModifyList rab_sml;
        timer T := 5.0;

+       /* This code block cannot be executed by more than one component at a 
time because the
+        * S1AP RAB Ass Request triggers the IUT to send MGCP CRCX PDU(s), with 
need to be routed
+        * to the respective ConnHdlr component (us). This is why we need to 
ensure that only
+        * one ConnHdlr is triggering PFCP session establishment at the given 
moment of time.
+        */
+       f_Mutex_lock(__BFILE__, __LINE__);
+
+       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
+
        /* Send RAB Assignment Request */
        rab_sml := ts_RAB_SML(t_RAB_id(23), 
f_ts_RAB_TLA(g_pars.mgcp_pars.cn_rtp_ip), 
t_RAB_binding_port(g_pars.mgcp_pars.cn_rtp_port));
        tx := valueof(ts_RANAP_RabAssReq(rab_sml));
@@ -697,11 +706,15 @@
        alt {
        [] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
                log("CRCX1", mgcp_cmd);
+               /* Unregister and unlock the mutex, enabling other components to
+                * establish MGCP sessions after us. */
+               f_Mutex_unlock(__BFILE__, __LINE__);
                var template MgcpResponse mgcp_rsp := 
f_handle_crcx(g_pars.mgcp_pars, mgcp_cmd);
                MGCP.send(valueof(mgcp_rsp));
                }
        [] T.timeout {
-               setverdict(fail, "Timeout waiting for MGCP");
+               /* No need to f_Mutex_unlock since we are exiting anyway... */
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout 
waiting for MGCP");
                }
        }
        T.stop;
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 5258a11..78f0a10 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -1062,8 +1062,6 @@
        var RANAP_PDU tx;
        timer T := 5.0;

-       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
        f_statsd_reset();

        tx := f_build_initial_ue(g_pars);
@@ -1106,8 +1104,6 @@
        var RANAP_PDU tx;
        timer T := 5.0;

-       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
        f_statsd_reset();

        tx := f_build_initial_ue(g_pars);
@@ -1162,8 +1158,6 @@
        var RANAP_PDU tx;
        timer T := 15.0;

-       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
        f_statsd_reset();

        tx := f_build_initial_ue(g_pars);
@@ -1399,8 +1393,6 @@
        var RANAP_PDU tx;
        timer T := 5.0;

-       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
        tx := f_build_initial_ue(g_pars);
        f_iuh2iu_connect(tx);

@@ -2324,8 +2316,6 @@
        var RANAP_PDU tx;
        timer T := 5.0;

-       f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
        tx := f_build_initial_ue(g_pars);
        f_iuh2iu_connect(tx);


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

Reply via email to