<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18876">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: MSC pooling: also test rate counters<br><br>Use new f_counter_* functions to verify osmo-bsc MSC pooling counters.<br>This nicely also verifies the intended effect of each test in detail.<br><br>Depends: I2ded757958dfa62b502efbab765203bcadf899e2 (osmo-bsc)<br>Change-Id: I2006f1def5352b4b73d0159bfcaa2da9c64bfe3f<br>---<br>M bsc/BSC_Tests.ttcn<br>1 file changed, 113 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 9cb15f2..facb001 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -75,6 +75,15 @@</span><br><span>   IPA_Client rsl</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Default list of counters for an 'msc' entity. */</span><br><span style="color: hsl(120, 100%, 40%);">+const CounterNameVals counternames_msc_mscpool := {</span><br><span style="color: hsl(120, 100%, 40%);">+     { "mscpool:subscr:new", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { "mscpool:subscr:known", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { "mscpool:subscr:reattach", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { "mscpool:subscr:attach_lost", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { "mscpool:subscr:paged", 0 }</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type component test_CT extends CTRL_Adapter_CT {</span><br><span>    /* Array of per-BTS state */</span><br><span>         var BTS_State bts[NUM_BTS];</span><br><span>@@ -107,6 +116,7 @@</span><br><span>    /* global test case guard timer (actual timeout value is set in f_init()) */</span><br><span>         timer T_guard := 30.0;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    var CounterNameValsList g_ctr_msc;</span><br><span> }</span><br><span> </span><br><span> modulepar {</span><br><span>@@ -179,6 +189,43 @@</span><br><span>    return pars;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Convenience functions for rate counters using g_ctr_msc. */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ctrs_msc_init(integer mscs_count := NUM_MSC, CounterNameVals counternames := counternames_msc_mscpool) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  g_ctr_msc := f_counter_name_vals_get_n(IPA_CTRL, "msc", mscs_count, counternames);</span><br><span style="color: hsl(120, 100%, 40%);">+  log("initial msc rate counters: ", g_ctr_msc);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ctrs_msc_add(integer msc_nr, charstring countername, integer val := 1) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    g_ctr_msc := f_counter_name_vals_list_add(g_ctr_msc, msc_nr, countername, val);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_thing(on_msc := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_thing(on_msc := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_other(on_msc := 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_ctrs_msc_add(0, "thing", 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_ctrs_msc_add(1, "other");</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_ctrs_msc_verify();</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ctrs_msc_verify() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        log("verifying msc rate counters: ", g_ctr_msc);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_counter_name_vals_expect_n(IPA_CTRL, "msc", g_ctr_msc);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* convenience: f_ctrs_msc_add() and f_ctrs_msc_verify() in one call.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_thing(on_msc := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_thing(on_msc := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_do_thing(on_msc := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ *  f_ctrs_msc_expect(0, "thing", 3);</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ctrs_msc_expect(integer msc_nr, charstring countername, integer val := 1) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_msc_add(msc_nr, countername, val);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ctrs_msc_verify();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_shutdown_helper() runs on test_CT {</span><br><span>        all component.stop;</span><br><span>  setverdict(pass);</span><br><span>@@ -4621,8 +4668,13 @@</span><br><span>   f_sleep(1.0);</span><br><span>        var MSC_ConnHdlr vc_conn;</span><br><span>    var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         vc_conn := f_start_handler(refers(f_tc_mscpool_L3Compl_on_1_msc), pars);</span><br><span>     vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_msc_expect(0, "mscpool:subscr:new", 4);</span><br><span> }</span><br><span> </span><br><span> /* Three Layer 3 Complete by IMSI are round-robin'ed across two connected MSCs */</span><br><span>@@ -4637,12 +4689,15 @@</span><br><span>          * would be randomly affected by which other tests ran before this. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>  pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O));</span><br><span>     vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4650,6 +4705,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));</span><br><span>       vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:new");</span><br><span> </span><br><span>    /* Test round-robin wrap to the first MSC */</span><br><span>         var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4658,6 +4714,7 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))));</span><br><span>   vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> }</span><br><span> </span><br><span> /* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 0</span><br><span>@@ -4673,12 +4730,15 @@</span><br><span>         * would be randomly affected by which other tests ran before this. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>  pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));</span><br><span>  vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:reattach");</span><br><span> </span><br><span>       var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4686,6 +4746,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));</span><br><span>  vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:reattach");</span><br><span> </span><br><span>       /* Test round-robin wrap to the first MSC */</span><br><span>         var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4694,6 +4755,7 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));</span><br><span>  vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:reattach");</span><br><span> }</span><br><span> </span><br><span> /* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 1</span><br><span>@@ -4710,12 +4772,15 @@</span><br><span>    * would be randomly affected by which other tests ran before this. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>  pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));</span><br><span>  vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:reattach");</span><br><span> </span><br><span>       var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4723,6 +4788,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));</span><br><span>  vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:reattach");</span><br><span> </span><br><span>       /* Test round-robin wrap to the first MSC */</span><br><span>         var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4731,6 +4797,7 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));</span><br><span>  vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:reattach");</span><br><span> }</span><br><span> </span><br><span> /* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI not</span><br><span>@@ -4746,6 +4813,8 @@</span><br><span>    * would be randomly affected by which other tests ran before this. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -4753,6 +4822,7 @@</span><br><span>  pars1.mscpool.l3_info := valueof(ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_TMSI_NRI_LV(1023))));</span><br><span>       vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4761,6 +4831,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(768)), '00F110'O));</span><br><span>        vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:new");</span><br><span> </span><br><span>    /* Test round-robin wrap to the first MSC */</span><br><span>         var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4770,6 +4841,7 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_SS_ACT, valueof(ts_MI_TMSI_NRI_LV(819))));</span><br><span>   vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> }</span><br><span> </span><br><span> /* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI</span><br><span>@@ -4785,6 +4857,8 @@</span><br><span>     * would be randomly affected by which other tests ran before this. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -4792,6 +4866,9 @@</span><br><span>  pars1.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(512))));</span><br><span>      vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_add(0, "mscpool:subscr:new");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_verify();</span><br><span> </span><br><span>     var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4800,6 +4877,9 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_TMSI_NRI_LV(767))));</span><br><span>        vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_add(1, "mscpool:subscr:new");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_verify();</span><br><span> </span><br><span>     /* Test round-robin wrap to the first MSC */</span><br><span>         var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4809,6 +4889,9 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(750)), '00F110'O));</span><br><span>        vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_add(0, "mscpool:subscr:new");</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_msc_verify();</span><br><span> }</span><br><span> </span><br><span> /* Three Layer 3 Complete by TMSI with valid NRI for the second MSC are all directed to the second MSC (configured in</span><br><span>@@ -4824,6 +4907,8 @@</span><br><span>        * this is not using round-robin. */</span><br><span>         f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -4831,6 +4916,7 @@</span><br><span>  pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_TMSI_NRI_LV(256))));</span><br><span>   vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:known");</span><br><span> </span><br><span>  var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4839,6 +4925,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(260))));</span><br><span>      vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:known");</span><br><span> </span><br><span>  var MSC_ConnHdlr vc_conn3;</span><br><span>   var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -4847,6 +4934,7 @@</span><br><span>    pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(511)), '00F110'O));</span><br><span>        vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:known");</span><br><span> }</span><br><span> </span><br><span> /* Layer 3 Complete by TMSI with valid NRI for the third MSC are directed to the third MSC (configured in osmo-bsc.cfg),</span><br><span>@@ -4862,6 +4950,8 @@</span><br><span>          * this is not using round-robin. */</span><br><span>         f_vty_transceive(BSCVTY, "mscpool roundrobin next 1");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 2);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -4869,6 +4959,7 @@</span><br><span>  pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_TMSI_NRI_LV(512))));</span><br><span>   vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(2, "mscpool:subscr:known");</span><br><span> </span><br><span>  var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 2);</span><br><span>@@ -4877,6 +4968,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(678))));</span><br><span>      vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(2, "mscpool:subscr:known");</span><br><span> </span><br><span>  /* The above forwardings to third MSC have not affected the round robin, which still points at the second MSC */</span><br><span>     var MSC_ConnHdlr vc_conn3;</span><br><span>@@ -4885,6 +4977,7 @@</span><br><span>   pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000013'H)), '00F110'O));</span><br><span>     vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:new");</span><br><span> }</span><br><span> </span><br><span> /* LU with a TMSI but indicating a different PLMN in its previous LAI: ignore the NRI. */</span><br><span>@@ -4899,6 +4992,8 @@</span><br><span>   * instead, and hits msc 0. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         /* An NRI of the second MSC's range (256-511), but a PLMN that doesn't match with osmo-bsc.cfg */</span><br><span>    var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>@@ -4906,6 +5001,7 @@</span><br><span>    pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(260)), '99F999'O));</span><br><span>        vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    /* An NRI of the third MSC's range (512-767) and a matching PLMN gets directed by NRI. */</span><br><span>        var MSC_ConnHdlr vc_conn2;</span><br><span>@@ -4914,6 +5010,7 @@</span><br><span>   pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(555)), '00F110'O));</span><br><span>        vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(2, "mscpool:subscr:known");</span><br><span> }</span><br><span> </span><br><span> /* Make sure that whichever MSC paged a subscriber will also get the Paging Response. Page by IMSI, which would be</span><br><span>@@ -4954,6 +5051,8 @@</span><br><span>        * second MSC to make sure we're getting the Paging logic, not a coincidental round robin match. */</span><br><span>      f_vty_transceive(BSCVTY, "mscpool roundrobin next 1");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -4961,6 +5060,7 @@</span><br><span>  pars1.sccp_addr_msc := g_bssap[pars1.mscpool.bssap_idx].sccp_addr_own;</span><br><span>       vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_imsi), pars1);</span><br><span>        vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:paged");</span><br><span> }</span><br><span> </span><br><span> /* Make sure that whichever MSC paged a subscriber will also get the Paging Response.  Page by TMSI with an NRI value</span><br><span>@@ -5003,6 +5103,8 @@</span><br><span>     * third MSC to make sure we're getting the Paging logic, not a coincidental round robin match. */</span><br><span>       f_vty_transceive(BSCVTY, "mscpool roundrobin next 2");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>@@ -5010,6 +5112,7 @@</span><br><span>  pars1.sccp_addr_msc := g_bssap[pars1.mscpool.bssap_idx].sccp_addr_own;</span><br><span>       vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_tmsi), pars1);</span><br><span>        vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:paged");</span><br><span> }</span><br><span> </span><br><span> /* For round-robin, skip an MSC that has 'no allow-attach' set. */</span><br><span>@@ -5030,12 +5133,15 @@</span><br><span>     f_vty_transceive(BSCVTY, "exit");</span><br><span>  f_vty_transceive(BSCVTY, "exit");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>    pars1.mscpool.rsl_idx := 0;</span><br><span>  pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O));</span><br><span>     vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 2);</span><br><span>@@ -5043,6 +5149,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));</span><br><span>       vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(2, "mscpool:subscr:new");</span><br><span> </span><br><span>    var MSC_ConnHdlr vc_conn3;</span><br><span>   var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>@@ -5050,6 +5157,7 @@</span><br><span>    pars3.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))));</span><br><span>   vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    f_vty_enter_cfg_msc(BSCVTY, 1);</span><br><span>      f_vty_transceive(BSCVTY, "allow-attach");</span><br><span>@@ -5074,6 +5182,8 @@</span><br><span>  f_vty_transceive(BSCVTY, "exit");</span><br><span>  f_vty_transceive(BSCVTY, "exit");</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_msc_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         /* Round robin points at msc 0, but the valid NRI directs to msc 1, even though msc 1 has 'no allow-attach'. */</span><br><span>      var MSC_ConnHdlr vc_conn1;</span><br><span>   var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 1);</span><br><span>@@ -5082,6 +5192,7 @@</span><br><span>    pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_TMSI_NRI_LV(260))));</span><br><span>  vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);</span><br><span>   vc_conn1.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(1, "mscpool:subscr:known");</span><br><span> </span><br><span>  var MSC_ConnHdlr vc_conn2;</span><br><span>   var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 0);</span><br><span>@@ -5089,6 +5200,7 @@</span><br><span>    pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));</span><br><span>       vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);</span><br><span>   vc_conn2.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(0, "mscpool:subscr:new");</span><br><span> </span><br><span>    var MSC_ConnHdlr vc_conn3;</span><br><span>   var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 2);</span><br><span>@@ -5096,6 +5208,7 @@</span><br><span>    pars3.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000003'H))));</span><br><span>       vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);</span><br><span>   vc_conn3.done;</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_msc_expect(2, "mscpool:subscr:new");</span><br><span> </span><br><span>    f_vty_enter_cfg_msc(BSCVTY, 1);</span><br><span>      f_vty_transceive(BSCVTY, "allow-attach");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18876">change 18876</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18876"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I2006f1def5352b4b73d0159bfcaa2da9c64bfe3f </div>
<div style="display:none"> Gerrit-Change-Number: 18876 </div>
<div style="display:none"> Gerrit-PatchSet: 8 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>