pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28609 )
Change subject: bsc: cbsp: Expect one Reset/Failure Ind for each Bcast Msg Type ......................................................................
bsc: cbsp: Expect one Reset/Failure Ind for each Bcast Msg Type
As described in 3GPP TS 48.049:
7.8.2: "The RESTART message is sent once per broadcast message type as indicated by the Broadcast Message Type IE." 7.9.2: "The FAILURE message is sent once per broadcast message type as indicated by the Broadcast Message Type IE."
Related: osmo-bsc.git Change-Id I6668b55868cf534a3b59da5e11542abb8131d604 Related: SYS#5910 Change-Id: I05da2f61d26a1124d30793184d81aabf212cddda --- M bsc/BSC_Tests_CBSP.ttcn 1 file changed, 50 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/09/28609/1
diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn index 1e7421e..0a30b5e 100644 --- a/bsc/BSC_Tests_CBSP.ttcn +++ b/bsc/BSC_Tests_CBSP.ttcn @@ -546,7 +546,10 @@ * (becomes unavailable). LAC_CI RESTART Ind should be sent when the TRX becomes * unlocked again. */ testcase TC_cbsp_cell_rflock_failure_restart() runs on cbsp_test_CT { - var template CBSP_PDU rx; + var template CBSP_PDU rx_cbs; + var template CBSP_PDU rx_emerg; + var boolean received_cbs := false; + var boolean received_emerg := false; var template (present) CBSP_FailureListItem fli_exp; var template (present) BSSMAP_FIELD_CellIdentificationList cil_exp;
@@ -561,26 +564,49 @@ CBSP_CAUSE_CB_NOT_OPERATIONAL), CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0), CBSP_CAUSE_CB_NOT_OPERATIONAL)); - rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS); + rx_cbs := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS); + rx_emerg := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_EMERG); alt { - [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) { - setverdict(pass); + [not received_cbs] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_cbs)) { + received_cbs := true; + if (not received_cbs or not received_emerg) { + repeat; + } + } + [not received_emerg] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_emerg)) { + received_emerg := true; + if (not received_cbs or not received_emerg) { + repeat; + } } [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], ?)) { setverdict(fail, "Received unexpected CBSP"); mtc.stop; } } + setverdict(pass);
/* Unlock the TRX, CBCH should become available and BSC send RESTART */ f_ctrl_set(IPA_CTRL, "bts.0.trx.0.rf_locked", "0"); /* Expect receiving either CGI or LAC+CI: */ cil_exp := (ts_BSSMAP_CIL_CGI({bssmap_cgi(mp_cgi_bts0)}), ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)})); - rx := tr_CBSP_RESTART(cil_exp, CBSP_BC_MSGT_CBS, ?); + rx_cbs := tr_CBSP_RESTART(cil_exp, CBSP_BC_MSGT_CBS, ?); + rx_emerg := tr_CBSP_RESTART(cil_exp, CBSP_BC_MSGT_EMERG, ?); + received_cbs := false; + received_emerg := false; alt { - [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) { - setverdict(pass); + [not received_cbs] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_cbs)) { + received_cbs := true; + if (not received_cbs or not received_emerg) { + repeat; + } + } + [not received_emerg] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_emerg)) { + received_emerg := true; + if (not received_cbs or not received_emerg) { + repeat; + } } [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], ?)) { setverdict(fail, "Received unexpected CBSP"); @@ -593,7 +619,10 @@
/* Test if a LAC_CI FAILURE Ind is sent when conn of TRX holding the CBCH goes down. */ testcase TC_cbsp_cell_rsl_down_failure() runs on cbsp_test_CT { - var template CBSP_PDU rx; + var template CBSP_PDU rx_cbs; + var template CBSP_PDU rx_emerg; + var boolean received_cbs := false; + var boolean received_emerg := false; var template (present) CBSP_FailureListItem fli_exp;
g_pars := valueof(ts_CBSP_Pars_default(false, 0, 0)); @@ -607,10 +636,20 @@ CBSP_CAUSE_CB_NOT_OPERATIONAL), CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0), CBSP_CAUSE_CB_NOT_OPERATIONAL)); - rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS); + rx_cbs := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS); + rx_emerg := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_EMERG); alt { - [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) { - setverdict(pass); + [not received_cbs] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_cbs)) { + received_cbs := true; + if (not received_cbs or not received_emerg) { + repeat; + } + } + [not received_emerg] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx_emerg)) { + received_emerg := true; + if (not received_cbs or not received_emerg) { + repeat; + } } [] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], ?)) { setverdict(fail, "Received unexpected CBSP");