BSC_Tests: add support for per-TRX RSL connections
So far it was possible to communicate with multiple BTS instances, however we were limited to only one IPA/RSL connection per BTS. Communicating with additional TRX instances requires establishing additional per-TRX IPA/RSL connections. This patch extends the testsuite infrastructure, so that it becomes possible to have up to 4 individual TRX instances for each BTS. * Introduce record 'BtsParams', store per-BTS params in an array. * IPA_RSL_PT: test_CT.IPA_RSL[NUM_BTS] -> test_CT.IPA_RSL[NUM_BTS][NUM_TRX]. * BTS_State: test_CT.bts[NUM_BTS] -> test_CT.bts[NUM_BTS][NUM_TRX]. * f_init_bts_and_check_sysinfo() accepts number of TRX instances. * f_init_bts() accepts number of TRX instances to configure. * f_ipa_rsl_start() accepts a BtsTrxIdx param. * Introduce record BtsTrxIdx allowing to specify BTS/TRX index values. * f_ipa_tx(), f_exp_ipa_rx() accept a BtsTrxIdx param (default {0, 0}). * f_est_dchan[_dyn]() accept a BtsTrxIdx param (default {0, 0}). ** and store the given BtsTrxIdx in returned DchanTuple. * f_chreq_act_ack() accepts a BtsTrxIdx param (default {0, 0}). * f_expect_chan_rel() accepts a BtsTrxIdx param (default {0, 0}). * f_exp_ipa_rx_nonfatal() accepts BtsTrxIdx (default {0, 0}). * f_exp_chan_rel_and_clear() uses BtsTrxIdx indicated in the given DchanTuple. * Fix CTRL/statsd expectations in TC_stat_num_bts_connected_[123]. * Fix CTRL expectations in TC_ctrl_trx_rf_locked. The major limitation is that MSC_ConnHdlr components still have no access to additional TRX instances - this can be implemented later. Change-Id: Ic0fd97234464ef624010a5f01189aa61f3393b84 Related: SYS#5460
This commit is contained in:
parent
ee961c77fd
commit
e5d393c556
File diff suppressed because it is too large
Load Diff
|
@ -109,23 +109,23 @@ private function f_g_cbsp_next_msg_id_ser_no() runs on cbsp_test_CT
|
||||||
}
|
}
|
||||||
|
|
||||||
private altstep as_IgnRSL(template (present) RSL_Message tr) runs on cbsp_test_CT {
|
private altstep as_IgnRSL(template (present) RSL_Message tr) runs on cbsp_test_CT {
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
||||||
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
[] IPA_RSL[1][0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
||||||
[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
[] IPA_RSL[2][0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private altstep as_FailRSL() runs on cbsp_test_CT {
|
private altstep as_FailRSL() runs on cbsp_test_CT {
|
||||||
var template (present) RSL_Message tr := (tr_RSL_SMSCB_CMD);
|
var template (present) RSL_Message tr := (tr_RSL_SMSCB_CMD);
|
||||||
var ASP_RSL_Unitdata rx;
|
var ASP_RSL_Unitdata rx;
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
||||||
setverdict(fail, "Received unexpected RSL ", rx);
|
setverdict(fail, "Received unexpected RSL ", rx);
|
||||||
mtc.stop;
|
mtc.stop;
|
||||||
}
|
}
|
||||||
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
[] IPA_RSL[1][0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
||||||
setverdict(fail, "Received unexpected RSL ", rx);
|
setverdict(fail, "Received unexpected RSL ", rx);
|
||||||
mtc.stop;
|
mtc.stop;
|
||||||
}
|
}
|
||||||
[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
[] IPA_RSL[2][0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
|
||||||
setverdict(fail, "Received unexpected RSL ", rx);
|
setverdict(fail, "Received unexpected RSL ", rx);
|
||||||
mtc.stop;
|
mtc.stop;
|
||||||
}
|
}
|
||||||
|
@ -225,9 +225,9 @@ function f_gen_page(integer payload_len := 0) return CBSP_IE {
|
||||||
|
|
||||||
function f_cbsp_reset_bss(integer idx) runs on cbsp_test_CT {
|
function f_cbsp_reset_bss(integer idx) runs on cbsp_test_CT {
|
||||||
/* Make sure no CBSP ETWS commands from a previous CBSP test remain in the RSL queue */
|
/* Make sure no CBSP ETWS commands from a previous CBSP test remain in the RSL queue */
|
||||||
IPA_RSL[0].clear;
|
IPA_RSL[0][0].clear;
|
||||||
IPA_RSL[1].clear;
|
IPA_RSL[1][0].clear;
|
||||||
IPA_RSL[2].clear;
|
IPA_RSL[2][0].clear;
|
||||||
|
|
||||||
var template (value) CBSP_PDU tx;
|
var template (value) CBSP_PDU tx;
|
||||||
timer T := 3.0;
|
timer T := 3.0;
|
||||||
|
@ -254,9 +254,9 @@ function f_cbsp_expect_disable_etws_pn_broadcast() runs on cbsp_test_CT
|
||||||
{
|
{
|
||||||
var template ASP_RSL_Unitdata zero_payload := tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(t_RslChanNr_PCH_AGCH(0), ''O));
|
var template ASP_RSL_Unitdata zero_payload := tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(t_RslChanNr_PCH_AGCH(0), ''O));
|
||||||
interleave {
|
interleave {
|
||||||
[] IPA_RSL[0].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 0"); }
|
[] IPA_RSL[0][0].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 0"); }
|
||||||
[] IPA_RSL[1].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 1"); }
|
[] IPA_RSL[1][0].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 1"); }
|
||||||
[] IPA_RSL[2].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 2"); }
|
[] IPA_RSL[2][0].receive(zero_payload) { log("CBSP: disabled ETWS PN broadcast on bts 2"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -562,9 +562,9 @@ function f_tc_cbsp_write_bss(integer payload_len := -1, template (present) integ
|
||||||
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no, expect_blocks := expect_blocks);
|
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no, expect_blocks := expect_blocks);
|
||||||
log("RSL[0,1,2] EXPECTING ", tr_ASP_RSL_UD(tr));
|
log("RSL[0,1,2] EXPECTING ", tr_ASP_RSL_UD(tr));
|
||||||
interleave {
|
interleave {
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[0]"); }
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[0]"); }
|
||||||
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[1]"); }
|
[] IPA_RSL[1][0].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[1]"); }
|
||||||
[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[2]"); }
|
[] IPA_RSL[2][0].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[2]"); }
|
||||||
}
|
}
|
||||||
setverdict(pass);
|
setverdict(pass);
|
||||||
|
|
||||||
|
@ -609,7 +609,7 @@ testcase TC_cbsp_write_bts_cgi() runs on cbsp_test_CT {
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
||||||
success_list:=cell_list, fail_list:=omit);
|
success_list:=cell_list, fail_list:=omit);
|
||||||
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr));
|
||||||
f_sleep(5.0);
|
f_sleep(5.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,7 +649,7 @@ testcase TC_cbsp_write_lac_ci() runs on cbsp_test_CT {
|
||||||
cell_list := ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)});
|
cell_list := ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)});
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
||||||
f_sleep(5.0);
|
f_sleep(5.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -663,7 +663,7 @@ testcase TC_cbsp_write_ci() runs on cbsp_test_CT {
|
||||||
cell_list := ts_BSSMAP_CIL_CI({bssmap_ci(mp_cgi_bts0)});
|
cell_list := ts_BSSMAP_CIL_CI({bssmap_ci(mp_cgi_bts0)});
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
||||||
f_sleep(5.0);
|
f_sleep(5.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -681,7 +681,7 @@ testcase TC_cbsp_write_lai() runs on cbsp_test_CT {
|
||||||
cell_list := ts_BSSMAP_CIL_LAI({bssmap_lai(mp_cgi_bts2)});
|
cell_list := ts_BSSMAP_CIL_LAI({bssmap_lai(mp_cgi_bts2)});
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
IPA_RSL[2].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
IPA_RSL[2][0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
||||||
f_sleep(5.0);
|
f_sleep(5.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -697,8 +697,8 @@ testcase TC_cbsp_write_lac() runs on cbsp_test_CT {
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
||||||
interleave {
|
interleave {
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr));
|
||||||
[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr));
|
[] IPA_RSL[1][0].receive(tr_ASP_RSL_UD(tr));
|
||||||
}
|
}
|
||||||
f_sleep(5.0);
|
f_sleep(5.0);
|
||||||
}
|
}
|
||||||
|
@ -714,7 +714,7 @@ testcase TC_cbsp_write_then_replace() runs on cbsp_test_CT {
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, num_bcast_req:=10, content:=pages,
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, num_bcast_req:=10, content:=pages,
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
|
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
||||||
|
|
||||||
/* Replace: keep the same msg_id, use a new ser_no */
|
/* Replace: keep the same msg_id, use a new ser_no */
|
||||||
var uint16_t old_ser_no := g_cbsp_ser_no;
|
var uint16_t old_ser_no := g_cbsp_ser_no;
|
||||||
|
@ -722,7 +722,7 @@ testcase TC_cbsp_write_then_replace() runs on cbsp_test_CT {
|
||||||
f_cbsp_replace(g_cbsp_msg_id, g_cbsp_ser_no, old_ser_no, cell_list, content:=pages,
|
f_cbsp_replace(g_cbsp_msg_id, g_cbsp_ser_no, old_ser_no, cell_list, content:=pages,
|
||||||
success_list:=?, fail_list:=omit);
|
success_list:=?, fail_list:=omit);
|
||||||
|
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no)));
|
||||||
f_sleep(1.0);
|
f_sleep(1.0);
|
||||||
setverdict(pass);
|
setverdict(pass);
|
||||||
}
|
}
|
||||||
|
@ -747,7 +747,7 @@ testcase TC_cbsp_write_rep_period_num() runs on cbsp_test_CT {
|
||||||
/* Count SMSCB messages during N=rep_number+2 repetition periods */
|
/* Count SMSCB messages during N=rep_number+2 repetition periods */
|
||||||
T.start(int2float(rep_period * (rep_number + 2)) * 1.883);
|
T.start(int2float(rep_period * (rep_number + 2)) * 1.883);
|
||||||
alt {
|
alt {
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(page, g_cbsp_msg_id, g_cbsp_ser_no))) {
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(f_page2rsl(page, g_cbsp_msg_id, g_cbsp_ser_no))) {
|
||||||
var float exp_period := int2float(rep_period) * 1.883;
|
var float exp_period := int2float(rep_period) * 1.883;
|
||||||
var float calc_period := T.read - last_time;
|
var float calc_period := T.read - last_time;
|
||||||
|
|
||||||
|
@ -829,7 +829,7 @@ testcase TC_cbsp_write_then_kill() runs on cbsp_test_CT {
|
||||||
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, num_bcast_req := 5, content:=pages, success_list:=?, fail_list:=omit);
|
f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, num_bcast_req := 5, content:=pages, success_list:=?, fail_list:=omit);
|
||||||
/* expect to receive it once on the BTS */
|
/* expect to receive it once on the BTS */
|
||||||
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr));
|
||||||
/* kill it, expecting non-empty completion list; success must be empty in case of CBS! */
|
/* kill it, expecting non-empty completion list; success must be empty in case of CBS! */
|
||||||
f_cbsp_kill(g_cbsp_msg_id, g_cbsp_ser_no, 0, cell_list, success_list:=omit, compl_list:=?, fail_list:=omit);
|
f_cbsp_kill(g_cbsp_msg_id, g_cbsp_ser_no, 0, cell_list, success_list:=omit, compl_list:=?, fail_list:=omit);
|
||||||
}
|
}
|
||||||
|
@ -874,7 +874,7 @@ testcase TC_cbsp_emerg_write_bts_cgi_dchan() runs on cbsp_test_CT {
|
||||||
timer T := 5.0;
|
timer T := 5.0;
|
||||||
T.start;
|
T.start;
|
||||||
alt {
|
alt {
|
||||||
[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr_RSL_DATA_REQ(dt.rsl_chan_nr, ?, ?))) -> value rx_rsl_ud {
|
[] IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr_RSL_DATA_REQ(dt.rsl_chan_nr, ?, ?))) -> value rx_rsl_ud {
|
||||||
var RSL_IE_Body l3_ie;
|
var RSL_IE_Body l3_ie;
|
||||||
if (f_rsl_find_ie(rx_rsl_ud.rsl, RSL_IE_L3_INFO, l3_ie) == false) {
|
if (f_rsl_find_ie(rx_rsl_ud.rsl, RSL_IE_L3_INFO, l3_ie) == false) {
|
||||||
setverdict(fail, "RSL DATA REQ without L3?");
|
setverdict(fail, "RSL DATA REQ without L3?");
|
||||||
|
@ -891,7 +891,7 @@ testcase TC_cbsp_emerg_write_bts_cgi_dchan() runs on cbsp_test_CT {
|
||||||
setverdict(pass);
|
setverdict(pass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[] IPA_RSL[0].receive { repeat; }
|
[] IPA_RSL[0][0].receive { repeat; }
|
||||||
[] T.timeout {
|
[] T.timeout {
|
||||||
setverdict(fail, "Waiting for APP INFO");
|
setverdict(fail, "Waiting for APP INFO");
|
||||||
}
|
}
|
||||||
|
@ -910,14 +910,14 @@ private function f_exp_rsl_etws(integer rsl_idx := 0, boolean enabled) runs on c
|
||||||
}
|
}
|
||||||
|
|
||||||
alt {
|
alt {
|
||||||
[] IPA_RSL[rsl_idx].receive(tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(t_RslChanNr_PCH_AGCH(0), tr_apdu))) {
|
[] IPA_RSL[rsl_idx][0].receive(tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(t_RslChanNr_PCH_AGCH(0), tr_apdu))) {
|
||||||
setverdict(pass);
|
setverdict(pass);
|
||||||
}
|
}
|
||||||
[] IPA_RSL[rsl_idx].receive(tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(?,?))) {
|
[] IPA_RSL[rsl_idx][0].receive(tr_ASP_RSL_UD(tr_RSL_OSMO_ETWS_CMD(?,?))) {
|
||||||
setverdict(fail, "Received unexpected OSMO_ETWS_CMD");
|
setverdict(fail, "Received unexpected OSMO_ETWS_CMD");
|
||||||
mtc.stop;
|
mtc.stop;
|
||||||
}
|
}
|
||||||
[] IPA_RSL[rsl_idx].receive { repeat; }
|
[] IPA_RSL[rsl_idx][0].receive { repeat; }
|
||||||
[] T.timeout {
|
[] T.timeout {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
setverdict(fail, "Timeout waiting for RSL_OSMO_ETWS_CMD (enable)");
|
setverdict(fail, "Timeout waiting for RSL_OSMO_ETWS_CMD (enable)");
|
||||||
|
@ -1055,7 +1055,7 @@ testcase TC_cbsp_status_q_bts_cgi() runs on cbsp_test_CT {
|
||||||
success_list:=cell_list, fail_list:=omit);
|
success_list:=cell_list, fail_list:=omit);
|
||||||
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
|
||||||
/* wait for first transmission */
|
/* wait for first transmission */
|
||||||
IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
|
IPA_RSL[0][0].receive(tr_ASP_RSL_UD(tr));
|
||||||
var template (present) CBSP_IE_NumBcastComplList compl_list := {
|
var template (present) CBSP_IE_NumBcastComplList compl_list := {
|
||||||
len := ?,
|
len := ?,
|
||||||
spare1_4 := ?,
|
spare1_4 := ?,
|
||||||
|
|
|
@ -160,15 +160,16 @@ runs on LCLS_MSC_ConnHdlr {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* helper function to create and connect a MSC_ConnHdlr component */
|
/* helper function to create and connect a MSC_ConnHdlr component */
|
||||||
/* FIXME: Why can't we use BSC_Tests.f_connect_andler() ?!? */
|
/* FIXME: Why can't we use BSC_Tests.f_connect_andler() ?!?
|
||||||
|
* TODO: allow connecting to TRX1..N, not only TRX0 */
|
||||||
private function f_connect_handler(inout LCLS_MSC_ConnHdlr vc_conn, integer bssap_idx := 0) runs on lcls_test_CT {
|
private function f_connect_handler(inout LCLS_MSC_ConnHdlr vc_conn, integer bssap_idx := 0) runs on lcls_test_CT {
|
||||||
connect(vc_conn:RAN, g_bssap[bssap_idx].vc_RAN:PROC);
|
connect(vc_conn:RAN, g_bssap[bssap_idx].vc_RAN:PROC);
|
||||||
connect(vc_conn:MGCP_PROC, vc_MGCP:MGCP_PROC);
|
connect(vc_conn:MGCP_PROC, vc_MGCP:MGCP_PROC);
|
||||||
connect(vc_conn:RSL, bts[0].rsl.vc_RSL:CLIENT_PT);
|
connect(vc_conn:RSL, bts[0][0].rsl.vc_RSL:CLIENT_PT);
|
||||||
connect(vc_conn:RSL_PROC, bts[0].rsl.vc_RSL:RSL_PROC);
|
connect(vc_conn:RSL_PROC, bts[0][0].rsl.vc_RSL:RSL_PROC);
|
||||||
if (isvalue(bts[1])) {
|
if (isvalue(bts[1][0])) {
|
||||||
connect(vc_conn:RSL1, bts[1].rsl.vc_RSL:CLIENT_PT);
|
connect(vc_conn:RSL1, bts[1][0].rsl.vc_RSL:CLIENT_PT);
|
||||||
connect(vc_conn:RSL1_PROC, bts[1].rsl.vc_RSL:RSL_PROC);
|
connect(vc_conn:RSL1_PROC, bts[1][0].rsl.vc_RSL:RSL_PROC);
|
||||||
}
|
}
|
||||||
connect(vc_conn:BSSAP, g_bssap[bssap_idx].vc_RAN:CLIENT);
|
connect(vc_conn:BSSAP, g_bssap[bssap_idx].vc_RAN:CLIENT);
|
||||||
connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT);
|
connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT);
|
||||||
|
|
|
@ -247,7 +247,7 @@ testcase TC_chan_act_to_vamos() runs on test_CT {
|
||||||
|
|
||||||
var RSL_Message rsl;
|
var RSL_Message rsl;
|
||||||
|
|
||||||
rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
|
rsl := f_exp_ipa_rx(tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
|
||||||
|
|
||||||
var RSL_IE_Body chan_mode_ie;
|
var RSL_IE_Body chan_mode_ie;
|
||||||
if (f_rsl_find_ie(rsl, RSL_IE_CHAN_MODE, chan_mode_ie) == false) {
|
if (f_rsl_find_ie(rsl, RSL_IE_CHAN_MODE, chan_mode_ie) == false) {
|
||||||
|
@ -266,7 +266,7 @@ testcase TC_chan_act_to_vamos() runs on test_CT {
|
||||||
}
|
}
|
||||||
|
|
||||||
var RslChannelNr chan_nr := rsl.ies[0].body.chan_nr;
|
var RslChannelNr chan_nr := rsl.ies[0].body.chan_nr;
|
||||||
f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23+10));
|
f_ipa_tx(ts_RSL_CHAN_ACT_ACK(chan_nr, 23+10));
|
||||||
|
|
||||||
f_sleep(1.0);
|
f_sleep(1.0);
|
||||||
f_lchan_ensure_established(BSCVTY, 0, 0, chan_nr);
|
f_lchan_ensure_established(BSCVTY, 0, 0, chan_nr);
|
||||||
|
|
Loading…
Reference in New Issue