Change in osmo-ttcn3-hacks[master]: bsc: MSC pooling: also test rate counters

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

neels gerrit-no-reply at lists.osmocom.org
Wed Jun 17 03:07:10 UTC 2020


neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18876 )


Change subject: bsc: MSC pooling: also test rate counters
......................................................................

bsc: MSC pooling: also test rate counters

Add some generic ways of checking rate counters in bulk, and use that to verify
the MSC pool rate counters.  This nicely also verifies the intended effect of
each test in detail.

Depends: I2ded757958dfa62b502efbab765203bcadf899e2 (osmo-bsc)
Change-Id: I2006f1def5352b4b73d0159bfcaa2da9c64bfe3f
---
M bsc/BSC_Tests.ttcn
1 file changed, 191 insertions(+), 0 deletions(-)



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

diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 78fc8ec..0980e1f 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -75,6 +75,31 @@
 	IPA_Client rsl
 }
 
+/* One counter value, e.g. { "name", 23 } */
+type record CounterNameVal {
+	charstring name,
+	integer val
+}
+
+/* List of one instance's counters,
+ * e.g. { {"foo",23}, {"bar",42} }
+ */
+type record of CounterNameVal CounterNameVals;
+
+/* List of numerous instances' counters,
+ * e.g. { { {"foo",23}, {"bar",42} },
+ *        { {"foo",23}, {"bar",42} } } */
+type record of CounterNameVals CounterNameValsList;
+
+/* Default list of counters for an 'msc' entity. */
+const CounterNameVals counternames_msc_mscpool := {
+	{ "mscpool:subscr:new", 0 },
+	{ "mscpool:subscr:known", 0 },
+	{ "mscpool:subscr:reattach", 0 },
+	{ "mscpool:subscr:attach_lost", 0 },
+	{ "mscpool:subscr:paged", 0 }
+};
+
 type component test_CT extends CTRL_Adapter_CT {
 	/* Array of per-BTS state */
 	var BTS_State bts[NUM_BTS];
@@ -107,6 +132,7 @@
 	/* global test case guard timer */
 	timer T_guard := 30.0;
 
+	var CounterNameValsList g_ctr_msc;
 }
 
 modulepar {
@@ -179,6 +205,105 @@
 	return pars;
 }
 
