pespin has uploaded this change for review.

View Change

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");

To view, visit change 28609. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I05da2f61d26a1124d30793184d81aabf212cddda
Gerrit-Change-Number: 28609
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-MessageType: newchange