From af88d9dbf3f521280e22b5011ede3df5ffc417c3 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 21 Jun 2021 02:14:27 +0200 Subject: [PATCH] bsc: add intra-BSC handover tests with encryption In f_tc_ho_int(), verify encryption information for the handover target's chan act. Add test cases calling f_tc_ho_int() with various A5/n encryption modes. Related: SYS#5324 Change-Id: Iaab26c708c106a61b762234d42ed9a52cdc2998c --- bsc/BSC_Tests.ttcn | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index a008bb824..2908ac824 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -4715,6 +4715,11 @@ private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr { /* Check the amount of MGCP transactions is still consistant with the * test expectation */ f_check_mgcp_expectations() + + /* Ensure the Channel Activation for the new channel contained the right encryption params. as_handover() set + * g_chan_nr to the new lchan that was handed over to. It lives in bts 1, so look it up at RSL1_PROC. */ + f_verify_encr_info(f_rslem_get_last_act(RSL1_PROC, 0, g_chan_nr)); + f_sleep(0.5); } @@ -4741,6 +4746,47 @@ testcase TC_ho_int() runs on test_CT { f_shutdown_helper(); } +function f_tc_ho_int_a5(OCT1 encr_alg) runs on test_CT { + var MSC_ConnHdlr vc_conn; + var TestHdlrParams pars := f_gen_test_hdlr_pars(); + pars.encr := valueof(t_EncrParams(encr_alg, f_rnd_octstring(8), f_rnd_octstring(16))); + + f_init(2, true); + f_sleep(1.0); + + f_ctrs_bsc_and_bts_init(); + + vc_conn := f_start_handler(refers(f_tc_ho_int), pars); + 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(); + f_shutdown_helper(); +} + +testcase TC_ho_int_a5_0() runs on test_CT { + f_tc_ho_int_a5('01'O); +} + +testcase TC_ho_int_a5_1() runs on test_CT { + f_tc_ho_int_a5('02'O); +} + +testcase TC_ho_int_a5_3() runs on test_CT { + f_tc_ho_int_a5('08'O); +} + +testcase TC_ho_int_a5_4() runs on test_CT { + f_tc_ho_int_a5('10'O); +} + /* intra-BSC hand-over with CONNection FAILure and cause Radio Link Failure: check RR release cause */ private function f_tc_ho_int_radio_link_failure(charstring id) runs on MSC_ConnHdlr { g_pars := f_gen_test_hdlr_pars(); @@ -9059,6 +9105,10 @@ control { execute( TC_err_84_unknown_msg() ); execute( TC_ho_int() ); + execute( TC_ho_int_a5_0() ); + execute( TC_ho_int_a5_1() ); + execute( TC_ho_int_a5_3() ); + execute( TC_ho_int_a5_4() ); execute( TC_ho_int_radio_link_failure() ); execute( TC_ho_out_of_this_bsc() );