diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2021-12-16 18:17:49 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2022-01-23 00:13:51 +0100 |
commit | 6289af1197126cb2bae27d5ae84743689f46268b (patch) | |
tree | f4ddd74e14a7985ee5873f55cab14cdf4b4785fd | |
parent | 189974920d6c39c5e215f815920fe71fe52f26e1 (diff) |
bsc: f_perform_clear: ack all DLCX and RSL REL REQ
ACK any MGCP DLCX or RLL REL REQ during f_perform_clear(), which makes
it more universally applicable to invoke at the end of a test.
Related: OS#5337
Change-Id: Ie5b77c266a5d8f47edd187c474df281a799a81de
-rw-r--r-- | bsc/BSC_Tests.ttcn | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index d68cba25..34d3d036 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -7791,9 +7791,27 @@ runs on MSC_ConnHdlr { } } +private altstep as_mgcp_ack_all_dlcx() runs on MSC_ConnHdlr { + var MgcpCommand mgcp_cmd; + [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd { + MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id)); + repeat; + } +} + +private altstep as_rsl_ack_all_rel_req() runs on MSC_ConnHdlr { + var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); + [] RSL.receive(tr_RSL_REL_REQ(g_chan_nr, ?)) { + RSL.send(ts_RSL_REL_CONF(g_chan_nr, main_dcch)); + repeat; + } +} + friend function f_perform_clear(RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC, template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE) runs on MSC_ConnHdlr { + var default ack_dlcx := activate(as_mgcp_ack_all_dlcx()); + var default ack_rel_req := activate(as_rsl_ack_all_rel_req()); f_logp(BSCVTY, "MSC instructs BSC to clear channel"); BSSAP.send(ts_BSSMAP_ClearCommand(0)); interleave { @@ -7814,6 +7832,8 @@ runs on MSC_ConnHdlr { f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt); } } + deactivate(ack_dlcx); + deactivate(ack_rel_req); } private function f_perform_compl_l3(RSL_DCHAN_PT rsl_pt, RSLEM_PROC_PT rsl_proc_pt, |