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
This commit is contained in:
parent
9cf0e90e8d
commit
35988316c7
|
@ -491,79 +491,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
|
||||
|
@ -1275,8 +1202,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;
|
||||
|
||||
private function f_ass(charstring id) runs on MSC_ConnHdlr {
|
||||
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_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, ?);
|
||||
|
@ -1292,16 +1244,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() );
|
||||
|
|
Loading…
Reference in New Issue