neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/29231 )
Change subject: hnbgw: test PS RAB Ass both with and without PFCP ......................................................................
hnbgw: test PS RAB Ass both with and without PFCP
Add mp_enable_pfcp_tests. When true, osmo-hnbgw-with-pfcp.cfg needs to be used.
Related: I39b9632f8524a9f3455c1a2d7611bfe8ba07c2fd (osmo-hnbgw) Related: I02b60941343000a4618e95f56326bec170c32bfe (docker-playground) Related: SYS#6093 Change-Id: I511e758807e0512c18f3f9e0a8c4699b9a3f5992 --- M hnbgw/HNBGW_Tests.ttcn A hnbgw/osmo-hnbgw-with-pfcp.cfg M hnbgw/osmo-hnbgw.cfg 3 files changed, 113 insertions(+), 9 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve neels: Looks good to me, approved daniel: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 19df73e..b1868c2 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -97,6 +97,8 @@ rctx := 2 };
+ boolean mp_enable_pfcp_tests := false; + /* IP address at which we listen for PFCP to emulate a UPF in ttcn3 */ charstring mp_pfcp_ip_local := "127.0.0.1";
@@ -1264,7 +1266,7 @@ } }
-friend function f_tc_ps_rab_assignment(charstring id, TestHdlrParams pars) runs on ConnHdlr { +friend function f_tc_ps_rab_assignment_with_pfcp(charstring id, TestHdlrParams pars) runs on ConnHdlr { var RANAP_PDU tx; var RANAP_PDU rx; timer T := 5.0; @@ -1353,14 +1355,76 @@ f_sleep(2.0); }
-testcase TC_ps_rab_assignment() runs on test_CT { +testcase TC_ps_rab_assignment_with_pfcp() runs on test_CT { var ConnHdlr vc_conn; g_num_hnbs := 1; f_init(); f_start_hnbs(); f_sleep(1.0);
- vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment), t_pars(7, ps_domain := true)); + vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_with_pfcp), t_pars(7, ps_domain := true)); + vc_conn.done; +} + +altstep as_disallow_pfcp() runs on ConnHdlr { + [] PFCP.receive(PDU_PFCP:?) { + setverdict(fail, "Received PFCP message, but no PFCP communication expected"); + mtc.stop; + } +} + +friend function f_tc_ps_rab_assignment_without_pfcp(charstring id, TestHdlrParams pars) runs on ConnHdlr { + var RANAP_PDU tx; + var RANAP_PDU rx; + timer T := 5.0; + + f_init_handler(pars); + + f_pfcp_register(); + activate(as_disallow_pfcp()); + + tx := f_build_initial_ue(g_pars); + f_iuh2iu_connect(tx); + + var GtpParameters gtp_pars := valueof(t_GtpParameters); + var template RAB_SetupOrModifyList rab_sml; + + /* Send RAB Assignment Request */ + rab_sml := ts_RAB_SML_ps(t_RAB_id(23), f_ts_RAB_TLA(gtp_pars.core.remote.addr), gtp_pars.core.remote.teid); + tx := valueof(ts_RANAP_RabAssReq(rab_sml)); + BSSAP.send(tx); + + /* Expect on Iuh: unmodified RAB Assignment Request */ + rx := valueof(ts_RANAP_RabAssReq(rab_sml)); + RUA.receive(rx); + + /* Send back RAB Assignment Response via Iuh */ + var template RAB_SetupOrModifiedList rab_smdl; + rab_smdl := ts_RAB_SMdL_ps(t_RAB_id(23), f_ts_RAB_TLA(gtp_pars.access.remote.addr), + gtp_pars.access.remote.teid); + tx := valueof(ts_RANAP_RabAssResp(rab_smdl)); + RUA.send(tx); + + /* Expect on IuPS: unmodified RAB Assignment Response */ + BSSAP.receive(tr_RANAP_RabAssResp(rab_smdl)); + + f_sleep(2.0); + tx := valueof(ts_RANAP_IuReleaseCommand(ts_RanapCause_om_intervention)); + f_iu2iuh(tx); + + tx := valueof(ts_RANAP_IuReleaseComplete()); + f_iuh2iu(tx); + + f_sleep(2.0); +} + +testcase TC_ps_rab_assignment_without_pfcp() runs on test_CT { + var ConnHdlr vc_conn; + f_init(); + f_start_hnbs(); + f_sleep(1.0); + + vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_without_pfcp), t_pars(7, ps_domain := true)); vc_conn.done; }
@@ -1379,7 +1443,12 @@ execute(TC_rab_assign_mgcp_to()); execute(TC_ranap_cs_mo_disconnect()); execute(TC_ranap_ps_mo_disconnect()); - execute(TC_ps_rab_assignment()); + + if (mp_enable_pfcp_tests) { + execute(TC_ps_rab_assignment_with_pfcp()); + } else { + execute(TC_ps_rab_assignment_without_pfcp()); + }
/* Run at the end since it makes osmo-hnbgw <= 1.3.0 crash: OS#5676 */ execute(TC_hnb_reregister_reuse_sctp_assoc()); diff --git a/hnbgw/osmo-hnbgw-with-pfcp.cfg b/hnbgw/osmo-hnbgw-with-pfcp.cfg new file mode 100644 index 0000000..e4dfed2 --- /dev/null +++ b/hnbgw/osmo-hnbgw-with-pfcp.cfg @@ -0,0 +1,40 @@ +! +! OsmoHNBGW (1.1.0) configuration saved from vty +!! +! +log stderr + logging filter all 1 + logging color 1 + logging print category-hex 1 + logging print category 1 + logging print thread-id 0 + logging print extended-timestamp 1 + logging print file 1 + logging level set-all debug +! +line vty + no login +! +cs7 instance 0 + point-code 0.23.5 + sccp-address msc + routing-indicator PC + point-code 0.23.4 + sccp-address sgsn + routing-indicator PC + point-code 0.23.1 +hnbgw + log-prefix hnb-id + iuh + local-ip 127.0.0.1 + local-port 29169 + hnbap-allow-tmsi 1 + iucs + remote-addr msc + iups + remote-addr sgsn + pfcp + remote-addr 127.0.0.1 + local-addr 127.0.0.2 + local-port 8805 + timer pfcp x26 5 diff --git a/hnbgw/osmo-hnbgw.cfg b/hnbgw/osmo-hnbgw.cfg index e4dfed2..f11f613 100644 --- a/hnbgw/osmo-hnbgw.cfg +++ b/hnbgw/osmo-hnbgw.cfg @@ -33,8 +33,3 @@ remote-addr msc iups remote-addr sgsn - pfcp - remote-addr 127.0.0.1 - local-addr 127.0.0.2 - local-port 8805 - timer pfcp x26 5