+/* Retrieve and verify rate counter values in bulk */
+
+private function f_counter_name_vals_add(CounterNameVals vals, charstring countername, integer val := 1) return CounterNameVals{
+	for (var integer i := 0; i < lengthof(vals); i := i + 1) {
+		if (vals[i].name == countername) {
+			vals[i].val := vals[i].val + val;
+			return vals;
+		}
+	}
+	/* name not found, append */
+	vals[lengthof(vals)] := {
+		name := countername,
+		val := val
+	}
+	return vals;
+}
+
+private function f_counter_name_vals_list_add(CounterNameValsList vals, integer idx, charstring countername, integer val := 1) return CounterNameValsList {
+	vals[idx] := f_counter_name_vals_add(vals[idx], countername, val);
+	return vals;
+}
+
+private function f_counter_name_vals_get(charstring instance_name, integer instance_nr, CounterNameVals counternames := counternames_msc_mscpool) runs on test_CT return CounterNameVals {
+	var CounterNameVals vals;
+	for (var integer i := 0; i < lengthof(counternames); i := i + 1) {
+		vals[i] := {
+			name := counternames[i].name,
+			val := f_ctrl_get_ratectr_abs(IPA_CTRL, instance_name, instance_nr, counternames[i].name)
+		};
+	}
+	return vals;
+}
+
+private function f_counter_name_vals_get_n(charstring instance_name := "msc", integer instance_count := NUM_MSC, CounterNameVals counternames := counternames_msc_mscpool) runs on test_CT return CounterNameValsList {
+	var CounterNameValsList valslist;
+	for (var integer instance_nr := 0; instance_nr < instance_count; instance_nr := instance_nr + 1) {
+		valslist[instance_nr] := f_counter_name_vals_get(instance_name, instance_nr, counternames);
+	}
+	log("retrieved rate counters: ", valslist);
+	return valslist;
+}
+
+private function f_counter_name_vals_expect(charstring instance_name, integer instance_nr, CounterNameVals vals) runs on test_CT {
+	var CounterNameVals now := f_counter_name_vals_get(instance_name, instance_nr, vals);
+	for (var integer i := 0; i < lengthof(vals); i := i + 1) {
+		if (now[i].name != vals[i].name) {
+			setverdict(fail, "Internal error");
+		}
+		if (now[i].val != vals[i].val) {
+			setverdict(fail, "Rate counter mismatch: ", instance_name, " ", instance_nr, " ", vals[i].name, " is at ", now[i].val, " but expected ", vals[i].val);
+		}
+	}
+	setverdict(pass);
+}
+
+private function f_counter_name_vals_expect_n(charstring instance_name, CounterNameValsList valslist) runs on test_CT {
+	for (var integer instance_nr := 0; instance_nr < lengthof(valslist); instance_nr := instance_nr + 1) {
+		f_counter_name_vals_expect(instance_name, instance_nr, valslist[instance_nr]);
+	}
+}
+
+
+/* Convenience functions for rate counters using g_ctr_msc. */
+
+private function f_ctrs_msc_init(integer mscs_count := NUM_MSC, CounterNameVals counternames := counternames_msc_mscpool) runs on test_CT {
+	g_ctr_msc := f_counter_name_vals_get_n("msc", mscs_count, counternames);
+	log("initial msc rate counters: ", g_ctr_msc);
+}
+
+private function f_ctrs_msc_add(integer msc_nr, charstring countername, integer val := 1) runs on test_CT {
+	g_ctr_msc := f_counter_name_vals_list_add(g_ctr_msc, msc_nr, countername, val);
+}
+
+/*  f_ctrs_msc_init();
+ *  f_do_thing(on_msc := 0);
+ *  f_do_thing(on_msc := 0);
+ *  f_do_other(on_msc := 1);
+ *  f_ctrs_msc_add(0, "thing", 2);
+ *  f_ctrs_msc_add(1, "other");
+ *  f_ctrs_msc_verify();
+ */
+private function f_ctrs_msc_verify() runs on test_CT {
+	log("verifying msc rate counters: ", g_ctr_msc);
+	f_counter_name_vals_expect_n("msc", g_ctr_msc);
+}
+
+/* convenience: f_ctrs_msc_add() and f_ctrs_msc_verify() in one call.
+ *  f_ctrs_msc_init();
+ *  f_do_thing(on_msc := 0);
+ *  f_do_thing(on_msc := 0);
+ *  f_do_thing(on_msc := 0);
+ *  f_ctrs_msc_expect(0, "thing", 3);
+ */
+private function f_ctrs_msc_expect(integer msc_nr, charstring countername, integer val := 1) runs on test_CT {
+	f_ctrs_msc_add(msc_nr, countername, val);
+	f_ctrs_msc_verify();
+}
+
+
 private function f_shutdown_helper() runs on test_CT {
 	all component.stop;
 	setverdict(pass);
@@ -4590,8 +4715,13 @@
 	f_sleep(1.0);
 	var MSC_ConnHdlr vc_conn;
 	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+
+	f_ctrs_msc_init();
+
 	vc_conn := f_start_handler(refers(f_tc_mscpool_L3Compl_on_1_msc), pars);
 	vc_conn.done;
+
+	f_ctrs_msc_expect(0, "mscpool:subscr:new", 4);
 }
 
 /* Three Layer 3 Complete by IMSI are round-robin'ed across two connected MSCs */
