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
This commit is contained in:
Neels Hofmeyr 2020-08-29 03:21:26 +00:00 committed by neels
parent 1393d02d0d
commit 12941bd6b0
1 changed files with 406 additions and 43 deletions

View File

@ -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