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 { type record HnbConfig {
LocationAreaIdentification lai, LocationAreaIdentification lai,
@ -320,13 +320,6 @@ function f_init_hnodeb(charstring id, integer hnb_idx, RuaOps rua_ops) runs on t
/* global initialization function */ /* global initialization function */
function f_init(charstring id := "HNBGW", float guard_timeout := 30.0) runs on test_CT { 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); T_guard.start(guard_timeout);
activate(as_Tguard()); 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) unitdata_cb := refers(IuhRanapUnitdataCallback)
}; };
for (var integer i := 0; i < NUM_HNB; i := i+1) { 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); 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 */ /* helper function to start all of the simulated hNodeBs */
function f_start_hnbs() runs on test_CT { function f_start_hnbs() runs on test_CT {
for (var integer i:= 0; i < NUM_HNB; i := i+1) { 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; timer T := 2.0;
HNBAP[hnb_idx].send(tr_HNBAP_HNBRegisterRequest(char2oct("TTCN3 HNodeB"), HNBAP[hnb_idx].send(tr_HNBAP_HNBRegisterRequest(char2oct("TTCN3 HNodeB"),
'00F110'O, '00F110'O,
int2bit(1 + hnb_idx, 28), int2bit(1 + cell_id, 28),
int2oct(2, 2), int2oct(2, 2),
int2oct(3, 1), int2oct(3, 1),
int2oct(4, 2))); int2oct(4, 2)));
@ -648,13 +648,24 @@ function f_hnbap_register(integer hnb_idx := 0) runs on test_CT
T.start; T.start;
alt { alt {
[] HNBAP[hnb_idx].receive(tr_HNBAP_HNBRegisterAccept(?)) { [] 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:?) { [] HNBAP[hnb_idx].receive(IUHEM_Event:?) {
repeat; repeat;
} }
[] T.timeout { [] 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(); 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 * RUA / RANAP Testing
***********************************************************************/ ***********************************************************************/
@ -1322,6 +1341,7 @@ testcase TC_ps_rab_assignment() runs on test_CT {
control { control {
execute(TC_hnb_register()); execute(TC_hnb_register());
execute(TC_hnb_register_duplicate());
execute(TC_ranap_cs_initial_ue()); execute(TC_ranap_cs_initial_ue());
execute(TC_ranap_ps_initial_ue()); execute(TC_ranap_ps_initial_ue());
execute(TC_ranap_cs_initial_ue_empty_cr()); execute(TC_ranap_cs_initial_ue_empty_cr());