aboutsummaryrefslogtreecommitdiffstats
path: root/bsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-06-21 02:14:27 +0200
committerlaforge <laforge@osmocom.org>2021-06-21 20:18:35 +0000
commitaf88d9dbf3f521280e22b5011ede3df5ffc417c3 (patch)
treea3f8b86f93dff141c5810d47c4cde671140e3789 /bsc
parent58ffceb4ecf0845f4701f5026793306036e2cf64 (diff)
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
Diffstat (limited to 'bsc')
-rw-r--r--bsc/BSC_Tests.ttcn50
1 files changed, 50 insertions, 0 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index a008bb82..2908ac82 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() );