laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19554 )

Change subject: fix mscpool cleanup (fixes LCLS tests)
......................................................................

fix mscpool cleanup (fixes LCLS tests)

osmo-bsc takes a while to notice that a connected MSC is no longer connected.
Once the mscpool tests have run, the additional msc 1 and msc 2 still linger
around even though the BSSMAP link is no longer served by the bsc-tester.

The easiest way to ensure that only expected MSCs are contacted is to set
'no allow-attach' for each MSC that should not be in use.

So, the default setup is 'allow-attach' on msc 0, and 'no allow-attach' on mscs
1 and 2. In f_init(), allow attach on those MSCs indicated by the nr_msc
amount. The entire vty transaction to configure attach/no attach for all three
MSCs takes about 4 micro seconds in my test setup, so it is fine to do this
during f_init() for each BSC test.

After this, tests running after the MSC pooling tests (the LCLS tests) no
longer round-robin their subscribers across disconnected MSCs.

NOTE: it would be good to somehow detect more reliably in osmo-bsc that an MSC
is gone and not use it anymore. That is however not so trivial. To get the LCLS
tests back online, this is a workaround to avoid that complexity for now.

Change-Id: I02ad58ed7d0d0aac61e393b415e09c6c5c8a70ca
---
M bsc/BSC_Tests.ttcn
1 file changed, 28 insertions(+), 22 deletions(-)

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



diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 5bd0e4f..1040a31 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -832,6 +832,24 @@
                }
 }

+/* TODO: use BooleanList from COMMON/src/General_Types.ttcn */
+private type record of boolean my_BooleanList;
+
+private function f_vty_msc_allow_attach(TELNETasp_PT pt, my_BooleanList 
allow_attach_list)
+{
+       for (var integer msc_nr := 0; msc_nr < sizeof(allow_attach_list); 
msc_nr := msc_nr+1) {
+               f_vty_enter_cfg_msc(pt, msc_nr);
+               if (allow_attach_list[msc_nr]) {
+                       /* strict := false: ignore if osmo-bsc does not support 
this config option (latest build) */
+                       f_vty_transceive(pt, "allow-attach", strict := false);
+               } else {
+                       f_vty_transceive(pt, "no allow-attach", strict := 
false);
+               }
+               f_vty_transceive(pt, "exit");
+               f_vty_transceive(pt, "exit");
+       }
+}
+
 /* global initialization function
  * \param nr_bts Number of BTSs we should start/bring up
  * \param handler_mode Start an RSL_Emulation_CT component (true) or not 
(false).
@@ -854,7 +872,9 @@
                f_vty_allow_osmux(allow_osmux);
        }

+       var my_BooleanList allow_attach := { false, false, false };
        for (bssap_idx := 0; bssap_idx < nr_msc; bssap_idx := bssap_idx+1) {
+               allow_attach[bssap_idx] := true;
                /* Call a function of our 'parent component' RAN_Adapter_CT to 
start the
                 * MSC-side BSSAP emulation */
                if (handler_mode) {
@@ -871,6 +891,9 @@
                }
        }
 
+       /* start the test with exactly all enabled MSCs allowed to attach */
+       f_vty_msc_allow_attach(BSCVTY, allow_attach);
+
        f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port);

        f_init_mgcp("VirtMSC");
@@ -5850,17 +5873,13 @@

        f_init(nr_bts := 3, handler_mode := true, nr_msc := 3);
        f_sleep(1.0);
+       /* Mark the second MSC as offloading, round-robin should skip this MSC 
now. */
+       f_vty_msc_allow_attach(BSCVTY, {true, false, true});

        /* Control which MSC gets chosen next by the round-robin, otherwise
         * would be randomly affected by which other tests ran before this. */
        f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");

-       /* Mark the second MSC as offloading, round-robin should skip this MSC 
now. */
-       f_vty_enter_cfg_msc(BSCVTY, 1);
-       f_vty_transceive(BSCVTY, "no allow-attach");
-       f_vty_transceive(BSCVTY, "exit");
-       f_vty_transceive(BSCVTY, "exit");
-
        f_ctrs_msc_init();

        var MSC_ConnHdlr vc_conn1;
@@ -5886,11 +5905,6 @@
        vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
        vc_conn3.done;
        f_ctrs_msc_expect(0, "mscpool:subscr:new");
-
-       f_vty_enter_cfg_msc(BSCVTY, 1);
-       f_vty_transceive(BSCVTY, "allow-attach");
-       f_vty_transceive(BSCVTY, "exit");
-       f_vty_transceive(BSCVTY, "exit");
 }

 /* An MSC that has 'no allow-attach' set should still serve subscribers that 
are already attached according to their
@@ -5900,16 +5914,13 @@
        f_init(nr_bts := 3, handler_mode := true, nr_msc := 3);
        f_sleep(1.0);

+       /* Mark the second MSC as offloading, round-robin should skip this MSC 
now. */
+       f_vty_msc_allow_attach(BSCVTY, {true, false, true});
+
        /* Control which MSC gets chosen next by the round-robin, otherwise
         * would be randomly affected by which other tests ran before this. */
        f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");

-       /* Mark the second MSC as offloading, round-robin should skip this MSC 
now. */
-       f_vty_enter_cfg_msc(BSCVTY, 1);
-       f_vty_transceive(BSCVTY, "no allow-attach");
-       f_vty_transceive(BSCVTY, "exit");
-       f_vty_transceive(BSCVTY, "exit");
-
        f_ctrs_msc_init();

        /* Round robin points at msc 0, but the valid NRI directs to msc 1, 
even though msc 1 has 'no allow-attach'. */
@@ -5937,11 +5948,6 @@
        vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
        vc_conn3.done;
        f_ctrs_msc_expect(2, "mscpool:subscr:new");
-
-       f_vty_enter_cfg_msc(BSCVTY, 1);
-       f_vty_transceive(BSCVTY, "allow-attach");
-       f_vty_transceive(BSCVTY, "exit");
-       f_vty_transceive(BSCVTY, "exit");
 }

 /* Dyn PDCH todo:

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19554
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: I02ad58ed7d0d0aac61e393b415e09c6c5c8a70ca
Gerrit-Change-Number: 19554
Gerrit-PatchSet: 3
Gerrit-Owner: neels <nhofm...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: neels <nhofm...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to