Change in osmo-ttcn3-hacks[master]: bsc: verify handover 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
Sun Aug 30 00:22:59 UTC 2020


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


Change subject: bsc: verify handover rate counters
......................................................................

bsc: verify handover rate counters

This will break the 'latest' builds for most handover tests until
Ib0087b6566ae4d82f8c3ef272c1256bcd1d08bf1 is released.

Depends: Ib0087b6566ae4d82f8c3ef272c1256bcd1d08bf1 (osmo-bsc)
Change-Id: I10bc0b67ca8dcf41dbb02332ed18017e819c2b32
---
M bsc/BSC_Tests.ttcn
1 file changed, 406 insertions(+), 43 deletions(-)



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

diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index dce9ae9..4560957 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -93,6 +93,56 @@
 	{ "mscpool:subscr:paged", 0 }
 };
 
+/* Default list of counters for 'bsc' and 'bts' entities. */
+const CounterNameVals counternames_bsc_bts_handover := {
+	{ "assignment:attempted", 0 },
+	{ "assignment:completed", 0 },
+	{ "assignment:stopped", 0 },
+	{ "assignment:no_channel", 0 },
+	{ "assignment:timeout", 0 },
+	{ "assignment:failed", 0 },
+	{ "assignment:error", 0 },
+
+	{ "handover:attempted", 0 },
+	{ "handover:completed", 0 },
+	{ "handover:stopped", 0 },
+	{ "handover:no_channel", 0 },
+	{ "handover:timeout", 0 },
+	{ "handover:failed", 0 },
+	{ "handover:error", 0 },
+
+	{ "intra_cell_ho:attempted", 0 },
+	{ "intra_cell_ho:completed", 0 },
+	{ "intra_cell_ho:stopped", 0 },
+	{ "intra_cell_ho:no_channel", 0 },
+	{ "intra_cell_ho:timeout", 0 },
+	{ "intra_cell_ho:failed", 0 },
+	{ "intra_cell_ho:error", 0 },
+
+	{ "intra_bsc_ho:attempted", 0 },
+	{ "intra_bsc_ho:completed", 0 },
+	{ "intra_bsc_ho:stopped", 0 },
+	{ "intra_bsc_ho:no_channel", 0 },
+	{ "intra_bsc_ho:timeout", 0 },
+	{ "intra_bsc_ho:failed", 0 },
+	{ "intra_bsc_ho:error", 0 },
+
+	{ "interbsc_ho_out:attempted", 0 },
+	{ "interbsc_ho_out:completed", 0 },
+	{ "interbsc_ho_out:stopped", 0 },
+	{ "interbsc_ho_out:timeout", 0 },
+	{ "interbsc_ho_out:failed", 0 },
+	{ "interbsc_ho_out:error", 0 },
+
+	{ "interbsc_ho_in:attempted", 0 },
+	{ "interbsc_ho_in:completed", 0 },
+	{ "interbsc_ho_in:stopped", 0 },
+	{ "interbsc_ho_in:no_channel", 0 },
+	{ "interbsc_ho_in:timeout", 0 },
+	{ "interbsc_ho_in:failed", 0 },
+	{ "interbsc_ho_in:error", 0 }
+};
+
 /* Set of all System Information received during one RSL port's startup.
  * Note that some System Information may be sent on RSL, but lacking actual SI data, to indicate that the BTS should not
  * broadcast that SI type. That will be reflected as 'omit' here.
@@ -498,6 +548,8 @@
 	timer T_guard := 30.0;
 
 	var CounterNameValsList g_ctr_msc;
+	var CounterNameValsList g_ctr_bsc;
+	var CounterNameValsList g_ctr_bts;
 
 	/* System Information bytes as received during RSL startup, for each RSL[idx]. */
 	var SystemInformationConfig_list g_system_information := {};
@@ -611,6 +663,78 @@
 	f_ctrs_msc_verify();
 }
 
