BSC_Tests/hopping: make f_vty_{handover,ss_action}() more flexible

Make it possible to call them from a testcase / function
running on any kind of component, not only on MSC_ConnHdlr.

Change-Id: Ifbcc24c5a0299ba43a998ccbdd0f77bc109c6935
This commit is contained in:
Vadim Yanitskiy 2020-09-02 17:27:57 +07:00
parent 93a2fda742
commit 0007072fda
1 changed files with 10 additions and 8 deletions

View File

@ -4156,8 +4156,10 @@ runs on test_CT {
}
/* execute a "bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7>" command on given Dchan */
private function f_vty_ss_action(charstring suffix, integer bts_nr, integer trx_nr, RslChannelNr chan_nr)
runs on MSC_ConnHdlr {
private function f_vty_ss_action(TELNETasp_PT pt, charstring suffix,
uint8_t bts_nr, uint8_t trx_nr,
in RslChannelNr chan_nr)
{
/* FIXME: resolve those from component-global state */
var integer ts_nr := chan_nr.tn;
var integer ss_nr;
@ -4176,7 +4178,7 @@ runs on MSC_ConnHdlr {
var charstring cmd := "bts "&int2str(bts_nr)&" trx "&int2str(trx_nr)&
" timeslot "&int2str(ts_nr)&" sub-slot "&int2str(ss_nr)&" ";
f_vty_transceive(BSCVTY, cmd & suffix);
f_vty_transceive(pt, cmd & suffix);
}
/* Even though the VTY command to trigger handover takes a new BTS number as argument, behind the scenes osmo-bsc always
@ -4184,10 +4186,10 @@ runs on MSC_ConnHdlr {
* 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 {
f_vty_ss_action("handover " & int2str(new_bts_nr), bts_nr, trx_nr, chan_nr);
private function f_vty_handover(TELNETasp_PT pt, uint8_t bts_nr, uint8_t trx_nr,
in RslChannelNr chan_nr, uint8_t new_bts_nr)
{
f_vty_ss_action(pt, "handover " & int2str(new_bts_nr), bts_nr, trx_nr, chan_nr);
}
/* intra-BSC hand-over between BTS0 and BTS1 */
@ -4209,7 +4211,7 @@ private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr {
old_chan_nr := -
};
/* issue hand-over command on VTY */
f_vty_handover(0, 0, g_chan_nr, 1);
f_vty_handover(BSCVTY, 0, 0, g_chan_nr, 1);
/* temporarily suspend DChan processing on BTS1 to avoid race with RSLEM_register */
f_rslem_suspend(RSL1_PROC);