diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-12-16 23:21:36 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-12-17 13:24:39 +0100 |
commit | 552620d5700b1d4f10d5d9270a1833e656cd405e (patch) | |
tree | 908882b9ebb8a9a012546a3e4fea518103796b94 | |
parent | c1a2fff5e081e29ea704b01cbcf2b14984aa5885 (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.ttcn | 184 |
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() ); |