bsc: Introduce test TC_srvcc_eutran_to_geran_src_sai

Related: SYS#5838
Change-Id: I186b9b9436bf82bcd54ca348df1e5e4b6424ca6e
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 44916c4..c599498 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1663,6 +1663,7 @@
 }
 
 function f_gen_handover_req(integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4",
+			    template (value) BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1),
 			    template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs := omit,
 			    template (omit) TestHdlrEncrParams enc := omit) return PDU_BSSAP {
 	var PDU_BSSAP ho_req;
@@ -1687,13 +1688,17 @@
 	if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla :=
 			valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));
-		ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla, oldToNewBSSIEs := oldToNewBSSIEs,
+		ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla,
+							    cell_id_source := cell_id_source,
+							    oldToNewBSSIEs := oldToNewBSSIEs,
 							    encryptionInformation := encryptionInformation,
 							    chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,
 							    kC128 := kc128));
 	} else {
 		var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(0,1));
-		ho_req := valueof(ts_BSSMAP_HandoverRequest(cic, omit, oldToNewBSSIEs := oldToNewBSSIEs,
+		ho_req := valueof(ts_BSSMAP_HandoverRequest(cic, omit,
+							    cell_id_source := cell_id_source,
+							    oldToNewBSSIEs := oldToNewBSSIEs,
 							    encryptionInformation := encryptionInformation,
 							    chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,
 							    kC128 := kc128));
@@ -6003,6 +6008,7 @@
 
 	BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_bsc, g_pars.sccp_addr_msc,
 				     f_gen_handover_req(aoip_tla := g_pars.host_aoip_tla,
+							cell_id_source := g_pars.cell_id_source,
 							oldToNewBSSIEs := oldToNewBSSIEs,
 							enc := g_pars.encr)));
 	BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND);
@@ -6186,6 +6192,19 @@
 	f_shutdown_helper();
 }
 
+/* Same as TC_srvcc_eutran_to_geran, but using SAI as serving Cell Identifier. SYS#5838 */
+testcase TC_srvcc_eutran_to_geran_src_sai() runs on test_CT {
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+	pars.last_used_eutran_plmn := '323454'O;
+	pars.cell_id_source := valueof(ts_CellID_SAI('123456'O, 300, 444));
+	f_tc_ho_into_this_bsc_main(pars);
+
+	f_ctrs_bsc_and_bts_add(0, "srvcc:attempted");
+	f_ctrs_bsc_and_bts_add(0, "srvcc:completed");
+	f_ctrs_bsc_and_bts_verify();
+	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));
@@ -11242,6 +11261,7 @@
 		execute( TC_ho_into_this_bsc_tla_v6() );
 	}
 	execute( TC_srvcc_eutran_to_geran() );
+	execute( TC_srvcc_eutran_to_geran_src_sai() );
 	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() );