diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-12-15 14:18:16 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-12-15 14:19:10 +0100 |
commit | 235ebf1b9ceab164e47f7050970e29f9a84c2358 (patch) | |
tree | 3f3e68c0b4321dce07a404ed7346d72c4f212668 /bsc | |
parent | 4bf5fc97fb60e745f6efc3c08f8db86bfb5a2ed4 (diff) |
BSC_Tests: Add whole bunch of new assignment tests
Change-Id: Ia7304f2e2265c2ebd92575a9403b082579397656
Diffstat (limited to 'bsc')
-rw-r--r-- | bsc/BSC_Tests.ttcn | 122 |
1 files changed, 121 insertions, 1 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 41e3a84a..77f3ef82 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -411,6 +411,7 @@ testcase TC_assignment_cic_only() runs on test_CT { [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentComplete)) { setverdict(fail, "AoIP BSC cannot accept ASSIGNMENT without AoIP Transport IE"); } + /* TODO: Actually expect GSM0808_CAUSE_REQ_A_IF_TYPE_NOT_SUPP */ [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentFail)) { setverdict(pass); } @@ -418,6 +419,118 @@ testcase TC_assignment_cic_only() runs on test_CT { } } +/* Run everything required up to sending a caller-specified assignment command and expect response */ +function f_assignment_exp(PDU_BSSAP ass_cmd, template PDU_BSSAP exp, charstring fail_text) +runs on test_CT { + var BSSAP_N_CONNECT_ind rx_c_ind; + var RSL_Message rx_rsl; + var DchanTuple dt; + + f_init(); + f_bssap_reset(); + + dt := f_est_dchan('23'O, 23, '00000000'O); + /* send assignment without AoIP IEs */ + BSSAP.send(ts_BSSAP_DATA_req(dt.sccp_conn_id, ass_cmd)); + alt { + [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentComplete)) { + if (ischosen(exp.pdu.bssmap.assignmentComplete)) { + setverdict(pass); + } else { + setverdict(fail, fail_text); + } + } + [] BSSAP.receive(tr_BSSAP_DATA_ind(dt.sccp_conn_id, tr_BSSMAP_AssignmentFail)) { + if (ischosen(exp.pdu.bssmap.assignmentFailure)) { + setverdict(pass); + } else { + setverdict(fail, fail_text); + } + } + [] BSSAP.receive { repeat; } + } +} +testcase TC_assignment_csd() runs on test_CT { + var template PDU_BSSAP exp_fail := tr_BSSMAP_AssignmentFail; + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeCSD); + //exp_fail.pdu.bssmap.assignmentFailure.cause.causeValue := int2bit(enum2int(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL), 7); + f_assignment_exp(ass_cmd, exp_fail, "BSC accepted Assignment for CSD"); +} + +testcase TC_assignment_ctm() runs on test_CT { + var template PDU_BSSAP exp_fail := tr_BSSMAP_AssignmentFail; + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeCTM); + //exp_fail.pdu.bssmap.assignmentFailure.cause.causeValue := int2bit(enum2int(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL), 7); + f_assignment_exp(ass_cmd, exp_fail, "BSC accepted Assignment for Speech+CTM"); +} + +testcase TC_assignment_sign() runs on test_CT { + var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit); + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeSIGNAL); + f_assignment_exp(ass_cmd, exp_compl, "BSC failed SIGNALLING assignment"); +} + +testcase TC_assignment_fr_a5_0() runs on test_CT { + var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?); + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + const OCT8 kc := '0001020304050607'O; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation := + valueof(ts_BSSMAP_IE_EncrInfo(kc, '01'O)); + f_assignment_exp(ass_cmd, exp_compl, "BSC failed TCH/F FR A5/0 assignment"); +} + +testcase TC_assignment_fr_a5_1() runs on test_CT { + var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?); + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + const OCT8 kc := '0001020304050607'O; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation := + valueof(ts_BSSMAP_IE_EncrInfo(kc, '02'O)); + f_assignment_exp(ass_cmd, exp_compl, "BSC failed TCH/F FR A5/1 assignment"); +} + + +testcase TC_assignment_fr_a5_3() runs on test_CT { + var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?); + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + const OCT8 kc := '0001020304050607'O; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation := + valueof(ts_BSSMAP_IE_EncrInfo(kc, '08'O)); + f_assignment_exp(ass_cmd, exp_compl, "BSC failed TCH/F FR A5/3 assignment"); +} + +testcase TC_assignment_fr_a5_4() runs on test_CT { + var template PDU_BSSAP exp_fail := tr_BSSMAP_AssignmentFail; + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + const OCT8 kc := '0001020304050607'O; + const OCT16 kc128 := kc & kc; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation := + valueof(ts_BSSMAP_IE_EncrInfo(kc, '10'O)); + ass_cmd.pdu.bssmap.assignmentRequest.kC128 := valueof(ts_BSSMAP_IE_Kc128(kc128)); + /* TODO: expect GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED cause value */ + f_assignment_exp(ass_cmd, exp_fail, "BSC accepted TCH/F FR A5/4 assignment"); +} + + + type record DchanTuple { integer sccp_conn_id, @@ -1013,7 +1126,7 @@ testcase TC_paging_imsi_load() runs on test_CT { } } -/* Verify PCH load */ +/* Verify Paging Counter */ testcase TC_paging_counter() runs on test_CT { var BSSMAP_FIELD_CellIdentificationList cid_list; timer T := 4.0; @@ -1126,6 +1239,13 @@ control { execute( TC_outbound_connect() ); execute( TC_assignment_cic_only() ); + execute( TC_assignment_csd() ); + execute( TC_assignment_ctm() ); + execute( TC_assignment_sign() ); + execute( TC_assignment_fr_a5_0() ); + execute( TC_assignment_fr_a5_1() ); + execute( TC_assignment_fr_a5_3() ); + execute( TC_assignment_fr_a5_4() ); execute( TC_rll_est_ind_inact_lchan() ); execute( TC_rll_est_ind_inval_sapi1() ); |