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

Change subject: msc: ASCI: Fix race condition in TC_assign_fail
......................................................................

msc: ASCI: Fix race condition in TC_assign_fail

The f_sleep(0.5) to delay the registration of the PC for the 2nd SCCP
connection sometimes fired too late and we received the VGCS/VBS
Assignment Request before the channel ConnHdlr was registered in
RAN_Emulation.
Then in turn we need to delay call establishment until the channel is
ready.
Implement proper synchronization points to make sure the order of
registers is accomplished while making sure the 2 ConnHdlrs are
registered before they need it.

Change-Id: Id80982b6b968bbe462aeac2b9be646ab50eace83
---
M msc/MSC_Tests_ASCI.ttcn
1 file changed, 22 insertions(+), 3 deletions(-)

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




diff --git a/msc/MSC_Tests_ASCI.ttcn b/msc/MSC_Tests_ASCI.ttcn
index 135edb1..9abcc28 100644
--- a/msc/MSC_Tests_ASCI.ttcn
+++ b/msc/MSC_Tests_ASCI.ttcn
@@ -76,6 +76,8 @@
 const charstring COORD_BCC_TERMINATION_FAIL := "BCC_TERMINATION_FAIL";
 const charstring COORD_ASSIGNMENT := "ASSIGNMENT";
 const charstring COORD_CLEAR := "CLEAR";
+const charstring N_CONNECT_PC_REGISTERED := "N_CONNECT_PC_REGISTERED"
+const charstring N_CALL_ESTABLISH := "N_CALL_ESTABLISH"

 template (value) DescriptiveGroupOrBroadcastCallReference_V
                         ts_BSSMAP_IE_GroupCallRef(integer cr,
@@ -143,6 +145,9 @@
        var default mdcx := 
activate(as_optional_mgcp_mdcx(cpars.mgw_conn_2.mgw_rtp_ip, 
cpars.mgw_conn_2.mgw_rtp_port));
        var default dlcx := activate(as_optional_mgcp_dlcx(cpars));

+       /* Wait for other components to be prepared for the call: */
+       COORD.receive(N_CALL_ESTABLISH);
+
        /* Establish connection using the service type, defined by the test. */
        if (test == COORD_TEST_COMPLETE_VBS) {
                f_establish_fully(EST_TYPE_VBS);
@@ -255,6 +260,7 @@
        f_init_handler(pars);

        f_create_bssmap_exp_n_connect(193);
+       COORD.send(N_CONNECT_PC_REGISTERED);

        timer T := 7.0;
        T.start;
@@ -388,9 +394,12 @@

        f_init_handler(pars);

-       /* Wait some time before registering, because this has to be the second 
connection to be registered. */
-       f_sleep(0.5);
+       /* Wait for "control" to register first (VGCS/VBS Setup), because this 
has to be the second connection to be
+        * registered (VGCS/VBS Assignment Request). */
+       COORD.receive(N_CONNECT_PC_REGISTERED);
        f_create_bssmap_exp_n_connect(193);
+       /* informwe applied the expect and we are ready: */
+       COORD.send(N_CONNECT_PC_REGISTERED);

        timer T := 7.0;
        T.start;
@@ -464,9 +473,19 @@
        connect(self:COORD_control, vc_conn_control:COORD);
        connect(self:COORD_channel, vc_conn_channel:COORD);

+       COORD_channel.send(test);
        COORD_call.send(test);
        COORD_control.send(test);
-       COORD_channel.send(test);
+
+       /* We need to make sure control resgisters first to receive the first 
SCCP connection (VGCS/VBS Setup)
+        * and channel later to receive the follow-up (VGCS/VBS Assignment 
Request) */
+       COORD_control.receive(N_CONNECT_PC_REGISTERED);
+       COORD_channel.send(N_CONNECT_PC_REGISTERED);
+       /* channel confirms it is also applied on its side: */
+       COORD_channel.receive(N_CONNECT_PC_REGISTERED);
+
+       /* Inform we we can start the call: */
+       COORD_call.send(N_CALL_ESTABLISH);

        /* Receive the test events until all three connections are released or 
not established. */
        timer T := 7.0, Texit := 0.5;

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42577?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

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

Reply via email to