pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27225 )
Change subject: bsc: Introduce test TC_srvcc_eutran_to_geran_src_sai ......................................................................
bsc: Introduce test TC_srvcc_eutran_to_geran_src_sai
Related: SYS#5838 Change-Id: I186b9b9436bf82bcd54ca348df1e5e4b6424ca6e --- M bsc/BSC_Tests.ttcn M bsc/MSC_ConnectionHandler.ttcn M library/BSSMAP_Templates.ttcn 3 files changed, 39 insertions(+), 5 deletions(-)
Approvals: daniel: Looks good to me, approved osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified
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() ); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index c2b49c8..e492ee0 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -669,7 +669,8 @@ 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 @@ 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 d497d25..0e34b35 100644 --- a/library/BSSMAP_Templates.ttcn +++ b/library/BSSMAP_Templates.ttcn @@ -321,6 +321,7 @@
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 @@ } }
-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 @@ } }
+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,