aboutsummaryrefslogtreecommitdiffstats
path: root/bsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-12-15 14:18:16 +0100
committerHarald Welte <laforge@gnumonks.org>2017-12-15 14:19:10 +0100
commit235ebf1b9ceab164e47f7050970e29f9a84c2358 (patch)
tree3f3e68c0b4321dce07a404ed7346d72c4f212668 /bsc
parent4bf5fc97fb60e745f6efc3c08f8db86bfb5a2ed4 (diff)
BSC_Tests: Add whole bunch of new assignment tests
Diffstat (limited to 'bsc')
-rw-r--r--bsc/BSC_Tests.ttcn122
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() );