This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. Change subject: BSC_Tests: Add whole bunch of new assignment tests ...................................................................... BSC_Tests: Add whole bunch of new assignment tests Change-Id: Ia7304f2e2265c2ebd92575a9403b082579397656 --- M bsc/BSC_Tests.ttcn M library/BSSMAP_Templates.ttcn 2 files changed, 125 insertions(+), 1 deletion(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 41e3a84..77f3ef8 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -411,12 +411,125 @@ [] 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); } [] BSSAP.receive { repeat; } } } + +/* 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 { @@ -1013,7 +1126,7 @@ } } -/* 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 @@ 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() ); diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn index 071c66d..87d5628 100644 --- a/library/BSSMAP_Templates.ttcn +++ b/library/BSSMAP_Templates.ttcn @@ -378,6 +378,10 @@ ipAddress := addr, uDPPortValue := udp_port } +template (value) BSSMAP_IE_AoIP_TransportLayerAddress ts_BSSMAP_IE_AoIP_TLA4(OCT4 ip, uint16_t pt) := + ts_BSSMAP_IE_AoIP_TLA({ipv4:=ip}, pt); +template (value) BSSMAP_IE_AoIP_TransportLayerAddress ts_BSSMAP_IE_AoIP_TLA6(OCT16 ip, uint16_t pt) := + ts_BSSMAP_IE_AoIP_TLA({ipv6:=ip}, pt); template (value) BSSMAP_IE_KC128 ts_BSSMAP_IE_Kc128(OCT16 kc128) := { elementIdentifier := '83'O, -- To view, visit https://gerrit.osmocom.org/5397 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia7304f2e2265c2ebd92575a9403b082579397656 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder