From 69c1c261bad1a369de6d8868cd09a7a7cfc0076e Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 13 Dec 2017 21:02:08 +0100 Subject: [PATCH 1/2] BSC_Tests: Make as_Tguard() more robust (don't abort after RESET) Change-Id: Ia5a39d372c1b7ec8267446f2762aabc600667775 --- bsc/BSC_Tests.ttcn | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 2e48e0bec..aa8150a1e 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -163,6 +163,7 @@ altstep as_Tguard() runs on test_CT { [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind { BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress, ts_BSSMAP_ResetAck)); + repeat; } } From d693965455dd51f4989dbc0bc00eed847e637e02 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 13 Dec 2017 21:02:46 +0100 Subject: [PATCH 2/2] BSC_Tests: remove copy+paste CHAN RQD -> CHAN ACT -> CHAN ACK ... and replace it with a function Change-Id: Id75cc92ddf1c1833c892a7bfa77d6561fd0f3679 --- bsc/BSC_Tests.ttcn | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index aa8150a1e..14ba97d1b 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -255,10 +255,7 @@ testcase TC_chan_act_ack_noest() runs on test_CT { f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ - f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23)); - rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); - var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr; - f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23)); + var RslChannelNr chan_nr := f_chreq_act_ack(); /* expect BSC to disable the channel again if there's no RLL EST IND */ rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX); @@ -274,10 +271,7 @@ testcase TC_chan_act_ack_est_ind_noreply() runs on test_CT { f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ - f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23)); - rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); - var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr; - f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23)); + var RslChannelNr chan_nr := f_chreq_act_ack(); var octetstring l3 := '00010203040506'O f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3)); @@ -299,10 +293,7 @@ testcase TC_chan_act_ack_est_ind_refused() runs on test_CT { f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ - f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23)); - rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); - var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr; - f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23)); + var RslChannelNr chan_nr := f_chreq_act_ack(); var octetstring l3 := '00010203040506'O f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3)); @@ -321,18 +312,25 @@ type record DchanTuple { RslChannelNr rsl_chan_nr } +/* Send CHAN RQD and wait for allocation; acknowledge it */ +private function f_chreq_act_ack(OCT1 ra := '23'O, GsmFrameNumber fn := 23) +runs on test_CT return RslChannelNr { + var RSL_Message rx_rsl; + f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn)); + rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); + var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr; + f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10)); + return chan_nr; +} + /* helper function to establish a dedicated channel via BTS and MSC */ function f_est_dchan(OCT1 ra, GsmFrameNumber fn, octetstring l3) runs on test_CT return DchanTuple { var BSSAP_N_CONNECT_ind rx_c_ind; - var RSL_Message rx_rsl; var DchanTuple dt; /* Send CHAN RQD and wait for allocation; acknowledge it */ - f_ipa_tx(0, ts_RSL_CHAN_RQD(ra, fn)); - rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); - dt.rsl_chan_nr := rx_rsl.ies[0].body.chan_nr; - f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(dt.rsl_chan_nr, fn+1)); + dt.rsl_chan_nr := f_chreq_act_ack(ra, fn); f_ipa_tx(0, ts_RSL_EST_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3)); @@ -409,7 +407,6 @@ testcase TC_chan_rel_conn_fail() runs on test_CT { /* 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 RSL_Message rx_rsl; var DchanTuple dt; var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); @@ -456,7 +453,6 @@ testcase TC_chan_rel_hard_clear() runs on test_CT { /* Test behavior of channel release after hard RLSD from MSC */ testcase TC_chan_rel_hard_rlsd() runs on test_CT { - var RSL_Message rx_rsl; var DchanTuple dt; var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0)); @@ -496,7 +492,6 @@ testcase TC_chan_rel_hard_rlsd() runs on test_CT { /* Test behavior of channel release after BSSMAP RESET from MSC */ testcase TC_chan_rel_a_reset() runs on test_CT { - var RSL_Message rx_rsl; var DchanTuple dt; var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));