sgsn: TC_attach_*_timeout test cases

Change-Id: If8cd9e4387588e8299b7675b8b57392d7da66bd9
This commit is contained in:
Harald Welte 2018-02-16 21:48:17 +01:00
parent 62e2958e49
commit 5b7c812e03
2 changed files with 117 additions and 2 deletions

View File

@ -1408,6 +1408,26 @@ template PDU_L3_SGSN_MS tr_GMM_ATTACH_ACCEPT(template BIT3 res := ?,
}
}
template PDU_L3_SGSN_MS tr_GMM_ATTACH_REJECT(template OCT1 cause) := {
discriminator := '1000'B,
tiOrSkip := {
skipIndicator := '0000'B
},
msgs := {
gprs_mm := {
attachReject := {
messageType := '00000100'B,
gmmCause := {
causeValue := cause
},
t3302 := *,
t3346 := *
}
}
}
}
template (value) PDU_L3_MS_SGSN ts_GMM_ATTACH_COMPL := {
discriminator := '0000'B, /* overwritten */
tiOrSkip := {

View File

@ -70,7 +70,6 @@ type record BSSGP_ConnHdlrPars {
float t_guard
};
private function f_init_gb(inout GbInstance gb) runs on test_CT {
gb.vc_NS := NS_CT.create;
gb.vc_BSSGP := BSSGP_CT.create;
@ -296,9 +295,105 @@ testcase TC_attach() runs on test_CT {
vc_conn.done;
}
/* MS never responds to ID REQ, expect ATTACH REJECT */
private function f_TC_attach_auth_id_timeout(charstring id) runs on BSSGP_ConnHdlr {
var MobileIdentityLV mi;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
if (ispresent(g_pars.p_tmsi)) {
mi := valueof(ts_MI_TMSI_LV(g_pars.p_tmsi));
} else {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
}
BSSGP.send(ts_GMM_ATTACH_REQ(mi, old_ra, false, false, omit, omit));
alt {
[] BSSGP.receive(tr_BD_L3(tr_GMM_ID_REQ(?))) {
/* don't send ID Response */
repeat;
}
[] BSSGP.receive(tr_BD_L3(tr_GMM_ATTACH_REJECT('09'O))) {
setverdict(pass);
}
[] BSSGP.receive(tr_BD_L3(tr_GMM_ATTACH_REJECT(?))) {
setverdict(fail, "Wrong Attach Reject Cause");
}
}
}
testcase TC_attach_auth_id_timeout() runs on test_CT {
var BSSGP_ConnHdlr vc_conn;
f_init();
vc_conn := f_start_handler(refers(f_TC_attach_auth_id_timeout), testcasename(), g_gb[0], 2, 40.0);
vc_conn.done;
}
/* HLR never responds to SAI REQ, expect ATTACH REJECT */
private function f_TC_attach_auth_sai_timeout(charstring id) runs on BSSGP_ConnHdlr {
var MobileIdentityLV mi;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
if (ispresent(g_pars.p_tmsi)) {
mi := valueof(ts_MI_TMSI_LV(g_pars.p_tmsi));
} else {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
}
BSSGP.send(ts_GMM_ATTACH_REQ(mi, old_ra, false, false, omit, omit));
alt {
[] as_mm_identity();
[] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); { }
}
/* don't send SAI-response from HLR */
BSSGP.receive(tr_BD_L3(tr_GMM_ATTACH_REJECT(?)));
setverdict(pass);
}
testcase TC_attach_auth_sai_timeout() runs on test_CT {
var BSSGP_ConnHdlr vc_conn;
f_init();
vc_conn := f_start_handler(refers(f_TC_attach_auth_sai_timeout), testcasename(), g_gb[0], 3);
vc_conn.done;
}
/* HLR never responds to UL REQ, expect ATTACH REJECT */
private function f_TC_attach_gsup_lu_timeout(charstring id) runs on BSSGP_ConnHdlr {
var MobileIdentityLV mi;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
if (ispresent(g_pars.p_tmsi)) {
mi := valueof(ts_MI_TMSI_LV(g_pars.p_tmsi));
} else {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
}
BSSGP.send(ts_GMM_ATTACH_REQ(mi, old_ra, false, false, omit, omit));
f_gmm_auth();
/* Expect MSC to perform LU with HLR */
GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi));
/* Never follow-up with ISD_REQ or UL_RES */
alt {
[] BSSGP.receive(tr_BD_L3(tr_GMM_ATTACH_REJECT(?))) {
setverdict(pass);
}
[] BSSGP.receive(tr_BD_L3(tr_GMM_ATTACH_ACCEPT(?, ?, ?))) {
setverdict(fail);
}
}
}
testcase TC_attach_gsup_lu_timeout() runs on test_CT {
var BSSGP_ConnHdlr vc_conn;
f_init();
f_sleep(1.0);
vc_conn := f_start_handler(refers(f_TC_attach_gsup_lu_timeout), testcasename(), g_gb[0], 4);
vc_conn.done;
}
control {
execute( TC_wait_ns_up() );
execute( TC_attach() );
execute( TC_attach_auth_id_timeout() );
execute( TC_attach_auth_sai_timeout() );
execute( TC_attach_gsup_lu_timeout() );
}