bsc: Move hardcoded octetstring to single constant field

This makes it easier changing it to be a valid l3 payload in the future.

Related: SYS#6280
Change-Id: I888bcc42d4b68bac4c12dfbbf3c74e1734318699
This commit is contained in:
Pau Espin 2023-01-02 17:54:59 +01:00
parent 289056cf9b
commit 695ada5f72
3 changed files with 66 additions and 76 deletions

View File

@ -115,6 +115,8 @@ private const BtsParams c_BtsParams[NUM_BTS_CFG] := {
private const RSL_IE_Body c_mr_conf_5_90 :=
valueof(RSL_IE_Body:{multirate_cfg := ts_RSL_MultirateCfg(true, 0, '00000100'B /* 5,90k */)});
friend const octetstring c_l3_payload := '00010203040506'O;
/* per-BTS state which we keep */
type record BTS_State {
/* component reference to the IPA_Client component used for RSL */
@ -1521,10 +1523,9 @@ testcase TC_chan_act_ack_est_ind_noreply() runs on test_CT {
/* Send CHAN RQD and wait for allocation; acknowledge it */
var RslChannelNr chan_nr := f_chreq_act_ack();
var octetstring l3 := '00010203040506'O
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3)));
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload)));
/* expect BSC to disable the channel again if there's no response from MSC */
/* MS waits 20s (T3210) at LU; 10s (T3230) at CM SERV REQ and 5s (T3220) AT detach */
@ -1542,10 +1543,9 @@ testcase TC_chan_act_ack_est_ind_refused() runs on test_CT {
/* Send CHAN RQD and wait for allocation; acknowledge it */
var RslChannelNr chan_nr := f_chreq_act_ack();
var octetstring l3 := '00010203040506'O
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
BSSAP.send(ts_BSSAP_DISC_req(rx_c_ind.connectionId, 0));
/* expect BSC to disable the channel */
@ -1680,7 +1680,7 @@ testcase TC_assignment_cic_only(integer bssap_idx := 0) runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00000000'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {
/* send assignment without AoIP IEs */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_AssignmentReq(ts_BSSMAP_IE_CIC(0, 1))));
@ -1806,7 +1806,7 @@ runs on test_CT return DchanTuple {
f_init(1);
dt := f_est_dchan('23'O, 23, '00000000'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* send assignment without AoIP IEs */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ass_cmd));
alt {
@ -1946,7 +1946,7 @@ testcase TC_chan_rel_rll_rel_ind() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* simulate RLL REL IND */
f_ipa_tx(ts_RSL_REL_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0))));
@ -1974,7 +1974,7 @@ testcase TC_chan_rel_conn_fail() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Sending CONN FAIL IND immediately may trigger a race condition.
* Give the BSC some time to process a new SCCP connection (OS#5823). */
@ -2031,7 +2031,7 @@ testcase TC_late_conn_fail() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* BSC<-MSC: Instruct BSC to clear connection */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(0)));
@ -2198,7 +2198,7 @@ testcase TC_chan_rel_hard_clear() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Instruct BSC to clear channel */
var BssmapCause cause := 0;
@ -2220,7 +2220,7 @@ function f_TC_chan_rel_last_eutran_plmn_hard_clear(boolean tx_csfb_ind) runs on
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Send CommonID with some random PLMN (BSC doesn't take it into account
/* yet when generating the EUTRAN neigh list in RR CHannel Release) */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_CommonId('001019876543210'H, '323454'O)));
@ -2276,7 +2276,7 @@ testcase TC_chan_rel_hard_clear_csfb() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Instruct BSC to clear channel */
var BssmapCause cause := 0;
@ -2298,7 +2298,7 @@ testcase TC_chan_rel_hard_rlsd() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* release the SCCP connection */
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
@ -2313,7 +2313,7 @@ testcase TC_chan_rel_hard_rlsd_ms_dead() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* release the SCCP connection */
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
@ -2328,7 +2328,7 @@ testcase TC_chan_rel_a_reset() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Clear the queue, it might still contain stuff like IMMEDIATE ASSIGN */
IPA_RSL[0][0].clear;
@ -2356,7 +2356,7 @@ testcase TC_chan_rel_sccp_tiar_timeout() runs on test_CT {
f_init(1);
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
f_expect_chan_rel(dt.rsl_chan_nr, expect_rll_rel_req := false);
f_shutdown_helper();
}
@ -2367,7 +2367,7 @@ runs on test_CT
{
var DchanTuple dt;
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
var BssmapCause cause := 0;
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(enum2int(clear_cmd_cause))));
BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_ClearComplete)) {
@ -2397,13 +2397,12 @@ testcase TC_rll_est_ind_inact_lchan() runs on test_CT {
f_init(1);
var octetstring l3 := '00010203040506'O;
var RslChannelNr chan_nr := valueof(t_RslChanNr_Bm(6));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) {
setverdict(fail, "MSC received COMPL L3 for non-active lchan");
}
[] BSSAP.receive {}
@ -2422,13 +2421,12 @@ testcase TC_rll_est_ind_inval_sapi1() runs on test_CT {
chan_nr := f_chreq_act_ack()
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(1)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(1)), c_l3_payload));
timer T := 2.0;
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) {
setverdict(fail, "MSC received COMPL L3 for invalid SAPI 1");
}
[] BSSAP.receive { repeat; }
@ -2447,12 +2445,11 @@ testcase TC_rll_est_ind_inval_sapi3() runs on test_CT {
var RslChannelNr chan_nr := f_chreq_act_ack();
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(3)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(3)), c_l3_payload));
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) {
setverdict(fail, "MSC received COMPL L3 for invalid SAPI 3");
}
[] BSSAP.receive { repeat; }
@ -2471,12 +2468,11 @@ testcase TC_rll_est_ind_inval_sacch() runs on test_CT {
var RslChannelNr chan_nr := f_chreq_act_ack();
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_SACCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_SACCH(0)), c_l3_payload));
T.start;
alt {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) {
[] BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) {
setverdict(fail, "MSC received COMPL L3 for invalid Link SACCH");
}
[] BSSAP.receive { repeat; }
@ -2741,7 +2737,7 @@ function f_test_si2quater(integer total_earfcns, template SystemInformationConfi
var BSSAP_N_DATA_ind rx_di;
var DchanTuple dt;
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* Send CommonID with some random PLMN (BSC doesn't take it into account
* yet when generating the EUTRAN neigh list in RR CHannel Release) */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_CommonId('001019876543210'H, '323454'O)));
@ -7555,7 +7551,7 @@ testcase TC_bssap_rlsd_does_not_cause_bssmap_reset() runs on test_CT {
/* Setup a BSSAP connection and clear it right away. This is
* the MSC telling the BSC about a planned release, it's not an
* erratic loss of a connection. */
dt := f_est_dchan(int2oct(i,1), 23+i, '00010203040506'O);
dt := f_est_dchan(int2oct(i,1), 23+i, c_l3_payload);
/* MSC disconnects (RLSD). */
BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
@ -7599,7 +7595,7 @@ testcase TC_bssmap_clear_does_not_cause_bssmap_reset() runs on test_CT {
/* Setup a BSSAP connection and clear it right away. This is
* the MSC telling the BSC about a planned release, it's not an
* erratic loss of a connection. */
dt := f_est_dchan(int2oct(i,1), 23+i, '00010203040506'O);
dt := f_est_dchan(int2oct(i,1), 23+i, c_l3_payload);
/* Instruct BSC to clear channel */
BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ts_BSSMAP_ClearCommand(cause)));
@ -7645,7 +7641,7 @@ testcase TC_ms_rel_ind_does_not_cause_bssmap_reset() runs on test_CT {
/* Setup a BSSAP connection and clear it right away. This is
* the MSC telling the BSC about a planned release, it's not an
* erratic loss of a connection. */
dt := f_est_dchan('23'O, 23, '00010203040506'O);
dt := f_est_dchan('23'O, 23, c_l3_payload);
/* simulate RLL REL IND */
f_ipa_tx(ts_RSL_REL_IND(dt.rsl_chan_nr, valueof(ts_RslLinkID_DCCH(0))));
@ -7959,7 +7955,7 @@ testcase TC_dyn_ts_sdcch8_act_deact() runs on test_CT {
var DchanTuples sdcch_cleanup := {};
var integer i;
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i + 1) {
dt := f_est_dchan('23'O, i, '00010203040506'O);
dt := f_est_dchan('23'O, i, c_l3_payload);
sdcch_cleanup := sdcch_cleanup & { dt };
}
@ -8036,14 +8032,14 @@ testcase TC_dyn_ts_sdcch8_all_subslots_used() runs on test_CT {
*/
var DchanTuples chan_cleanup := {};
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* Only the dyn TS is still available. Its first lchan gets converted to SDCCH8 */
chan_cleanup := chan_cleanup & { f_est_dchan_dyn('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan_dyn('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
/* Also occupy the seven other SDCCH of the dyn TS */
for (i := 0; i < 7; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* Clean up SDCCH lchans */
@ -8097,7 +8093,7 @@ testcase TC_dyn_ts_sdcch8_tch_call_act_deact() runs on test_CT {
var DchanTuples chan_cleanup := {};
var OCT1 ra := '43'O; /* RA containing reason=originating speech call*/
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i + 1) {
dt := f_est_dchan(ra, i, '00010203040506'O);
dt := f_est_dchan(ra, i, c_l3_payload);
chan_cleanup := chan_cleanup & { dt };
}
@ -8175,7 +8171,7 @@ testcase TC_dyn_ts_sdcch8_act_nack() runs on test_CT {
var DchanTuples chan_cleanup := {};
var integer i;
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i + 1) {
dt := f_est_dchan('23'O, i, '00010203040506'O);
dt := f_est_dchan('23'O, i, c_l3_payload);
chan_cleanup := chan_cleanup & { dt };
}
@ -9234,12 +9230,11 @@ testcase TC_emerg_premption() runs on test_CT {
/* Send EST IND for the first TCH, so we get to test the RR release cause */
var RslChannelNr first_tch := valueof(t_RslChanNr_Bm(1));
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(first_tch, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(first_tch, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
/* 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;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
var integer sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11063,11 +11058,10 @@ testcase TC_imm_ass_post_chan_ack() runs on test_CT {
chan_ident_ie.chan_ident.ch_desc.v.tsc);
/* Check that the lchan is working */
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
var BSSAP_N_CONNECT_ind rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
dt.sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11111,11 +11105,10 @@ testcase TC_imm_ass_pre_chan_ack() runs on test_CT {
f_ipa_tx(ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
/* Check that the lchan is working */
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
var BSSAP_N_CONNECT_ind rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
dt.sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11159,11 +11152,10 @@ testcase TC_imm_ass_pre_ts_ack() runs on test_CT {
f_ipa_tx(ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
/* Check that the lchan is working */
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
var BSSAP_N_CONNECT_ind rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
dt.sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11228,11 +11220,10 @@ testcase TC_imm_ass_pre_chan_ack_dyn_ts() runs on test_CT {
f_ipa_tx(ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
/* Check that the lchan is working */
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
var BSSAP_N_CONNECT_ind rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
dt.sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11301,11 +11292,10 @@ testcase TC_imm_ass_pre_ts_ack_dyn_ts() runs on test_CT {
chan_ident_ie.chan_ident.ch_desc.v.tsc);
/* Check that the lchan is working */
var octetstring l3 := '00010203040506'O;
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
f_ipa_tx(ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
var BSSAP_N_CONNECT_ind rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(c_l3_payload))) -> value rx_c_ind;
dt.sccp_conn_id := rx_c_ind.connectionId;
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
@ -11581,7 +11571,7 @@ testcase TC_ratectr_all_available_allocated() runs on test_CT {
*/
var DchanTuples chan_cleanup := {};
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* Since only bts 0 is connected, expecting all_allocated to become true for both bts 0 and the "global" bsc
@ -11591,7 +11581,7 @@ testcase TC_ratectr_all_available_allocated() runs on test_CT {
/* Also fill up all remaining (TCH) channels */
for (i := 0; i < NUM_TCHF_PER_BTS + NUM_TCHH_PER_BTS; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* All TCH are now also occupied */
@ -11631,7 +11621,7 @@ testcase TC_ratectr_all_available_allocated_dyn() runs on test_CT {
*/
var DchanTuples chan_cleanup := {};
for (i := 0; i < NUM_SDCCH_PER_BTS; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('13'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* The static SDCCH should now be occupied, while still 3x8 dynamic SDCCH potentially remain. So only
@ -11641,11 +11631,11 @@ testcase TC_ratectr_all_available_allocated_dyn() runs on test_CT {
/* Request more SDCCH, hence convert the first dyn TS to SDCCH8.
* Will release them later, so remember all the DchanTuples. */
var DchanTuples dyn_sddch := {};
dyn_sddch := dyn_sddch & { f_est_dchan_dyn('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
dyn_sddch := dyn_sddch & { f_est_dchan_dyn('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
/* Also occupy the seven other SDCCH of the dyn TS */
for (i := 0; i < 7; i := i+1) {
dyn_sddch := dyn_sddch & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
dyn_sddch := dyn_sddch & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* Now all dynamic SDCCH are also occupied, so for the first time all_allocated:sdcch will trigger... */
@ -11653,7 +11643,7 @@ testcase TC_ratectr_all_available_allocated_dyn() runs on test_CT {
/* occupy the remaining TCH, three TCH/F and two TCH/H lchans */
for (i := 0; i < 5; i := i+1) {
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, '00010203040506'O) };
chan_cleanup := chan_cleanup & { f_est_dchan('33'O, NUM_SDCCH_PER_BTS + i, c_l3_payload) };
}
/* All TCH lchans are now also occupied, both static and dynamic */
@ -11727,7 +11717,7 @@ testcase TC_chan_alloc_algo_ascending() runs on test_CT {
/* Expect the BSC to allocate 4 x TCH/F channels on BTS2/TRX0 */
for (var integer i := 0; i < 4; i := i + 1) {
var DchanTuple dt := f_est_dchan('23'O, 23, '00000000'O, {2, 0});
var DchanTuple dt := f_est_dchan('23'O, 23, c_l3_payload, {2, 0});
f_TC_chan_alloc_algo(dt, {2, 0});
f_perform_clear_test_ct(dt);
}
@ -11750,7 +11740,7 @@ testcase TC_chan_alloc_algo_descending() runs on test_CT {
/* Expect the BSC to allocate 5 x TCH/F channels on BTS2/TRX3 */
for (var integer i := 0; i < 5; i := i + 1) {
var DchanTuple dt := f_est_dchan('23'O, 23, '00000000'O, {2, 0});
var DchanTuple dt := f_est_dchan('23'O, 23, c_l3_payload, {2, 0});
f_TC_chan_alloc_algo(dt, {2, 3});
f_perform_clear_test_ct(dt);
}
@ -11779,12 +11769,12 @@ testcase TC_chan_alloc_algo_ass_dynamic() runs on test_CT {
var DchanTuple dt;
f_logp(BSCVTY, "Case a) Unknown Uplink RxLev, fall-back to ascending");
dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
dt := f_est_dchan('23'O, 23, c_l3_payload, TRX0);
f_TC_chan_alloc_algo(dt, TRX0);
f_perform_clear_test_ct(dt);
f_logp(BSCVTY, "Case b) Not enough RxLev samples, use ascending");
dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
dt := f_est_dchan('23'O, 23, c_l3_payload, TRX0);
f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
ts_RSL_IE_UplinkMeas(30, 0),
ts_RSL_IE_BS_Power(0)), TRX0);
@ -11793,7 +11783,7 @@ testcase TC_chan_alloc_algo_ass_dynamic() runs on test_CT {
f_perform_clear_test_ct(dt);
f_logp(BSCVTY, "Case c) Uplink RxLev below the threshold, use ascending");
dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
dt := f_est_dchan('23'O, 23, c_l3_payload, TRX0);
f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
ts_RSL_IE_UplinkMeas(45, 0),
ts_RSL_IE_BS_Power(0)), TRX0);
@ -11805,7 +11795,7 @@ testcase TC_chan_alloc_algo_ass_dynamic() runs on test_CT {
f_perform_clear_test_ct(dt);
f_logp(BSCVTY, "Case d) Uplink RxLev above the threshold, use descending");
dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
dt := f_est_dchan('23'O, 23, c_l3_payload, TRX0);
f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
ts_RSL_IE_UplinkMeas(50, 0),
ts_RSL_IE_BS_Power(0)), TRX0);
@ -11821,7 +11811,7 @@ testcase TC_chan_alloc_algo_ass_dynamic() runs on test_CT {
f_vty_transceive(BSCVTY, "end");
f_logp(BSCVTY, "Case e) Uplink RxLev above the threshold, but C0 load is not");
dt := f_est_dchan('23'O, 23, '00000000'O, TRX0);
dt := f_est_dchan('23'O, 23, c_l3_payload, TRX0);
f_ipa_tx(ts_RSL_MEAS_RES_EMPTY(dt.rsl_chan_nr, 0,
ts_RSL_IE_UplinkMeas(50, 0),
ts_RSL_IE_BS_Power(0)), TRX0);

View File

@ -1005,7 +1005,7 @@ testcase TC_cbsp_emerg_write_bts_cgi_dchan() runs on cbsp_test_CT {
cell_list := ts_BSSMAP_CIL_CGI({bssmap_cgi(mp_cgi_bts0)});
/* first establish a dedicated channel */
var DchanTuple dt := f_est_dchan('23'O, 23, '00010203040506'O);
var DchanTuple dt := f_est_dchan('23'O, 23, c_l3_payload);
/* then send ETWS PN */
f_cbsp_write_emerg(g_cbsp_msg_id, g_cbsp_ser_no, cell_list);

View File

@ -279,13 +279,13 @@ testcase TC_chan_act_to_vamos() runs on test_CT {
/* verify that DTAP passes through both ways with the right cbits */
private function f_verify_dtap() runs on MSC_ConnHdlr
{
var octetstring l3_data := '00010203040506'O;
var PDU_BSSAP rx_bssap_dtap;
var octetstring l3_data;
/* MS to NW */
RSL.send(ts_RSL_DATA_IND(g_chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3_data));
RSL.send(ts_RSL_DATA_IND(g_chan_nr, valueof(ts_RslLinkID_DCCH(0)), c_l3_payload));
BSSAP.receive(tr_BSSAP_DTAP) -> value rx_bssap_dtap;
if (not match(rx_bssap_dtap.pdu.dtap, l3_data)) {
if (not match(rx_bssap_dtap.pdu.dtap, c_l3_payload)) {
setverdict(fail, "unexpected L3 data");
mtc.stop;
}