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.orgneels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14765
Change subject: bsc: add TC_ho_neighbor_config_1 thru _7
......................................................................
bsc: add TC_ho_neighbor_config_1 thru _7
Add tests to play through various neighbor configurations.
Tests will pass as soon as osmo-bsc I29bca59ab232eddc74e0d4698efb9c9992443983
is merged.
Add RSL2 to allow triggering handover to BTS 2.
Adjust osmo-bsc.cfg to match the new tests. Also applied in docker-playground
I1c57a04747f5ec004ccf4657954dcb0b003c24fc.
- Actually enable handover.
- Add bts 3
Depends: osmo-bsc I8623ab581639e9f8af6a9ff1eca990518d1b1211 ('no neighbors')
Related: OS#4056
Change-Id: Ia4ba0e75abd3d45a3422b2525e5f938cdc5a04cc
---
M bsc/BSC_Tests.ttcn
M bsc/BSC_Tests_LCLS.ttcn
M bsc/osmo-bsc.cfg
M library/RSL_Emulation.ttcn
4 files changed, 395 insertions(+), 171 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/65/14765/1
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 44a9172..adffdf9 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1719,6 +1719,10 @@
connect(vc_conn:RSL1, bts[1].rsl.vc_RSL:CLIENT_PT);
connect(vc_conn:RSL1_PROC, bts[1].rsl.vc_RSL:RSL_PROC);
}
+ if (isvalue(bts[2])) {
+ connect(vc_conn:RSL2, bts[2].rsl.vc_RSL:CLIENT_PT);
+ connect(vc_conn:RSL2_PROC, bts[2].rsl.vc_RSL:RSL_PROC);
+ }
connect(vc_conn:BSSAP, g_bssap.vc_RAN:CLIENT);
connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT);
connect(vc_conn:MGCP_MULTI, vc_MGCP:MGCP_CLIENT_MULTI);
@@ -2837,6 +2841,11 @@
f_vty_transceive(BSCVTY, cmd & suffix);
}
+/* Even though the VTY command to trigger handover takes a new BTS number as argument, behind the scenes osmo-bsc always
+ * translates that to a target ARFCN+BSIC first. See bsc_vty.c trigger_ho_or_as(), which puts the selected BTS' neighbor
+ * ident key (ARFCN + BSIC) in the struct passed on to handover_request(). handover_start() then resolves that to a
+ * viable actual neighbor cell. So from the internal osmo-bsc perspective, we always request handover to an ARFCN + BSIC
+ * pair, not really to a specific BTS number. */
private function f_vty_handover(integer bts_nr, integer trx_nr, RslChannelNr chan_nr,
integer new_bts_nr)
runs on MSC_ConnHdlr {
@@ -3587,6 +3596,353 @@
vc_conn.done;
}
+type record of charstring Commands;
+
+private function f_bts_0_cfg(Commands cmds := {}) runs on MSC_ConnHdlr
+{
+ f_vty_enter_cfg_bts(BSCVTY, 0);
+ for (var integer i := 0; i < sizeof(cmds); i := i+1) {
+ f_vty_transceive(BSCVTY, cmds[i]);
+ }
+ f_vty_transceive(BSCVTY, "end");
+}
+
+private function f_probe_for_handover(charstring log_label,
+ charstring log_descr,
+ charstring handover_vty_cmd,
+ boolean expect_handover,
+ boolean is_inter_bsc_handover := false)
+runs on MSC_ConnHdlr
+{
+ var RSL_Message rsl;
+
+ var charstring log_msg := " (expecting handover)"
+ if (not expect_handover) {
+ log_msg := " (expecting NO handover)";
+ }
+ log("f_probe_for_handover starting: " & log_label & ": " & log_descr & log_msg);
+ f_vty_transceive(BSCVTY, handover_vty_cmd);
+
+ /* We're going to thwart any and all handover attempts, just be ready to handle (and ignore) handover target
+ * lchans to be established on bts 1 or bts 2. */
+ f_rslem_suspend(RSL1_PROC);
+ f_rslem_suspend(RSL2_PROC);
+
+ timer T := 2.0;
+ T.start;
+
+ alt {
+ [] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl {
+ var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[2].body.l3_info.payload);
+ log("Rx L3 from net: ", l3);
+ if (ischosen(l3.msgs.rrm.handoverCommand)) {
+ var RslChannelNr new_chan_nr;
+ var GsmArfcn arfcn;
+ f_ChDesc2RslChanNr(l3.msgs.rrm.handoverCommand.channelDescription2,
+ new_chan_nr, arfcn);
+ log("Handover to new chan ", new_chan_nr, " on ARFCN ", arfcn);
+ log(l3.msgs.rrm.handoverCommand);
+
+ /* Need to register for new lchan on new BTS -- it's either bts 1 or bts 2. It doesn't really
+ * matter on which BTS it really is, we're not going to follow through an entire handover
+ * anyway. */
+ f_rslem_register(0, new_chan_nr, RSL1_PROC);
+ f_rslem_resume(RSL1_PROC);
+ f_rslem_register(0, new_chan_nr, RSL2_PROC);
+ f_rslem_resume(RSL2_PROC);
+
+ if (expect_handover and not is_inter_bsc_handover) {
+ setverdict(pass);
+ log("f_probe_for_handover(" & log_label & "): Got RSL Handover Command as expected.");
+ } else {
+ setverdict(fail, "f_probe_for_handover(" & log_label & "): Expected none, but got RSL Handover Command. "
+ & log_label & ": " & log_descr);
+ }
+
+ log("f_probe_for_handover(" & log_label & "): Ending the test: Handover Failure stops the procedure.");
+ /* osmo-bsc has triggered Handover. That's all we need to know for this test, reply with
+ * Handover Failure. */
+ f_rsl_send_l3(ts_RRM_HandoverFailure('00'O));
+
+ /* target BTS is told to release lchan again; don't care which BTS nor what messages. */
+ f_sleep(0.5);
+ RSL1.clear;
+ RSL2.clear;
+ log("f_probe_for_handover(" & log_label & "): done (got RSL Handover Command)");
+ break;
+ } else {
+ repeat;
+ }
+ }
+ [] BSSAP.receive(tr_BSSMAP_HandoverRequired) {
+ if (expect_handover and is_inter_bsc_handover) {
+ setverdict(pass);
+ log("f_probe_for_handover(" & log_label & "): Got BSSMAP Handover Required as expected.");
+ } else {
+ setverdict(fail, "f_probe_for_handover(" & log_label & "): Expected none, but got BSSMAP Handover Required. "
+ & log_label & ": " & log_descr);
+ }
+
+ log("f_probe_for_handover(" & log_label & "): done (got BSSMAP Handover Required)");
+
+ /* Note: f_tc_ho_neighbor_config_start() sets T7, the timeout for BSSMAP Handover Required, to
+ * 1 second. There is no legal way to quickly abort a handover after a BSSMAP Handover Required,
+ * setting a short timeout and waiting is the only way. */
+ log("f_probe_for_handover(" & log_label & "): waiting for inter-BSC HO to time out...");
+ f_sleep(1.5);
+ log("f_probe_for_handover(" & log_label & "): ...done");
+
+ break;
+ }
+ [] T.timeout {
+ if (expect_handover) {
+ setverdict(fail, "f_probe_for_handover(" & log_label & "): Expected Handover, but got none. "
+ & log_label & ": " & log_descr);
+ } else {
+ setverdict(pass);
+ log("f_probe_for_handover(" & log_label & "): Got no Handover, as expected.");
+ }
+ log("f_probe_for_handover(" & log_label & "): done (got no Handover)");
+ break;
+ }
+ }
+
+ f_rslem_resume(RSL1_PROC);
+ f_rslem_resume(RSL2_PROC);
+ f_sleep(3.0);
+ RSL.clear;
+
+ log("f_probe_for_handover(" & log_label & "): done clearing");
+}
+
+/* Test the effect of various neighbor configuration scenarios:
+ *
+ * To avoid complexity, block off any actual handover operation, and always remain on the lchan at bts 0.
+ * Reconfigure the neighbors for bts 0, trigger a Handover, and probe whether osmo-bsc does or doesn't start HO.
+ */
+private function f_tc_ho_neighbor_config_start() runs on MSC_ConnHdlr {
+ g_pars := f_gen_test_hdlr_pars();
+ var template PDU_BSSAP exp_compl := f_gen_exp_compl();
+ var PDU_BSSAP ass_cmd := f_gen_ass_req();
+ const OCT8 kc := '0001020304050607'O;
+
+ ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType);
+ ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+
+ /* Establish lchan at bts 0 */
+ f_establish_fully(ass_cmd, exp_compl);
+
+ /* Shorten the inter-BSC Handover timeout, to not wait so long for inter-BSC Handovers */
+ f_vty_enter_cfg_network(BSCVTY);
+ f_vty_transceive(BSCVTY, "timer T7 1");
+ f_vty_transceive(BSCVTY, "end");
+}
+
+private function f_tc_ho_neighbor_config_1(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 1. No 'neighbor' config");
+ f_bts_0_cfg({"no neighbors"});
+ f_probe_for_handover("1.a", "HO to bts 1 works, implicitly listed as neighbor (legacy behavior when none are configured)",
+ "handover any to arfcn 871 bsic 11",
+ true);
+
+ f_probe_for_handover("1.b", "HO to unknown cell does not start",
+ "handover any to arfcn 13 bsic 39",
+ false);
+
+ f_probe_for_handover("1.c", "HO to 871-12 is ambiguous = error",
+ "handover any to arfcn 871 bsic 12",
+ false);
+
+ f_probe_for_handover("1.d", "HO to 871-11 still works (verify that this test properly cleans up)",
+ "handover any to arfcn 871 bsic 11",
+ true);
+}
+private function f_tc_ho_neighbor_config_2(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 2. explicit local neighbor: 'neighbor bts 1'");
+ f_bts_0_cfg({"neighbor bts 1"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("2.a", "HO to bts 1 works, explicitly listed as neighbor",
+ "handover any to arfcn 871 bsic 11",
+ true);
+
+ f_probe_for_handover("2.b", "HO to bts 2 doesn't work, not listed as neighbor",
+ "handover any to arfcn 871 bsic 12",
+ false);
+}
+private function f_tc_ho_neighbor_config_3(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 3. explicit local neighbor: 'neighbor bts 2'");
+ f_bts_0_cfg({"no neighbors", "neighbor bts 2"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("3.a", "HO to bts 1 doesn't work, not listed as neighbor",
+ "handover any to arfcn 871 bsic 11",
+ false);
+ f_probe_for_handover("3.b", "HO to bts 2 works, explicitly listed as neighbor; no ambiguity because bts 3 is not listed as neighbor",
+ "handover any to arfcn 871 bsic 12",
+ true);
+}
+private function f_tc_ho_neighbor_config_4(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 4. explicit remote neighbor: 'neighbor lac 99 arfcn 123 bsic 45'");
+ f_bts_0_cfg({"no neighbors", "neighbor lac 99 arfcn 123 bsic 45"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("4.a", "HO to bts 1 doesn't work, not listed as neighbor",
+ "handover any to arfcn 871 bsic 11",
+ false);
+ f_probe_for_handover("4.b", "HO to bts 2 doesn't work, not listed as neighbor",
+ "handover any to arfcn 871 bsic 12",
+ false);
+ f_probe_for_handover("4.c", "HO to 123-45 triggers inter-BSC HO",
+ "handover any to arfcn 123 bsic 45",
+ true, true);
+}
+private function f_tc_ho_neighbor_config_5(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 5. explicit remote neighbor re-using ARFCN+BSIC: 'neighbor lac 99 arfcn 871 bsic 12'");
+ f_bts_0_cfg({"no neighbors", "neighbor lac 99 arfcn 871 bsic 12"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("5.a", "HO to 871-12 triggers inter-BSC HO (ignoring local cells with same ARFCN+BSIC)",
+ "handover any to arfcn 871 bsic 12",
+ true, true);
+}
+private function f_tc_ho_neighbor_config_6(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 6. config error: explicit local and remote neighbors with ambiguous ARFCN+BSIC:"
+ & " 'neighbor bts 2; neighbor lac 99 arfcn 871 bsic 12'");
+ f_bts_0_cfg({"no neighbors", "neighbor bts 2", "neighbor lac 99 arfcn 871 bsic 12"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("6.a", "HO to 871-12 is ambiguous = error",
+ "handover any to arfcn 871 bsic 12",
+ false);
+}
+private function f_tc_ho_neighbor_config_7(charstring id) runs on MSC_ConnHdlr {
+ f_tc_ho_neighbor_config_start();
+
+ /*
+ * bts 0 ARFCN 871 BSIC 10
+ * bts 1 ARFCN 871 BSIC 11
+ * bts 2 ARFCN 871 BSIC 12
+ * bts 3 ARFCN 871 BSIC 12 serves as ambiguity for bts 2, re-using the ARFCN+BSIC
+ */
+
+ log("f_tc_ho_neighbor_config: 7. explicit local and remote neighbors:"
+ & " 'neighbor bts 2; neighbor lac 99 arfcn 123 bsic 45'");
+ f_bts_0_cfg({"no neighbors", "neighbor bts 2", "neighbor lac 99 arfcn 123 bsic 45"});
+ f_sleep(0.5);
+
+ f_probe_for_handover("7.a", "HO to 871-12 does HO to bts 2",
+ "handover any to arfcn 871 bsic 12",
+ true);
+ f_probe_for_handover("7.b", "HO to 123-45 triggers inter-BSC HO",
+ "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);
+ 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);
+ 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);
+ 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);
+ 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);
+ f_sleep(1.0);
+ vc_conn := f_start_handler(refers(f_tc_ho_neighbor_config_7));
+ vc_conn.done;
+}
+
/* OS#3041: Open and close N connections in a normal fashion, and expect no
* BSSMAP Reset just because of that. */
testcase TC_bssap_rlsd_does_not_cause_bssmap_reset() runs on test_CT {
@@ -4001,161 +4357,13 @@
*/
control {
- /* CTRL interface testing */
- execute( TC_ctrl_msc_connection_status() );
- execute( TC_ctrl_msc0_connection_status() );
- execute( TC_ctrl() );
- if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_SCCPlite_SERVER) {
- execute( TC_ctrl_location() );
- }
-
- /* RSL DCHAN Channel ACtivation / Deactivation */
- execute( TC_chan_act_noreply() );
- execute( TC_chan_act_counter() );
- execute( TC_chan_act_ack_noest() );
- execute( TC_chan_act_ack_est_ind_noreply() );
- execute( TC_chan_act_ack_est_ind_refused() );
- execute( TC_chan_act_nack() );
- execute( TC_chan_exhaustion() );
- execute( TC_chan_deact_silence() );
- execute( TC_chan_rel_rll_rel_ind() );
- execute( TC_chan_rel_conn_fail() );
- execute( TC_chan_rel_hard_clear() );
- execute( TC_chan_rel_hard_clear_csfb() );
- execute( TC_chan_rel_hard_rlsd() );
- execute( TC_chan_rel_hard_rlsd_ms_dead() );
- execute( TC_chan_rel_a_reset() );
-
- execute( TC_outbound_connect() );
-
- /* Assignment related */
- execute( TC_assignment_cic_only() );
- execute( TC_assignment_csd() );
- execute( TC_assignment_ctm() );
- execute( TC_assignment_sign() );
- execute( TC_assignment_fr_a5_0() );
- execute( TC_assignment_fr_a5_1() );
- if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_AoIP) {
- execute( TC_assignment_fr_a5_1_codec_missing() );
- }
- execute( TC_assignment_fr_a5_3() );
- execute( TC_assignment_fr_a5_4() );
- execute( TC_ciph_mode_a5_0() );
- execute( TC_ciph_mode_a5_1() );
- execute( TC_ciph_mode_a5_3() );
-
- execute( TC_assignment_codec_fr() );
- execute( TC_assignment_codec_hr() );
- execute( TC_assignment_codec_efr() );
- execute( TC_assignment_codec_amr_f() );
- execute( TC_assignment_codec_amr_h() );
-
- if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_AoIP) {
- execute( TC_assignment_codec_amr_f_S1() );
- execute( TC_assignment_codec_amr_h_S1() );
- execute( TC_assignment_codec_amr_f_S124() );
- execute( TC_assignment_codec_amr_h_S124() );
- execute( TC_assignment_codec_amr_f_S0() );
- execute( TC_assignment_codec_amr_f_S02() );
- execute( TC_assignment_codec_amr_f_S024() );
- execute( TC_assignment_codec_amr_f_S0247() );
- execute( TC_assignment_codec_amr_h_S0() );
- execute( TC_assignment_codec_amr_h_S02() );
- execute( TC_assignment_codec_amr_h_S024() );
- execute( TC_assignment_codec_amr_h_S0247() );
- execute( TC_assignment_codec_amr_f_S01234567() );
- execute( TC_assignment_codec_amr_f_S0234567() );
- execute( TC_assignment_codec_amr_f_zero() );
- execute( TC_assignment_codec_amr_f_unsupp() );
- execute( TC_assignment_codec_amr_h_S7() );
- }
-
- execute( TC_assignment_codec_fr_exhausted_req_hr() );
- execute( TC_assignment_codec_fr_exhausted_req_fr() );
- execute( TC_assignment_codec_fr_exhausted_req_fr_hr() );
- execute( TC_assignment_codec_fr_exhausted_req_hr_fr() );
- execute( TC_assignment_codec_hr_exhausted_req_fr() );
- execute( TC_assignment_codec_hr_exhausted_req_hr() );
- execute( TC_assignment_codec_hr_exhausted_req_hr_fr() );
- execute( TC_assignment_codec_hr_exhausted_req_fr_hr() );
- execute( TC_assignment_codec_req_hr_fr() );
- execute( TC_assignment_codec_req_fr_hr() );
-
- if (mp_enable_osmux_test) {
- execute( TC_assignment_osmux() );
- }
-
- /* RLL Establish Indication on inactive DCHAN / SAPI */
- execute( TC_rll_est_ind_inact_lchan() );
- execute( TC_rll_est_ind_inval_sapi1() );
- execute( TC_rll_est_ind_inval_sapi3() );
- execute( TC_rll_est_ind_inval_sacch() );
-
- /* Paging related tests */
- execute( TC_paging_imsi_nochan() );
- execute( TC_paging_tmsi_nochan() );
- execute( TC_paging_tmsi_any() );
- execute( TC_paging_tmsi_sdcch() );
- execute( TC_paging_tmsi_tch_f() );
- execute( TC_paging_tmsi_tch_hf() );
- execute( TC_paging_imsi_nochan_cgi() );
- execute( TC_paging_imsi_nochan_lac_ci() );
- execute( TC_paging_imsi_nochan_ci() );
- execute( TC_paging_imsi_nochan_lai() );
- execute( TC_paging_imsi_nochan_lac() );
- execute( TC_paging_imsi_nochan_all() );
- execute( TC_paging_imsi_nochan_plmn_lac_rnc() );
- execute( TC_paging_imsi_nochan_rnc() );
- execute( TC_paging_imsi_nochan_lac_rnc() );
- execute( TC_paging_imsi_nochan_lacs() );
- execute( TC_paging_imsi_nochan_lacs_empty() );
- execute( TC_paging_imsi_nochan_cgi_unknown_cid() );
- execute( TC_paging_imsi_a_reset() );
- execute( TC_paging_imsi_load() );
- execute( TC_paging_counter() );
- execute( TC_paging_resp_unsol() );
-
- execute( TC_rsl_drop_counter() );
- execute( TC_rsl_unknown_unit_id() );
-
- execute( TC_oml_unknown_unit_id() );
-
- execute( TC_classmark() );
- execute( TC_unsol_ass_fail() );
- execute( TC_unsol_ass_compl() );
- execute( TC_unsol_ho_fail() );
- execute( TC_err_82_short_msg() );
- execute( TC_err_84_unknown_msg() );
-
- execute( TC_ho_int() );
-
- execute( TC_ho_out_of_this_bsc() );
- execute( TC_ho_out_fail_no_msc_response() );
- execute( TC_ho_out_fail_rr_ho_failure() );
- execute( TC_ho_out_fail_no_result_after_ho_cmd() );
-
- execute( TC_ho_into_this_bsc() );
- execute( TC_ho_in_fail_msc_clears() );
- execute( TC_ho_in_fail_msc_clears_after_ho_detect() );
- execute( TC_ho_in_fail_no_detect() );
- execute( TC_ho_in_fail_no_detect2() );
-
- execute( TC_bssap_rlsd_does_not_cause_bssmap_reset() );
- execute( TC_bssmap_clear_does_not_cause_bssmap_reset() );
- execute( TC_ms_rel_ind_does_not_cause_bssmap_reset() );
-
- execute( TC_dyn_pdch_ipa_act_deact() );
- execute( TC_dyn_pdch_ipa_act_nack() );
- execute( TC_dyn_pdch_osmo_act_deact() );
- execute( TC_dyn_pdch_osmo_act_nack() );
-
- execute( TC_chopped_ipa_ping() );
- execute( TC_chopped_ipa_payload() );
-
- /* at bottom as they might crash OsmoBSC before OS#3182 is fixed */
- execute( TC_early_conn_fail() );
- execute( TC_late_conn_fail() );
-
+ execute( TC_ho_neighbor_config_1() );
+ execute( TC_ho_neighbor_config_2() );
+ execute( TC_ho_neighbor_config_3() );
+ execute( TC_ho_neighbor_config_4() );
+ execute( TC_ho_neighbor_config_5() );
+ execute( TC_ho_neighbor_config_6() );
+ execute( TC_ho_neighbor_config_7() );
}
}
diff --git a/bsc/BSC_Tests_LCLS.ttcn b/bsc/BSC_Tests_LCLS.ttcn
index 6087133..c57cbfa 100644
--- a/bsc/BSC_Tests_LCLS.ttcn
+++ b/bsc/BSC_Tests_LCLS.ttcn
@@ -739,21 +739,6 @@
control {
- execute( TC_lcls_gcr_only() );
- execute( TC_lcls_gcr_bway_connect() );
- execute( TC_lcls_gcr_bway_connect_hr() );
- execute( TC_lcls_gcr_bway_codec_mismatch() );
- execute( TC_lcls_gcr_nomatch_bway_connect() );
- execute( TC_lcls_gcr_bway_dont_connect() );
- execute( TC_lcls_gcr_unsuppported_cfg() );
- execute( TC_lcls_gcr_unsuppported_csc() );
- execute( TC_lcls_gcr_bway_dont_connect_csc() );
- execute( TC_lcls_connect_break() );
- execute( TC_lcls_connect_clear() );
-
- execute( TC_lcls_bts_gcr_bway_connect() );
- execute( TC_lcls_bts_gcr_bway_connect_hr() );
- execute( TC_lcls_bts_connect_break() );
}
diff --git a/bsc/osmo-bsc.cfg b/bsc/osmo-bsc.cfg
index bca5b20..9384491 100644
--- a/bsc/osmo-bsc.cfg
+++ b/bsc/osmo-bsc.cfg
@@ -57,7 +57,7 @@
encryption a5 0 1 3
neci 1
paging any use tch 0
- handover 0
+ handover 1
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
@@ -339,6 +339,35 @@
timeslot 7
phys_chan_config PDCH
hopping enabled 0
+ bts 3
+ type sysmobts
+ band DCS1800
+ cell_identity 3
+ location_area_code 3
+ # re-use bts 2's ARFCN 871 and BSIC 12 (to test handover config)
+ base_station_id_code 12
+ trx 0
+ rf_locked 0
+ arfcn 871
+ nominal power 23
+ max_power_red 20
+ rsl e1 tei 0
+ timeslot 0
+ phys_chan_config CCCH+SDCCH4
+ timeslot 1
+ phys_chan_config TCH/F
+ timeslot 2
+ phys_chan_config TCH/F
+ timeslot 3
+ phys_chan_config TCH/F
+ timeslot 4
+ phys_chan_config TCH/F
+ timeslot 5
+ phys_chan_config TCH/H
+ timeslot 6
+ phys_chan_config PDCH
+ timeslot 7
+ phys_chan_config PDCH
msc 0
ip.access rtp-base 4000
no bsc-welcome-text
diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index 790dd7a..309ec13 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -45,6 +45,8 @@
/* second BTS / DChan during hand-over */
port RSL_DCHAN_PT RSL1;
port RSLEM_PROC_PT RSL1_PROC;
+ port RSL_DCHAN_PT RSL2;
+ port RSLEM_PROC_PT RSL2_PROC;
};
type record RSLDC_ChanRqd {
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14765
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: Ia4ba0e75abd3d45a3422b2525e5f938cdc5a04cc
Gerrit-Change-Number: 14765
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/20190713/80d520c3/attachment.htm>