diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-01-28 15:35:07 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-01-29 21:35:12 +0000 |
commit | 91d54a569c59ec72007a80524bdfdd5b7779e7b6 (patch) | |
tree | ef6577626fa353f0ac717589fb3188561a7e31ce | |
parent | 6ff76ea56972d6e1ed81cfc2564d30d415244969 (diff) |
bsc: reduce code duplication by introducing f_expect_chan_rel()
The handling of channel release is copy+pasted, let's introduce
a shared function.
Change-Id: If74b0838187f60004b7daf6176db259af511bf87
-rw-r--r-- | bsc/BSC_Tests.ttcn | 111 |
1 files changed, 37 insertions, 74 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 87150dbb..c7b5a8ff 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -606,11 +606,44 @@ testcase TC_chan_rel_conn_fail() runs on test_CT { setverdict(pass); } +function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr, boolean flush := true, + boolean handle_rll_rel := true) runs on test_CT { + + var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); + if (flush) { + /* Clear the queue, it might still contain stuff like IMMEDIATE ASSIGN */ + IPA_RSL[bts_nr].clear; + } + alt { + /* ignore DEACTIVATE SACCH (if any) */ + [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, + tr_RSL_DEACT_SACCH(rsl_chan_nr))) { + repeat; + } + /* acknowledge RLL release (if any)*/ + [handle_rll_rel] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, + tr_RSL_REL_REQ(rsl_chan_nr, ?))) { + /* FIXME: Why are we getting this for LinkID SACCH? */ + f_ipa_tx(0, ts_RSL_REL_CONF(rsl_chan_nr, main_dcch)); + repeat; + } + /* Expect RF channel release from BSC on Abis */ + [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, + tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { + /* respond with CHAN REL ACK */ + f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(rsl_chan_nr)); + } + /* ignore any user data */ + [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_MsgTypeR(?))) { + repeat; + } + } +} + /* Test behavior of channel release after hard Clear Command from MSC */ testcase TC_chan_rel_hard_clear() runs on test_CT { var BSSAP_N_DATA_ind rx_di; var DchanTuple dt; - var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); f_init(1); f_bssap_reset(); @@ -627,36 +660,13 @@ testcase TC_chan_rel_hard_clear() runs on test_CT { BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0)); } - /* Clear the queue, it might still contain stuff like IMMEDIATE ASSIGN */ - IPA_RSL[0].clear; - alt { - /* ignore DEACTIVATE SACCH (if any) */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_DEACT_SACCH(dt.rsl_chan_nr))) { - repeat; - } - /* acknowledge RLL release (if any)*/ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_REL_REQ(dt.rsl_chan_nr, ?))) { - /* FIXME: Why are we getting this for LinkID SACCH? */ - f_ipa_tx(0, ts_RSL_REL_CONF(dt.rsl_chan_nr, main_dcch)); - repeat; - } - /* Expect RF channel release from BSC on Abis */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { - /* respond with CHAN REL ACK */ - f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr)); - } - } - + f_expect_chan_rel(0, dt.rsl_chan_nr); setverdict(pass); } /* Test behavior of channel release after hard RLSD from MSC */ testcase TC_chan_rel_hard_rlsd() runs on test_CT { var DchanTuple dt; - var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); f_init(1); f_bssap_reset(); @@ -666,36 +676,13 @@ testcase TC_chan_rel_hard_rlsd() runs on test_CT { /* release the SCCP connection */ BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0)); - /* Clear the queue, it might still contain stuff like IMMEDIATE ASSIGN */ - IPA_RSL[0].clear; - alt { - /* ignore DEACTIVATE SACCH (if any) */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_DEACT_SACCH(dt.rsl_chan_nr))) { - repeat; - } - /* acknowledge RLL release (if any)*/ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_REL_REQ(dt.rsl_chan_nr, ?))) { - /* FIXME: Why are we getting this for LinkID SACCH? */ - f_ipa_tx(0, ts_RSL_REL_CONF(dt.rsl_chan_nr, main_dcch)); - repeat; - } - /* Expect RF channel release from BSC on Abis */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { - /* respond with CHAN REL ACK */ - f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr)); - } - } - + f_expect_chan_rel(0, dt.rsl_chan_nr); setverdict(pass); } /* Test behavior of channel release after BSSMAP RESET from MSC */ testcase TC_chan_rel_a_reset() runs on test_CT { var DchanTuple dt; - var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); f_init(1); f_bssap_reset(); @@ -712,31 +699,7 @@ testcase TC_chan_rel_a_reset() runs on test_CT { [] BSSAP.receive(tr_BSSAP_DISC_ind(dt.sccp_conn_id, ?, ?)) { } } - alt { - /* ignore DEACTIVATE SACCH (if any) */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_DEACT_SACCH(dt.rsl_chan_nr))) { - repeat; - } - /* acknowledge RLL release (if any)*/ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_REL_REQ(dt.rsl_chan_nr, ?))) { - /* FIXME: Why are we getting this for LinkID SACCH? */ - f_ipa_tx(0, ts_RSL_REL_CONF(dt.rsl_chan_nr, main_dcch)); - repeat; - } - /* Expect RF channel release from BSC on Abis */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, - tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) { - /* respond with CHAN REL ACK */ - f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(dt.rsl_chan_nr)); - } - /* ignore any user data */ - [] IPA_RSL[0].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_MsgTypeR(?))) { - repeat; - } - } - + f_expect_chan_rel(0, dt.rsl_chan_nr); setverdict(pass); } |