bsc: Add TC_classmark to test RR CLASSMARK -> BSSMAP CLASSMARK conversion
Related: OS#2902 Change-Id: Idd86b5505e1a4fee666287680a20dc235970be93
This commit is contained in:
parent
beb9dbc3ee
commit
898113b838
|
@ -1404,12 +1404,64 @@ testcase TC_assignment_sign() runs on test_CT {
|
|||
vc_conn.done;
|
||||
}
|
||||
|
||||
/* test if L3 RR CLASSMARK CHANGE is translated to BSSMAP CLASSMARK UPDATE */
|
||||
private function f_tc_classmark(charstring id) runs on MSC_ConnHdlr {
|
||||
var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
|
||||
f_create_chan_and_exp(pars);
|
||||
/* we should now have a COMPL_L3 at the MSC */
|
||||
BSSAP.receive(tr_BSSMAP_ComplL3);
|
||||
|
||||
f_rsl_send_l3(ts_RRM_CM_CHG(valueof(ts_CM2)));
|
||||
BSSAP.receive(tr_BSSMAP_ClassmarkUpd(?, omit));
|
||||
setverdict(pass);
|
||||
}
|
||||
testcase TC_classmark() runs on test_CT {
|
||||
var MSC_ConnHdlr vc_conn;
|
||||
f_init(1, true);
|
||||
f_sleep(1.0);
|
||||
vc_conn := f_start_handler(refers(f_tc_classmark), testcasename());
|
||||
vc_conn.done;
|
||||
}
|
||||
|
||||
/* unsolicited ASSIGNMENT FAIL (without ASSIGN) from MS shouldn't bring BSC down */
|
||||
private function f_tc_unsol_ass_fail(charstring id) runs on MSC_ConnHdlr {
|
||||
var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
|
||||
f_create_chan_and_exp(pars);
|
||||
/* we should now have a COMPL_L3 at the MSC */
|
||||
BSSAP.receive(tr_BSSMAP_ComplL3);
|
||||
|
||||
f_rsl_send_l3(ts_RRM_AssignmentFailure('00'O));
|
||||
timer T := 5.0;
|
||||
T.start;
|
||||
alt {
|
||||
[] BSSAP.receive(tr_BSSMAP_AssignmentFail) {
|
||||
setverdict(fail, "Unexpeted BSSMAP Assignment Failure");
|
||||
}
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearRequest) {
|
||||
setverdict(fail, "Unexpected BSSMAP Clear Requst");
|
||||
}
|
||||
[] T.timeout {
|
||||
setverdict(pass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
testcase TC_unsol_ass_fail() runs on test_CT {
|
||||
var MSC_ConnHdlr vc_conn;
|
||||
f_init(1, true);
|
||||
f_sleep(1.0);
|
||||
vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail), testcasename());
|
||||
vc_conn.done;
|
||||
}
|
||||
|
||||
|
||||
control {
|
||||
/* CTRL interface testing */
|
||||
execute( TC_ctrl_msc_connection_status() );
|
||||
execute( TC_ctrl_msc0_connection_status() );
|
||||
execute( TC_ctrl() );
|
||||
|
||||
/* RSL DCHAN Channel ACtivation / Deactivation */
|
||||
execute( TC_chan_act_noreply() );
|
||||
execute( TC_chan_act_counter() );
|
||||
execute( TC_chan_act_ack_noest() );
|
||||
|
@ -1424,6 +1476,8 @@ control {
|
|||
execute( TC_chan_rel_a_reset() );
|
||||
|
||||
execute( TC_outbound_connect() );
|
||||
|
||||
/* Assignment related */
|
||||
execute( TC_assignment_cic_only() );
|
||||
execute( TC_assignment_csd() );
|
||||
execute( TC_assignment_ctm() );
|
||||
|
@ -1434,11 +1488,13 @@ control {
|
|||
execute( TC_assignment_fr_a5_3() );
|
||||
execute( TC_assignment_fr_a5_4() );
|
||||
|
||||
/* RLL Establish Indication on inactive DCHAN / SAPI */
|
||||
execute( TC_rll_est_ind_inact_lchan() );
|
||||
execute( TC_rll_est_ind_inval_sapi1() );
|
||||
execute( TC_rll_est_ind_inval_sapi3() );
|
||||
execute( TC_rll_est_ind_inval_sacch() );
|
||||
|
||||
/* Paging related tests */
|
||||
execute( TC_paging_imsi_nochan() );
|
||||
execute( TC_paging_tmsi_nochan() );
|
||||
execute( TC_paging_tmsi_any() );
|
||||
|
@ -1460,6 +1516,9 @@ control {
|
|||
execute( TC_paging_imsi_load() );
|
||||
|
||||
execute( TC_rsl_drop_counter() );
|
||||
|
||||
execute( TC_classmark() );
|
||||
execute( TC_unsol_ass_fail() );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -301,6 +301,17 @@ function f_create_chan_and_exp(TestHdlrParams pars) runs on MSC_ConnHdlr {
|
|||
f_create_bssmap_exp(l3_enc);
|
||||
}
|
||||
|
||||
function f_rsl_send_l3(template PDU_ML3_MS_NW l3, template (omit) RslLinkId link_id := omit,
|
||||
template (omit) RslChannelNr chan_nr := omit) runs on MSC_ConnHdlr {
|
||||
if (not isvalue(link_id)) {
|
||||
link_id := ts_RslLinkID_DCCH(0);
|
||||
}
|
||||
if (not isvalue(chan_nr)) {
|
||||
chan_nr := g_chan_nr;
|
||||
}
|
||||
RSL.send(ts_RSL_DATA_IND(valueof(chan_nr), valueof(link_id), enc_PDU_ML3_MS_NW(valueof(l3))));
|
||||
}
|
||||
|
||||
function f_rsl_reply(template PDU_ML3_MS_NW l3, RSL_Message orig) runs on MSC_ConnHdlr {
|
||||
var RslChannelNr chan_nr := orig.ies[0].body.chan_nr;
|
||||
var RslLinkId link_id;
|
||||
|
@ -309,7 +320,7 @@ function f_rsl_reply(template PDU_ML3_MS_NW l3, RSL_Message orig) runs on MSC_Co
|
|||
} else {
|
||||
link_id := orig.ies[1].body.link_id;
|
||||
}
|
||||
RSL.send(ts_RSL_DATA_IND(chan_nr, link_id, enc_PDU_ML3_MS_NW(valueof(l3))));
|
||||
f_rsl_send_l3(l3, link_id, chan_nr);
|
||||
}
|
||||
|
||||
function f_cipher_mode(OCT1 alg, OCT8 key, template OCT16 kc128 := omit, boolean exp_fail := false)
|
||||
|
|
|
@ -906,6 +906,23 @@ modifies ts_BSSAP_BSSMAP := {
|
|||
}
|
||||
}
|
||||
|
||||
template PDU_BSSAP tr_BSSMAP_ClassmarkUpd(template BSSMAP_IE_ClassmarkInformationType2 cm2 := *,
|
||||
template BSSMAP_IE_ClassmarkInformationType3 cm3 := *)
|
||||
modifies tr_BSSAP_BSSMAP := {
|
||||
pdu := {
|
||||
bssmap := {
|
||||
classmarkUpdate := {
|
||||
messageType := '54'O,
|
||||
classmarkInformationType2 := cm2,
|
||||
classmarkInformationType3 := cm3,
|
||||
talkerPriority := *
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} with { encode "RAW" };
|
||||
|
|
|
@ -102,8 +102,25 @@ template (value) MobileStationClassmark2_LV ts_CM2 := {
|
|||
esind := '1'B,
|
||||
revisionLevel := '10'B,
|
||||
spare1_1 := '0'B,
|
||||
mobileStationClassmark2_oct4 := omit,
|
||||
mobileStationClassmark2_oct5 := omit
|
||||
mobileStationClassmark2_oct4 := {
|
||||
fc := '1'B,
|
||||
vgcs := '0'B,
|
||||
vbs := '0'B,
|
||||
sm_Capability := '1'B,
|
||||
ss_ScreenIndicator := '01'B,
|
||||
ps_Capability := '1'B,
|
||||
spare2_1 := '0'B
|
||||
},
|
||||
mobileStationClassmark2_oct5 := {
|
||||
a5_2 := '0'B,
|
||||
a5_3 := '1'B,
|
||||
cmsp := '0'B,
|
||||
solsa := '0'B,
|
||||
ucs2 := '0'B,
|
||||
lcsva_cap := '0'B,
|
||||
spare5_7 :='0'B,
|
||||
cm3 := '0'B
|
||||
}
|
||||
};
|
||||
|
||||
/* Send template for CM SERVICE REQUEST */
|
||||
|
@ -268,6 +285,53 @@ template (value) PDU_ML3_MS_NW ts_RRM_AssignmentComplete(OCT1 cause) := {
|
|||
}
|
||||
}
|
||||
|
||||
template (value) PDU_ML3_MS_NW ts_RRM_AssignmentFailure(OCT1 cause) := {
|
||||
discriminator := '0000'B, /* overwritten */
|
||||
tiOrSkip := {
|
||||
skipIndicator := '0000'B
|
||||
},
|
||||
msgs := {
|
||||
rrm := {
|
||||
assignmentFailure := {
|
||||
messageType := '00101111'B,
|
||||
rR_Cause := {
|
||||
valuePart := cause
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function ts_CM3_TLV(template (omit) OCTN cm3) return template MobileStationClassmark3_TLV {
|
||||
if (not isvalue(cm3)) {
|
||||
return omit;
|
||||
}
|
||||
var template MobileStationClassmark3_TLV ret := {
|
||||
elementIdentifier := '20'O,
|
||||
lengthIndicator := 0, /* overwritten */
|
||||
valuePart := cm3
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
template (value) PDU_ML3_MS_NW ts_RRM_CM_CHG(MobileStationClassmark2_LV cm2,
|
||||
template (omit) MobileStationClassmark3_TLV cm3 := omit) := {
|
||||
discriminator := '0110'B,
|
||||
tiOrSkip := {
|
||||
skipIndicator := '0000'B
|
||||
},
|
||||
msgs := {
|
||||
rrm := {
|
||||
classmarkChange := {
|
||||
messageType := '00010110'B,
|
||||
mobileStationClassmark2 := cm2,
|
||||
mobileStationClassmark3 := cm3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template PDU_ML3_MS_NW ts_ML3_MO := {
|
||||
discriminator := '0000'B,
|
||||
tiOrSkip := {
|
||||
|
|
Loading…
Reference in New Issue