@@ -4606,12 +4736,15 @@
 	 * would be randomly affected by which other tests ran before this. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
 	pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4619,6 +4752,7 @@
 	pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:new");
 
 	/* Test round-robin wrap to the first MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4627,6 +4761,7 @@
 	pars3.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 }
 
 /* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 0
@@ -4642,12 +4777,15 @@
 	 * would be randomly affected by which other tests ran before this. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
 	pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4655,6 +4793,7 @@
 	pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:reattach");
 
 	/* Test round-robin wrap to the first MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4663,6 +4802,7 @@
 	pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(0)), '00F110'O));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
 }
 
 /* Three LU by TMSI are round-robin'ed across two connected MSCs, because they contain the NULL-NRI 1
@@ -4679,12 +4819,15 @@
 	 * would be randomly affected by which other tests ran before this. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
 	pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4692,6 +4835,7 @@
 	pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:reattach");
 
 	/* Test round-robin wrap to the first MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4700,6 +4844,7 @@
 	pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(1)), '00F110'O));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:reattach");
 }
 
 /* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI not
@@ -4715,6 +4860,8 @@
 	 * would be randomly affected by which other tests ran before this. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
@@ -4722,6 +4869,7 @@
 	pars1.mscpool.l3_info := valueof(ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_TMSI_NRI_LV(1023))));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4730,6 +4878,7 @@
 	pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(768)), '00F110'O));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:new");
 
 	/* Test round-robin wrap to the first MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4739,6 +4888,7 @@
 	pars3.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_SS_ACT, valueof(ts_MI_TMSI_NRI_LV(819))));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 }
 
 /* Three Layer 3 Complete by TMSI are round-robin'ed across two connected MSCs, because they contain an NRI
@@ -4754,6 +4904,8 @@
 	 * would be randomly affected by which other tests ran before this. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
@@ -4761,6 +4913,9 @@
 	pars1.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(512))));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");
+	f_ctrs_msc_add(0, "mscpool:subscr:new");
+	f_ctrs_msc_verify();
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4769,6 +4924,9 @@
 	pars2.mscpool.l3_info := valueof(ts_ML3_MO_MM_IMSI_DET_Ind(valueof(ts_MI_TMSI_NRI_LV(767))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");
+	f_ctrs_msc_add(1, "mscpool:subscr:new");
+	f_ctrs_msc_verify();
 
 	/* Test round-robin wrap to the first MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4778,6 +4936,9 @@
 	pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(750)), '00F110'O));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_add(2, "mscpool:subscr:attach_lost");
+	f_ctrs_msc_add(0, "mscpool:subscr:new");
+	f_ctrs_msc_verify();
 }
 
 /* Three Layer 3 Complete by TMSI with valid NRI for the second MSC are all directed to the second MSC (configured in
@@ -4793,6 +4954,8 @@
 	 * this is not using round-robin. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 1);
 	pars1.mscpool.rsl_idx := 0;
@@ -4800,6 +4963,7 @@
 	pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_TMSI_NRI_LV(256))));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:known");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4808,6 +4972,7 @@
 	pars2.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(260))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:known");
 
 	var MSC_ConnHdlr vc_conn3;
 	var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -4816,6 +4981,7 @@
 	pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(511)), '00F110'O));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:known");
 }
 
 /* Layer 3 Complete by TMSI with valid NRI for the third MSC are directed to the third MSC (configured in osmo-bsc.cfg),
@@ -4831,6 +4997,8 @@
 	 * this is not using round-robin. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 1");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 2);
 	pars1.mscpool.rsl_idx := 0;
@@ -4838,6 +5006,7 @@
 	pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, valueof(ts_MI_TMSI_NRI_LV(512))));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(2, "mscpool:subscr:known");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 2);
@@ -4846,6 +5015,7 @@
 	pars2.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_TMSI_NRI_LV(678))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(2, "mscpool:subscr:known");
 
 	/* The above forwardings to third MSC have not affected the round robin, which still points at the second MSC */
 	var MSC_ConnHdlr vc_conn3;
@@ -4854,6 +5024,7 @@
 	pars3.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000013'H)), '00F110'O));
 	vc_conn3 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars3);
 	vc_conn3.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:new");
 }
 
 /* LU with a TMSI but indicating a different PLMN in its previous LAI: ignore the NRI. */
@@ -4868,6 +5039,8 @@
 	 * instead, and hits msc 0. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 0");
 
+	f_ctrs_msc_init();
+
 	/* An NRI of the second MSC's range (256-511), but a PLMN that doesn't match with osmo-bsc.cfg */
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
@@ -4875,6 +5048,7 @@
 	pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(260)), '99F999'O));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 
 	/* An NRI of the third MSC's range (512-767) and a matching PLMN gets directed by NRI. */
 	var MSC_ConnHdlr vc_conn2;
@@ -4883,6 +5057,7 @@
 	pars2.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_TMSI_NRI_LV(555)), '00F110'O));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(2, "mscpool:subscr:known");
 }
 
 /* Make sure that whichever MSC paged a subscriber will also get the Paging Response. Page by IMSI, which would be
@@ -4923,6 +5098,8 @@
 	 * second MSC to make sure we're getting the Paging logic, not a coincidental round robin match. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 1");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
@@ -4930,6 +5107,7 @@
 	pars1.mscpool.sccp_addr_msc := g_bssap[pars1.mscpool.bssap_idx].sccp_addr_own;
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_imsi), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:paged");
 }
 
 /* Make sure that whichever MSC paged a subscriber will also get the Paging Response.  Page by TMSI with an NRI value
@@ -4972,6 +5150,8 @@
 	 * third MSC to make sure we're getting the Paging logic, not a coincidental round robin match. */
 	f_vty_transceive(BSCVTY, "mscpool roundrobin next 2");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
@@ -4979,6 +5159,7 @@
 	pars1.mscpool.sccp_addr_msc := g_bssap[pars1.mscpool.bssap_idx].sccp_addr_own;
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_paging_tmsi), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:paged");
 }
 
 /* For round-robin, skip an MSC that has 'no allow-attach' set. */
@@ -4999,12 +5180,15 @@
 	f_vty_transceive(BSCVTY, "exit");
 	f_vty_transceive(BSCVTY, "exit");
 
+	f_ctrs_msc_init();
+
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 0);
 	pars1.mscpool.rsl_idx := 0;
 	pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010000000001'H)), '00F110'O));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 2);
@@ -5012,6 +5196,7 @@
 	pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(2, "mscpool:subscr:new");
 
 	var MSC_ConnHdlr vc_conn3;
 	var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 0);
@@ -5019,6 +5204,7 @@
 	pars3.mscpool.l3_info := valueof(ts_PAG_RESP(valueof(ts_MI_IMSI_LV('001010000000003'H))));
 	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");
@@ -5043,6 +5229,8 @@
 	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'. */
 	var MSC_ConnHdlr vc_conn1;
 	var TestHdlrParams pars1 := f_gen_test_hdlr_pars(bssap_idx := 1);
@@ -5051,6 +5239,7 @@
 	pars1.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_TMSI_NRI_LV(260))));
 	vc_conn1 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars1);
 	vc_conn1.done;
+	f_ctrs_msc_expect(1, "mscpool:subscr:known");
 
 	var MSC_ConnHdlr vc_conn2;
 	var TestHdlrParams pars2 := f_gen_test_hdlr_pars(bssap_idx := 0);
@@ -5058,6 +5247,7 @@
 	pars2.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000002'H))));
 	vc_conn2 := f_start_handler(refers(f_tc_mscpool_compl_l3), pars2);
 	vc_conn2.done;
+	f_ctrs_msc_expect(0, "mscpool:subscr:new");
 
 	var MSC_ConnHdlr vc_conn3;
 	var TestHdlrParams pars3 := f_gen_test_hdlr_pars(bssap_idx := 2);
@@ -5065,6 +5255,7 @@
 	pars3.mscpool.l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, valueof(ts_MI_IMSI_LV('001010000000003'H))));
 	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");

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18876
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: I2006f1def5352b4b73d0159bfcaa2da9c64bfe3f
Gerrit-Change-Number: 18876
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200617/bb758e8a/attachment.htm>


More information about the gerrit-log mailing list