Add LAPDm test case about SABM contention
This commit is contained in:
parent
dca7e45ce8
commit
599faa1d18
|
@ -44,7 +44,7 @@ module L1CTL_Test {
|
|||
lapdm := frame
|
||||
}
|
||||
/* template for a valid SABM frame */
|
||||
template LapdmFrame LAPDm_B_SABM(template GsmSapi sapi, template octetstring payload) := {
|
||||
template LapdmFrame LAPDm_B_SABM(template GsmSapi sapi, octetstring payload) := {
|
||||
b := {
|
||||
addr := tr_LapdmAddr(sapi, false),
|
||||
ctrl := t_LapdmCtrlSABM(true),
|
||||
|
@ -56,7 +56,19 @@ module L1CTL_Test {
|
|||
}
|
||||
|
||||
/* template for a valid UA frame */
|
||||
template LapdmFrame LAPDm_B_UA(template GsmSapi sapi, template octetstring payload) := {
|
||||
template LapdmFrame tr_LAPDm_B_UA(template GsmSapi sapi, template octetstring payload) := {
|
||||
b := {
|
||||
addr := tr_LapdmAddr(sapi, false),
|
||||
ctrl := t_LapdmCtrlUA(true),
|
||||
len := ?,
|
||||
m := false,
|
||||
el := 1,
|
||||
payload := payload
|
||||
}
|
||||
}
|
||||
|
||||
/* template for a valid UA frame */
|
||||
template LapdmFrame LAPDm_B_UA(template GsmSapi sapi, octetstring payload) := {
|
||||
b := {
|
||||
addr := tr_LapdmAddr(sapi, false),
|
||||
ctrl := t_LapdmCtrlUA(true),
|
||||
|
@ -68,7 +80,7 @@ module L1CTL_Test {
|
|||
}
|
||||
|
||||
/* template for a valid UI frame */
|
||||
template LapdmFrame LAPDm_B_UI(template GsmSapi sapi, template octetstring payload) := {
|
||||
template LapdmFrame LAPDm_B_UI(template GsmSapi sapi, octetstring payload) := {
|
||||
b := {
|
||||
addr := tr_LapdmAddr(sapi, true),
|
||||
ctrl := t_LapdmCtrlUI(false),
|
||||
|
@ -130,6 +142,33 @@ module L1CTL_Test {
|
|||
setverdict(pass);
|
||||
}
|
||||
|
||||
testcase TC_sabm_contention() runs on dummy_CT {
|
||||
var LAPDm_ph_data phd;
|
||||
const octetstring payload := '0102030405'O;
|
||||
const GsmSapi sapi := 0;
|
||||
const boolean use_sacch := false;
|
||||
timer T := 5.0;
|
||||
|
||||
f_init();
|
||||
|
||||
f_establish_dcch();
|
||||
/* first frame is our real SABM */
|
||||
LAPDM.send(t_PH_DATA(sapi, use_sacch, LAPDm_B_SABM(sapi, payload)));
|
||||
/* second frame is a SABM with different payload, which BTS has to ignore according to 8.4.1.4 */
|
||||
LAPDM.send(t_PH_DATA(sapi, use_sacch, LAPDm_B_SABM(sapi, 'ABCDEF'O)));
|
||||
log("====> expecting ", t_PH_DATA(sapi, use_sacch, LAPDm_B_UA(sapi, payload)));
|
||||
T.start
|
||||
alt {
|
||||
[] LAPDM.receive(t_PH_DATA(?, use_sacch, LAPDm_B_UA(sapi, payload))) { setverdict(pass); repeat; }
|
||||
[] LAPDM.receive(t_PH_DATA(?, use_sacch, tr_LAPDm_B_UA(sapi, ?))) {
|
||||
setverdict(fail, "Second SABM was responded to during contention resolution");
|
||||
}
|
||||
[] LAPDM.receive { repeat };
|
||||
[] T.timeout { }
|
||||
}
|
||||
f_release_dcch();
|
||||
}
|
||||
|
||||
|
||||
testcase TC_foo() runs on dummy_CT {
|
||||
/*
|
||||
|
@ -155,10 +194,9 @@ module L1CTL_Test {
|
|||
control {
|
||||
execute(TC_foo());
|
||||
execute(TC_sabm_ua_dcch_sapi0());
|
||||
/*
|
||||
execute(TC_sabm_ua_dcch_sapi0_nopayload());
|
||||
execute(TC_sabm_ua_dcch_sapi3());
|
||||
execute(TC_sabm_ua_dcch_sapi4());
|
||||
*/
|
||||
execute(TC_sabm_contention());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue