cbc: Test sending Unknown TAI List to osmo-cbc

Related: OS#4945
Change-Id: I7d8cf5e6498d03ad340b8f843ce93a20171e9fca
This commit is contained in:
Pau Espin 2022-08-02 13:17:47 +02:00
parent db247f8318
commit b1a83fbb6d
3 changed files with 71 additions and 3 deletions

View File

@ -160,6 +160,7 @@ private function f_init_pars_mme(charstring mme_host, integer mme_sbcap_port,
start_fn := refers(f_MME_ConnHdlr_start_fn_void),
exp_cbs_msg := omit,
write_replace_warning_ind_cause := omit,
write_repl_unknown_TAIs := omit,
bcast_cell_id_list := omit
};
return pars;
@ -498,6 +499,25 @@ testcase TC_ecbe_create_delete_mme_indication() runs on test_CT {
f_shutdown_helper();
}
/* Create and delete message with MME available. MME reports
* Write-Replace-Response with Unknown TAI IE.
*/
testcase TC_ecbe_create_delete_mme_unknown_tai() runs on test_CT {
var template (value) List_of_TAIs write_repl_unknown_TAIs;
var template (value) CBS_Message msg := t_CBSmsg(48, 16752);
f_init(num_bsc := 0, num_mme := 1);
write_repl_unknown_TAIs := {{ts_SBCAP_TAI(f_enc_mcc_mnc('901'H, '70'H), 1234)}};
g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
g_pars_MME[0].exp_cbs_msg := valueof(msg);
g_pars_MME[0].write_replace_warning_ind_cause := SBC_AP_Cause_message_accepted;
g_pars_MME[0].write_repl_unknown_TAIs := valueof(write_repl_unknown_TAIs);
f_start();
f_create_and_delete(valueof(msg));
f_shutdown_helper();
}
/* Create and delete message with both BSC and MME available */
testcase TC_ecbe_create_delete_bsc_and_mme() runs on test_CT {
f_init(num_bsc := 1, num_mme := 1);
@ -585,6 +605,7 @@ control {
execute( TC_ecbe_create_delete_ci() );
execute( TC_ecbe_create_delete_lai() );
execute( TC_ecbe_create_delete_mme_indication() );
execute( TC_ecbe_create_delete_mme_unknown_tai() );
execute( TC_ecbe_create_delete_bsc_and_mme() );
execute( TC_ecbe_create_delete_bsc_server() );
execute( TC_ecbe_create_delete_mme_server() );

View File

@ -45,6 +45,7 @@ type record MME_ConnHdlrPars {
void_fn start_fn,
CBS_Message exp_cbs_msg optional,
SBC_AP_Cause write_replace_warning_ind_cause optional,
List_of_TAIs write_repl_unknown_TAIs optional,
CellId_Broadcast_List bcast_cell_id_list optional
};
@ -64,9 +65,16 @@ function f_MME_ConnHdlr_main(charstring id, MME_ConnHdlrPars pars) runs on MME_C
function f_sbcap_tx_write_replace_warn_resp(CBS_Message msg, integer idx := 0)
runs on MME_ConnHdlr {
var template (value) SBC_AP_PDU tx;
/* TODO: pass Unknown Tracking Area List as parameter above (omit by default) */
tx := ts_SBCAP_WRITE_WARNING_RESP(int2bit(msg.msg_id, 16),
int2bit(msg.ser_nr, 16));
if (ispresent(g_pars.write_repl_unknown_TAIs)) {
tx := ts_SBCAP_WRITE_WARNING_RESP_UNKNOWN_TAI(
int2bit(msg.msg_id, 16),
int2bit(msg.ser_nr, 16),
SBC_AP_Cause_message_accepted,
g_pars.write_repl_unknown_TAIs);
} else {
tx := ts_SBCAP_WRITE_WARNING_RESP(int2bit(msg.msg_id, 16),
int2bit(msg.ser_nr, 16));
}
f_SBC_AP_send(tx, idx);
}

View File

@ -18,6 +18,13 @@ template (value) EUTRAN_CGI ts_SBCAP_ECGI(PLMNidentity plmn_id := '09F107'O, int
iE_Extensions := omit
}
/* 3GPP TS 36.413 9.2.3.16 */
template (value) TAI ts_SBCAP_TAI(PLMNidentity plmn_id := '09F107'O, uint16_t tac := 1) := {
pLMNidentity := plmn_id,
tAC := int2oct(tac, 2),
iE_Extensions := omit
}
/* 3GPP TS 36.413 9.2.1.54 */
template (value) CellId_Broadcast_List_Item ts_SBCAP_CellId_Broadcast_List_Item(
template (value) EUTRAN_CGI ecgi := ts_SBCAP_ECGI()) := {
@ -273,6 +280,38 @@ ts_SBCAP_WRITE_WARNING_RESP(template (value) BIT16 p_msg_id, template (value) BI
}
}
template (value) SBC_AP_PDU
ts_SBCAP_WRITE_WARNING_RESP_UNKNOWN_TAI(template (value) BIT16 p_msg_id, template (value) BIT16 p_ser_nr,
template (value) SBC_AP_Cause cause := SBC_AP_Cause_message_accepted,
template (value) List_of_TAIs unknown_tai_list := {{ts_SBCAP_TAI}})
modifies ts_SBCAP_WRITE_WARNING_RESP := {
successfulOutcome := {
value_ := {
write_Replace_Warning_Response := {
protocolIEs := {
{
id := SBC_AP_Constants.id_Message_Identifier,
criticality := reject,
value_ := { Message_Identifier := p_msg_id }
}, {
id := SBC_AP_Constants.id_Serial_Number,
criticality := reject,
value_ := { Serial_Number := p_ser_nr }
}, {
id := SBC_AP_Constants.id_Cause,
criticality := reject,
value_ := { Cause := enum2int(valueof(cause)) }
}, {
id := SBC_AP_Constants.id_Unknown_Tracking_Area_List,
criticality := ignore,
value_ := { List_of_TAIs := unknown_tai_list }
}
}
}
}
}
}
template (present) SBC_AP_PDU
tr_SBCAP_STOP_WARNING(template (present) BIT16 p_msg_id, template (present) BIT16 p_ser_nr) := {
initiatingMessage := {