neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27915 )
Change subject: bsc: TC_emerg_premption: check BSSMAP Clear Req cause ......................................................................
bsc: TC_emerg_premption: check BSSMAP Clear Req cause
On the first TCH, establish Layer 3 so that the BSC will issue a Clear Request at all.
Verify the cause value of the Clear Request.
Tear down the established Layer 3: clean up for the leak check.
Related: OS#5535 Depends: I20108f7b4769400b89b7b0d65c8dab883bf87c46 (osmo-bsc) Change-Id: Ib13be73119cfc96712f32899c02e655e1751d547 --- M bsc/BSC_Tests.ttcn 1 file changed, 21 insertions(+), 0 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve neels: Looks good to me, approved pespin: 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 59b87dd..5779990 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -9029,6 +9029,12 @@ var octetstring l3 := '00010203040506'O; f_ipa_tx(0, ts_RSL_EST_IND(first_tch, valueof(ts_RslLinkID_DCCH(0)), l3));
+ /* Accept BSSAP conn, so we get to test the Clear Request cause */ + var BSSAP_N_CONNECT_ind rx_c_ind; + BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind; + var integer sccp_conn_id := rx_c_ind.connectionId; + BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId)); + /* Send Channel request for emegergency call */ f_ipa_tx(0, ts_RSL_CHAN_RQD('A5'O, 23));
@@ -9036,6 +9042,15 @@ f_expect_chan_rel(0, first_tch, expect_rr_chan_rel := true, expect_rll_rel_req := false, expect_rr_cause := GSM48_RR_CAUSE_PREMPTIVE_REL);
+ /* Also expect a BSSMAP Clear Request with PREEMPTION */ + var BSSAP_N_DATA_ind rx_clear_req; + const myBSSMAP_Cause preemption := GSM0808_CAUSE_PREEMPTION; + BSSAP.receive(tr_BSSAP_DATA_ind(sccp_conn_id, tr_BSSMAP_ClearRequest)) -> value rx_clear_req; + log("XXX ", rx_clear_req); + if (rx_clear_req.userData.pdu.bssmap.clearRequest.cause.causeValue != int2bit(enum2int(preemption), 7)) { + setverdict(fail, "BSSMAP Clear Request: expected cause PREEMPTION"); + } + /* Expect the BSC to send activate/assign the channel for the emergency call */ rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); if (first_tch != rx_rsl.ies[0].body.chan_nr) { @@ -9044,6 +9059,12 @@ f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(first_tch, 33)); rx_rsl := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));
+ /* complete the BSSMAP Clear to satisfy the conn leak check */ + BSSAP.send(ts_BSSAP_DATA_req(sccp_conn_id, ts_BSSMAP_ClearCommand(enum2int(preemption)))); + BSSAP.receive(tr_BSSAP_DATA_ind(sccp_conn_id, tr_BSSMAP_ClearComplete)) { + BSSAP.send(ts_BSSAP_DISC_req(sccp_conn_id, 0)); + } + f_shutdown_helper(); }