aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-12-16 23:21:36 +0100
committerHarald Welte <laforge@gnumonks.org>2017-12-17 13:24:39 +0100
commit552620d5700b1d4f10d5d9270a1833e656cd405e (patch)
tree908882b9ebb8a9a012546a3e4fea518103796b94
parentc1a2fff5e081e29ea704b01cbcf2b14984aa5885 (diff)
BSC_Tests: Migrate various ASSIGNMENT tests over to MSC_ConnHdlr
This way we benefit from the ability to handle the RR MODE MODIFY, RSL MODE MODIFY, IPA CRCX and IPA MDCX capabilities of the MSC_ConnHdlr component. While each test case now needs a separate function in addition to the actual testcase, this allows for more flexibility and a more complete emulation of BTS behaviour. Change-Id: Iba50663cb5104bf34bd6fc8aac2aa3b47155fe99
-rw-r--r--bsc/BSC_Tests.ttcn184
1 files changed, 108 insertions, 76 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 2e433756..d1f5c3d7 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -492,79 +492,6 @@ testcase TC_assignment_sign() runs on test_CT {
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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
- 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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
- 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");
-}
-
-/* Exxpet ASSIGNMENT FAIL if mandatory IE is missing */
-testcase TC_assignment_fr_a5_1_codec_missing() 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;
-
- 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_fail, "BSC didn't reject missing mandatory speech codec IE");
-}
-
-
-
-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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
- 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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
- 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,
RslChannelNr rsl_chan_nr
@@ -1276,8 +1203,33 @@ function f_start_handler(void_fn fn, charstring id) runs on test_CT return MSC_C
return vc_conn;
}
+private function f_tc_assignment_fr_a5_0(charstring id) runs on MSC_ConnHdlr {
+ var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+ 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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+ ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation :=
+ valueof(ts_BSSMAP_IE_EncrInfo(kc, '01'O));
+ f_establish_fully(pars, ass_cmd, exp_compl);
+}
+
+testcase TC_assignment_fr_a5_0() runs on test_CT {
+ var MSC_ConnHdlr vc_conn;
+
+ f_init(true);
+ f_sleep(1.0);
+
+ vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_0), testcasename());
+ vc_conn.done;
+}
+
+
-private function f_ass(charstring id) runs on MSC_ConnHdlr {
+private function f_tc_assignment_fr_a5_1(charstring id) runs on MSC_ConnHdlr {
var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?);
@@ -1293,16 +1245,96 @@ private function f_ass(charstring id) runs on MSC_ConnHdlr {
f_establish_fully(pars, ass_cmd, exp_compl);
}
-testcase TC_hdlr() runs on test_CT {
+testcase TC_assignment_fr_a5_1() runs on test_CT {
var MSC_ConnHdlr vc_conn;
f_init(true);
f_sleep(1.0);
- vc_conn := f_start_handler(refers(f_ass), "foo");
+ vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1), testcasename());
vc_conn.done;
}
+/* Expect ASSIGNMENT FAIL if mandatory IE is missing */
+private function f_tc_assignment_fr_a5_1_codec_missing(charstring id) runs on MSC_ConnHdlr {
+ var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+ 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;
+
+ 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_establish_fully(pars, ass_cmd, exp_fail);
+}
+
+testcase TC_assignment_fr_a5_1_codec_missing() runs on test_CT {
+ var MSC_ConnHdlr vc_conn;
+
+ f_init(true);
+ f_sleep(1.0);
+
+ vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1_codec_missing), testcasename());
+ vc_conn.done;
+}
+
+
+private function f_tc_assignment_fr_a5_3(charstring id ) runs on MSC_ConnHdlr {
+ var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+ 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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+ ass_cmd.pdu.bssmap.assignmentRequest.encryptionInformation :=
+ valueof(ts_BSSMAP_IE_EncrInfo(kc, '08'O));
+ f_establish_fully(pars, ass_cmd, exp_compl);
+}
+
+testcase TC_assignment_fr_a5_3() runs on test_CT {
+ var MSC_ConnHdlr vc_conn;
+
+ f_init(true);
+ f_sleep(1.0);
+
+ vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_3), testcasename());
+ vc_conn.done;
+}
+
+
+private function f_tc_assignment_fr_a5_4(charstring id) runs on MSC_ConnHdlr {
+ var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+ 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.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+ 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_establish_fully(pars, ass_cmd, exp_fail);
+}
+
+testcase TC_assignment_fr_a5_4() runs on test_CT {
+ var MSC_ConnHdlr vc_conn;
+
+ f_init(true);
+ f_sleep(1.0);
+
+ vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_4), testcasename());
+ vc_conn.done;
+}
+
+
+
+
control {
execute( TC_ctrl_msc_connection_status() );
execute( TC_ctrl() );