+/* Convenience functions for rate counters using g_ctr_bts, always also including g_ctr_bsc. */
+
+private function f_ctrs_bsc_and_bts_init(integer bts_count := NUM_BTS, CounterNameVals counternames := counternames_bsc_bts_handover) runs on test_CT {
+	g_ctr_bts := f_counter_name_vals_get_n(IPA_CTRL, "bts", bts_count, counternames);
+	log("initial bts rate counters: ", g_ctr_bts);
+	f_ctrs_bsc_init(counternames);
+}
+
+private function f_ctrs_bsc_and_bts_add(integer bts_nr, charstring countername, integer val := 1) runs on test_CT {
+	f_counter_name_vals_list_add(g_ctr_bts, bts_nr, countername, val);
+	f_ctrs_bsc_add(countername, val);
+}
+
+/*  f_ctrs_bsc_and_bts_init();
+ *  f_do_thing(on_bts := 0);
+ *  f_do_thing(on_bts := 0);
+ *  f_do_other(on_bts := 1);
+ *  f_ctrs_bsc_and_bts_add(0, "thing", 2);
+ *  f_ctrs_bsc_and_bts_add(1, "other");
+ *  f_ctrs_bsc_and_bts_verify();
+ */
+private function f_ctrs_bsc_and_bts_verify() runs on test_CT {
+	f_counter_name_vals_expect_n(IPA_CTRL, "bts", g_ctr_bts);
+	f_ctrs_bsc_verify();
+}
+
+/* convenience: f_ctrs_bsc_and_bts_add() and f_ctrs_bsc_and_bts_verify() in one call.
+ *  f_ctrs_bsc_and_bts_init();
+ *  f_do_thing(on_bts := 0);
+ *  f_do_thing(on_bts := 0);
+ *  f_do_thing(on_bts := 0);
+ *  f_ctrs_bsc_and_bts_expect(0, "thing", 3);
+ */
+private function f_ctrs_bsc_and_bts_expect(integer bts_nr, charstring countername, integer val := 1) runs on test_CT {
+	f_ctrs_bsc_and_bts_add(bts_nr, countername, val);
+	f_ctrs_bsc_and_bts_verify();
+}
+
+
+/* Convenience functions for rate counters using g_ctr_bsc. */
+
+private function f_ctrs_bsc_init(CounterNameVals counternames := counternames_bsc_bts_handover) runs on test_CT {
+	g_ctr_bsc := f_counter_name_vals_get_n(IPA_CTRL, "bsc", 1, counternames);
+	log("initial bsc rate counters: ", g_ctr_bsc);
+}
+
+private function f_ctrs_bsc_add(charstring countername, integer val := 1) runs on test_CT {
+	f_counter_name_vals_list_add(g_ctr_bsc, 0, countername, val);
+}
+
+/*  f_ctrs_bsc_init();
+ *  f_do_thing();
+ *  f_do_thing();
+ *  f_do_other();
+ *  f_ctrs_bsc_add("thing", 2);
+ *  f_ctrs_bsc_add("other");
+ *  f_ctrs_bsc_verify();
+ */
+private function f_ctrs_bsc_verify() runs on test_CT {
+	f_counter_name_vals_expect_n(IPA_CTRL, "bsc", g_ctr_bsc);
+}
+
+/* convenience: f_ctrs_bsc_add() and f_ctrs_bsc_verify() in one call.
+ *  f_ctrs_bsc_init();
+ *  f_do_thing();
+ *  f_ctrs_bsc_expect("thing", 1);
+ */
+private function f_ctrs_bsc_expect(charstring countername, integer val := 1) runs on test_CT {
+	f_ctrs_bsc_add(countername, val);
+	f_ctrs_bsc_verify();
+}
+
 
 private function f_shutdown_helper() runs on test_CT {
 	all component.stop;
@@ -4112,8 +4236,21 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(2, true);
 	f_sleep(1.0);
+
+	f_ctrs_bsc_and_bts_init();
+
 	vc_conn := f_start_handler(refers(f_tc_ho_int));
 	vc_conn.done;
+
+	/* from f_establish_fully() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+	/* from handover */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:completed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:completed");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* Expecting MGCP to DLCX the endpoint's two connections: towards BTS and towards MSC */
@@ -4211,8 +4348,18 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	vc_conn := f_start_handler(refers(f_tc_ho_out_of_this_bsc));
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:completed");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:completed");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* BSC asks for inter-BSC HO, but the MSC decides that it won't happen and
@@ -4258,8 +4405,18 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	vc_conn := f_start_handler(refers(f_tc_ho_out_fail_no_msc_response));
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:timeout");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* BSC asks for inter-BSC HO, receives BSSMAP Handover Command, but MS reports
@@ -4342,8 +4499,18 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	vc_conn := f_start_handler(refers(f_tc_ho_out_fail_rr_ho_failure));
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:failed");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* BSC asks for inter-BSC-out HO, receives BSSMAP Handover Command, but then no reply is received about HO outcome
@@ -4429,8 +4596,18 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	vc_conn := f_start_handler(refers(f_tc_ho_out_fail_no_result_after_ho_cmd));
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:timeout");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr {
@@ -4503,11 +4680,19 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
 	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
 
 	vc_conn := f_start_handler(refers(f_tc_ho_into_this_bsc), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:completed");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:completed");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {
@@ -4576,11 +4761,19 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
 	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
 
 	vc_conn := f_start_handler(refers(f_tc_ho_in_fail_msc_clears), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:stopped");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:stopped");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 private function f_tc_ho_in_fail_msc_clears_after_ho_detect(charstring id) runs on MSC_ConnHdlr {
@@ -4656,11 +4849,19 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
 	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
 
 	vc_conn := f_start_handler(refers(f_tc_ho_in_fail_msc_clears_after_ho_detect), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:stopped");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:stopped");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* The new BSS's lchan times out before the MSC decides that handover failed. */
@@ -4737,11 +4938,19 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
 	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
 
 	vc_conn := f_start_handler(refers(f_tc_ho_in_fail_no_detect), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:error");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* Same as f_tc_ho_in_fail_no_detect, but MSC fails to send a Clear Command */
@@ -4808,11 +5017,19 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
+	f_ctrs_bsc_and_bts_init();
+
 	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
 	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
 
 	vc_conn := f_start_handler(refers(f_tc_ho_in_fail_no_detect2), pars);
 	vc_conn.done;
+
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_in:error");
+	f_ctrs_bsc_and_bts_verify();
 }
 
 type record of charstring Commands;
@@ -4994,6 +5211,43 @@
 			"handover any to arfcn 871 bsic 11",
 			true);
 }
+testcase TC_ho_neighbor_config_1() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true, guard_timeout := 60.0);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_1));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 1.a */
+	/* "failed" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by sending a Handover Failure message. */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
+
+	/* 1.b */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	/* 1.c */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	/* 1.d */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_2(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5016,6 +5270,33 @@
 			"handover any to arfcn 871 bsic 12",
 			false);
 }
+testcase TC_ho_neighbor_config_2() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true, guard_timeout := 50.0);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_2));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 2.a */
+	/* "failed" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by sending a Handover Failure message. */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
+
+	/* 2.b */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_3(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5037,6 +5318,33 @@
 			"handover any to arfcn 871 bsic 12",
 			true);
 }
+testcase TC_ho_neighbor_config_3() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true, guard_timeout := 50.0);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_3));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 3.a */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	/* 3.b */
+	/* "failed" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by sending a Handover Failure message. */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_4(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5061,6 +5369,37 @@
 			"handover any to arfcn 123 bsic 45",
 			true, true);
 }
+testcase TC_ho_neighbor_config_4() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true, guard_timeout := 50.0);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_4));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 4.a */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	/* 4.b */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	/* 4.c */
+	/* "timeout" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by timing out after the Handover Required message */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:timeout");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_5(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5079,6 +5418,29 @@
 			"handover any to arfcn 871 bsic 12",
 			true, true);
 }
+testcase TC_ho_neighbor_config_5() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_5));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 5 */
+	/* "timeout" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by timing out after the Handover Required message */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:timeout");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_6(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5098,6 +5460,27 @@
 			"handover any to arfcn 871 bsic 12",
 			false);
 }
+testcase TC_ho_neighbor_config_6() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(3, true);
+	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
+	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_6));
+	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 6.a */
+	/* "timeout" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by timing out after the Handover Required message */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:error");
+
+	f_ctrs_bsc_and_bts_verify();
+}
+
 private function f_tc_ho_neighbor_config_7(charstring id) runs on MSC_ConnHdlr {
 	f_tc_ho_neighbor_config_start();
 
@@ -5120,55 +5503,35 @@
 			"handover any to arfcn 123 bsic 45",
 			true, true);
 }
-
-testcase TC_ho_neighbor_config_1() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true, guard_timeout := 60.0);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_1));
-	vc_conn.done;
-}
-testcase TC_ho_neighbor_config_2() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true, guard_timeout := 50.0);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_2));
-	vc_conn.done;
-}
-testcase TC_ho_neighbor_config_3() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true, guard_timeout := 50.0);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_3));
-	vc_conn.done;
-}
-testcase TC_ho_neighbor_config_4() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true, guard_timeout := 50.0);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_4));
-	vc_conn.done;
-}
-testcase TC_ho_neighbor_config_5() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_5));
-	vc_conn.done;
-}
-testcase TC_ho_neighbor_config_6() runs on test_CT {
-	var MSC_ConnHdlr vc_conn;
-	f_init(3, true);
-	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_6));
-	vc_conn.done;
-}
 testcase TC_ho_neighbor_config_7() runs on test_CT {
 	var MSC_ConnHdlr vc_conn;
 	f_init(3, true, guard_timeout := 50.0);
 	f_sleep(1.0);
+	f_ctrs_bsc_and_bts_init();
 	vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_7));
 	vc_conn.done;
+
+	/* f_tc_ho_neighbor_config_start() */
+	f_ctrs_bsc_and_bts_add(0, "assignment:attempted");
+	f_ctrs_bsc_and_bts_add(0, "assignment:completed");
+
+	/* 7.a */
+	/* "failed" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by sending a Handover Failure message. */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:failed");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:attempted");
+	f_ctrs_bsc_and_bts_add(0, "intra_bsc_ho:failed");
+
+	/* 7.b */
+	/* "timeout" means a handover was triggered and started (which is all this test aims for) and the test ended the
+	 * handover quickly by timing out after the Handover Required message */
+	f_ctrs_bsc_and_bts_add(0, "handover:attempted");
+	f_ctrs_bsc_and_bts_add(0, "handover:timeout");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted");
+	f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:timeout");
+
+	f_ctrs_bsc_and_bts_verify();
 }
 
 /* OS#3041: Open and close N connections in a normal fashion, and expect no

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19904
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: I10bc0b67ca8dcf41dbb02332ed18017e819c2b32
Gerrit-Change-Number: 19904
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/20200830/60d256ab/attachment.htm>


More information about the gerrit-log mailing list