From a8ef3bea24d764b1cb561080838ab4acf58c4a8d Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Wed, 16 Feb 2022 16:21:17 +0100 Subject: [PATCH] bsc: Introduce test TC_srvcc_eutran_to_geran_src_sai Related: SYS#5838 Change-Id: I186b9b9436bf82bcd54ca348df1e5e4b6424ca6e --- bsc/BSC_Tests.ttcn | 24 ++++++++++++++++++++++-- bsc/MSC_ConnectionHandler.ttcn | 6 ++++-- library/BSSMAP_Templates.ttcn | 14 +++++++++++++- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 44916c460..c599498db 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -1663,6 +1663,7 @@ function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0, c } 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 @@ function f_gen_handover_req(integer bssap_idx := 0, charstring aoip_tla := "1.2. 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 @@ private function f_ho_into_this_bsc(charstring id, template (omit) BSSMAP_oldToN 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 @@ testcase TC_srvcc_eutran_to_geran_forbid_fast_return() runs on test_CT { 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 @@ control { 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() ); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index c2b49c873..e492ee03f 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -669,7 +669,8 @@ type record TestHdlrParams { 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 + uint3_t expect_tsc optional, + BSSMAP_IE_CellIdentifier cell_id_source }; /* Note: Do not use valueof() to get a value of this template, use @@ -708,7 +709,8 @@ template (value) TestHdlrParams t_def_TestHdlrPars := { last_used_eutran_plmn := omit, exp_fast_return := false, expect_channel_mode_modify := false, - expect_tsc := omit + expect_tsc := omit, + cell_id_source := valueof(ts_CellID_LAC_CI(1, 1)) } function f_create_chan_and_exp(template (present) PDU_BSSAP exp_l3_compl := ?) diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn index d497d2560..0e34b3565 100644 --- a/library/BSSMAP_Templates.ttcn +++ b/library/BSSMAP_Templates.ttcn @@ -321,6 +321,7 @@ template BSSMAP_IE_CellIdentifier ts_BSSMAP_IE_CellID := { type uint16_t BssmapLAC; type uint16_t BssmapCI; +type uint16_t BssmapSAC; template BSSMAP_IE_CellIdentifier ts_CellId_CGI(hexstring mcc, hexstring mnc, BssmapLAC lac, BssmapCI ci) modifies ts_BSSMAP_IE_CellID := { @@ -329,7 +330,7 @@ modifies ts_BSSMAP_IE_CellID := { } } -template BSSMAP_IE_CellIdentifier ts_CellID_LAC_CI(BssmapLAC lac, BssmapCI ci) +template (value) BSSMAP_IE_CellIdentifier ts_CellID_LAC_CI(BssmapLAC lac, BssmapCI ci) modifies ts_BSSMAP_IE_CellID := { cellIdentification := { cI_LAC_CI := { @@ -353,6 +354,17 @@ modifies ts_BSSMAP_IE_CellID := { } } +template (value) BSSMAP_IE_CellIdentifier ts_CellID_SAI(OCT3 mcc_mnc, BssmapLAC lac, BssmapSAC sac) +modifies ts_BSSMAP_IE_CellID := { + cellIdentification := { + cI_SAI := { + mcc_mnc := mcc_mnc, + lac := int2oct(lac, 2), + sac := int2oct(sac, 2) + } + } +} + template BSSMAP_IE_Layer3Information ts_BSSMAP_IE_L3Info(octetstring l3info) := { elementIdentifier := '17'O,