hnbgw: Add test to check for duplicate hnb registrations

Change-Id: Ib20d07ffabb91dfa82c212aaa363cafc7496bba8
Related: OS#6084
This commit is contained in:
Daniel Willmann 2022-08-23 17:48:39 +02:00
parent 6d2d8885c8
commit c79679a2de
1 changed files with 33 additions and 13 deletions

View File

@ -208,7 +208,7 @@ function f_create_ranap_exp(octetstring l3_enc) runs on ConnHdlr {
}
const integer NUM_HNB := 1;
const integer NUM_HNB := 2;
type record HnbConfig {
LocationAreaIdentification lai,
@ -320,13 +320,6 @@ function f_init_hnodeb(charstring id, integer hnb_idx, RuaOps rua_ops) runs on t
/* global initialization function */
function f_init(charstring id := "HNBGW", float guard_timeout := 30.0) runs on test_CT {
g_hnb_cfg[0] := {
lai := {
mcc_mnc := '00101'H,
lac := 2342
},
sac := 55
}
T_guard.start(guard_timeout);
activate(as_Tguard());
@ -336,6 +329,13 @@ function f_init(charstring id := "HNBGW", float guard_timeout := 30.0) runs on t
unitdata_cb := refers(IuhRanapUnitdataCallback)
};
for (var integer i := 0; i < NUM_HNB; i := i+1) {
g_hnb_cfg[i] := {
lai := {
mcc_mnc := '00101'H,
lac := 2342 + i
},
sac := 55
};
f_init_hnodeb(testcasename(), i, rua_ops);
}
@ -374,7 +374,7 @@ friend function f_shutdown_helper() runs on test_CT {
/* helper function to start all of the simulated hNodeBs */
function f_start_hnbs() runs on test_CT {
for (var integer i:= 0; i < NUM_HNB; i := i+1) {
f_hnbap_register(i);
f_hnbap_register(i, i);
}
}
@ -634,13 +634,13 @@ friend function f_build_rab_ass_resp(TestHdlrParams pars) return RANAP_PDU {
***********************************************************************/
function f_hnbap_register(integer hnb_idx := 0) runs on test_CT
function f_hnbap_register(integer hnb_idx := 0, integer cell_id := 0, boolean expect_reject := false) runs on test_CT
{
timer T := 2.0;
HNBAP[hnb_idx].send(tr_HNBAP_HNBRegisterRequest(char2oct("TTCN3 HNodeB"),
'00F110'O,
int2bit(1 + hnb_idx, 28),
int2bit(1 + cell_id, 28),
int2oct(2, 2),
int2oct(3, 1),
int2oct(4, 2)));
@ -648,13 +648,24 @@ function f_hnbap_register(integer hnb_idx := 0) runs on test_CT
T.start;
alt {
[] HNBAP[hnb_idx].receive(tr_HNBAP_HNBRegisterAccept(?)) {
setverdict(pass);
if (expect_reject) {
setverdict(fail, "Rx HNB Register Accept while expecting reject");
} else {
setverdict(pass);
}
}
[] HNBAP[hnb_idx].receive(tr_HNBAP_HNBRegisterReject(?)) {
if (expect_reject) {
setverdict(pass);
} else {
setverdict(fail, "Rx HNB Register Reject while expecting accept");
}
}
[] HNBAP[hnb_idx].receive(IUHEM_Event:?) {
repeat;
}
[] T.timeout {
setverdict(fail, "Timeout waiting for HNB Register Accept");
setverdict(fail, "Timeout waiting for HNB Register response");
}
}
}
@ -665,6 +676,14 @@ testcase TC_hnb_register() runs on test_CT {
f_shutdown_helper();
}
testcase TC_hnb_register_duplicate() runs on test_CT {
f_init();
f_hnbap_register(0);
f_hnbap_register(1, 0, expect_reject := true);
f_verify_talloc_count(HNBGWVTY, {"struct hnb_context"}, expect_count := 1);
f_shutdown_helper();
}
/***********************************************************************
* RUA / RANAP Testing
***********************************************************************/
@ -1322,6 +1341,7 @@ testcase TC_ps_rab_assignment() runs on test_CT {
control {
execute(TC_hnb_register());
execute(TC_hnb_register_duplicate());
execute(TC_ranap_cs_initial_ue());
execute(TC_ranap_ps_initial_ue());
execute(TC_ranap_cs_initial_ue_empty_cr());