summaryrefslogtreecommitdiffstats
path: root/bsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-08-29 03:21:26 +0000
committerneels <nhofmeyr@sysmocom.de>2020-08-31 16:40:22 +0000
commit12941bd6b0e97ec8490b9c84959d24e4a07a986a (patch)
treec58bb8eae28b846d162b94481ec6ac2683f9df41 /bsc
parent1393d02d0d2dd09755ac046f85bfb467b8e6785a (diff)
bsc: verify handover rate counters
This will break the 'latest' builds for most handover tests until Ib0087b6566ae4d82f8c3ef272c1256bcd1d08bf1 is released. Move the TC_ho_neighbor_config_* closer to the f_tc_ho_neighbor_config_* functions, so that it is easier to read the added counters, relating to the expected handovers. Depends: Ib0087b6566ae4d82f8c3ef272c1256bcd1d08bf1 (osmo-bsc) Change-Id: I10bc0b67ca8dcf41dbb02332ed18017e819c2b32
Diffstat (limited to 'bsc')
-rw-r--r--bsc/BSC_Tests.ttcn449
1 files changed, 406 insertions, 43 deletions
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 @@ const CounterNameVals counternames_msc_mscpool := {
{ "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 @@ type component test_CT extends CTRL_Adapter_CT {
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 @@ private function f_ctrs_msc_expect(integer msc_nr, charstring countername, integ
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 @@ testcase TC_ho_int() runs on test_CT {
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 @@ testcase TC_ho_out_of_this_bsc() runs on test_CT {
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 @@ testcase TC_ho_out_fail_no_msc_response() runs on test_CT {
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 @@ testcase TC_ho_out_fail_rr_ho_failure() runs on test_CT {
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 @@ testcase TC_ho_out_fail_no_result_after_ho_cmd() runs on test_CT {
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 @@ testcase TC_ho_into_this_bsc() runs on test_CT {
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 @@ testcase TC_ho_in_fail_msc_clears() runs on test_CT {
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 @@ testcase TC_ho_in_fail_msc_clears_after_ho_detect() runs on test_CT {
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 @@ testcase TC_ho_in_fail_no_detect() runs on test_CT {
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 @@ testcase TC_ho_in_fail_no_detect2() runs on test_CT {
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 @@ private function f_tc_ho_neighbor_config_1(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_2(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_3(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_4(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_5(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_6(charstring id) runs on MSC_ConnHdlr {
"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 @@ private function f_tc_ho_neighbor_config_7(charstring id) runs on MSC_ConnHdlr {
"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