bsc: Validate new 'srvcc fast-return' VTY command

Related: SYS#5337
Change-Id: I227abc3793255e3916eba0dbc1460f46ec9926fe
This commit is contained in:
Pau Espin 2021-06-15 17:29:43 +02:00 committed by pespin
parent c555be597f
commit 9ae36d5e8c
2 changed files with 61 additions and 6 deletions

View File

@ -5226,11 +5226,15 @@ private function f_ho_into_this_bsc(charstring id, template (omit) BSSMAP_oldToN
}
private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr {
var template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE;
var template PDU_ML3_NW_MS exp_rr_rel_tmpl;
var template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs := omit;
if (not istemplatekind(g_pars.last_used_eutran_plmn, "omit")) {
oldToNewBSSIEs := f_ts_BSSMAP_oldToNewBSSIEs(ts_BSSMAP_LastUsedEUTRANPLMNId(g_pars.last_used_eutran_plmn));
}
if (g_pars.exp_fast_return) {
exp_rr_rel_tmpl := tr_RRM_RR_RELEASE_CellSelectInd;
} else {
exp_rr_rel_tmpl := tr_RRM_RR_RELEASE;
}
f_ho_into_this_bsc(id, oldToNewBSSIEs);
f_perform_clear(RSL, exp_rr_rel_tmpl);
@ -5278,10 +5282,26 @@ testcase TC_ho_into_this_bsc_tla_v6() runs on test_CT {
testcase TC_srvcc_eutran_to_geran() runs on test_CT {
var TestHdlrParams pars := f_gen_test_hdlr_pars();
pars.last_used_eutran_plmn := '323454'O;
pars.exp_fast_return := true;
f_tc_ho_into_this_bsc_main(pars);
f_shutdown_helper();
}
/* Same as TC_srvcc_eutran_to_geran, but test explicitly forbiding fast return
on the BTS. As a result, RR Release shouldn't contain the EUTRAN neighbor
list when the channel is released. */
testcase TC_srvcc_eutran_to_geran_forbid_fast_return() runs on test_CT {
f_init_vty();
f_vty_allow_srvcc_fast_return(true, 0)
var TestHdlrParams pars := f_gen_test_hdlr_pars();
pars.last_used_eutran_plmn := '323454'O;
pars.exp_fast_return := false;
f_tc_ho_into_this_bsc_main(pars);
f_vty_allow_srvcc_fast_return(false, 0);
f_shutdown_helper();
}
private function f_tc_srvcc_eutran_to_geran_ho_out(charstring id) runs on MSC_ConnHdlr {
var template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs;
oldToNewBSSIEs := f_ts_BSSMAP_oldToNewBSSIEs(ts_BSSMAP_LastUsedEUTRANPLMNId(g_pars.last_used_eutran_plmn));
@ -5289,15 +5309,16 @@ private function f_tc_srvcc_eutran_to_geran_ho_out(charstring id) runs on MSC_Co
f_ho_out_of_this_bsc(oldToNewBSSIEs);
setverdict(pass);
}
/* First, HO into BSC from EUTRAN (SRVCC): HO Request contains "Old BSS to New
BSS Information" IE with "Last Used E-UTRAN PLMN Id".
Second, HO to another BSC: HO Required contains "Old BSS to New BSS Information"
IE with "Last Used E-UTRAN PLMN Id" from first step. */
testcase TC_srvcc_eutran_to_geran_ho_out() runs on test_CT {
private function f_tc_srvcc_eutran_to_geran_ho_out_main(boolean disable_fast_return)
runs on test_CT {
var MSC_ConnHdlr vc_conn;
var TestHdlrParams pars := f_gen_test_hdlr_pars();
f_init(1, true);
if (disable_fast_return) {
f_vty_allow_srvcc_fast_return(true, 0);
}
f_sleep(1.0);
f_ctrs_bsc_and_bts_init();
@ -5316,9 +5337,26 @@ testcase TC_srvcc_eutran_to_geran_ho_out() runs on test_CT {
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:attempted", 1);
f_ctrs_bsc_and_bts_add(0, "interbsc_ho_out:completed", 1);
f_ctrs_bsc_and_bts_verify();
if (disable_fast_return) {
f_vty_allow_srvcc_fast_return(false, 0);
}
f_shutdown_helper();
}
/* First, HO into BSC from EUTRAN (SRVCC): HO Request contains "Old BSS to New
BSS Information" IE with "Last Used E-UTRAN PLMN Id".
Second, HO to another BSC: HO Required contains "Old BSS to New BSS Information"
IE with "Last Used E-UTRAN PLMN Id" from first step. */
testcase TC_srvcc_eutran_to_geran_ho_out() runs on test_CT {
f_tc_srvcc_eutran_to_geran_ho_out_main(false);
}
/* Validate subsequent intra-GSM-HO works the same (with OldBSSToNewBSSInfo IE)
* independently of fast-reture allowed/forbidden in local BTS */
testcase TC_srvcc_eutran_to_geran_ho_out_forbid_fast_return() runs on test_CT {
f_tc_srvcc_eutran_to_geran_ho_out_main(true);
}
private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {
var RslChannelNr new_chan_nr := valueof(t_RslChanNr0(1, RSL_CHAN_NR_Bm_ACCH));
f_rslem_register(0, new_chan_nr);
@ -7306,6 +7344,19 @@ private function f_vty_allow_emerg_bts(boolean allow, integer bts_nr) runs on te
f_vty_transceive(BSCVTY, "exit");
}
/* Allow/Forbid Fast Return after SRVCC on a given BTS via VTY */
private function f_vty_allow_srvcc_fast_return(boolean allow, integer bts_nr) runs on test_CT {
f_vty_enter_cfg_bts(BSCVTY, bts_nr);
if (allow) {
f_vty_transceive(BSCVTY, "srvcc fast-return allow");
} else {
f_vty_transceive(BSCVTY, "srvcc fast-return forbid");
}
f_vty_transceive(BSCVTY, "exit");
f_vty_transceive(BSCVTY, "exit");
f_vty_transceive(BSCVTY, "exit");
}
/* Begin assignmet procedure and send an EMERGENCY SETUP (RR) */
private function f_assignment_emerg_setup() runs on MSC_ConnHdlr {
var PDU_ML3_MS_NW emerg_setup;
@ -8950,6 +9001,8 @@ control {
}
execute( TC_srvcc_eutran_to_geran() );
execute( TC_srvcc_eutran_to_geran_ho_out() );
execute( TC_srvcc_eutran_to_geran_forbid_fast_return() );
execute( TC_srvcc_eutran_to_geran_ho_out_forbid_fast_return() );
execute( TC_ho_in_fail_msc_clears() );
execute( TC_ho_in_fail_msc_clears_after_ho_detect() );
execute( TC_ho_in_fail_no_detect() );

View File

@ -590,6 +590,7 @@ type record TestHdlrParams {
TestHdlrParamsMSCPool mscpool,
boolean media_mgw_offer_ipv6,
OCT3 last_used_eutran_plmn optional,
boolean exp_fast_return, /* RR Release expected to contain CellSelectInd ? */
boolean expect_channel_mode_modify,
uint3_t expect_tsc optional
};
@ -628,6 +629,7 @@ template (value) TestHdlrParams t_def_TestHdlrPars := {
},
media_mgw_offer_ipv6 := true,
last_used_eutran_plmn := omit,
exp_fast_return := false,
expect_channel_mode_modify := false,
expect_tsc := omit
}