Attention is currently required from: pespin.
fixeria has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38685?usp=email )
Change subject: hnbgw: Small fixes in f_tc_rab_assignment()
......................................................................
Patch Set 2: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38685?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I2f21d3ed59f6b8d26cfee3bd8e75c63cc9d710a3
Gerrit-Change-Number: 38685
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 07 Nov 2024 15:38:04 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38680?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: RUA_Emulation: Add missing msg component destination
......................................................................
RUA_Emulation: Add missing msg component destination
Seen while running lots of components concurrently:
"RUA_Emulation.ttcn:315 Dynamic test case error: Port CLIENT has more
than one active connections. Message can be sent on it only with
explicit addressing."
Change-Id: Ief257969a451f2d11ad7619fb97af16d7dd7e199
---
M library/rua/RUA_Emulation.ttcn
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
diff --git a/library/rua/RUA_Emulation.ttcn b/library/rua/RUA_Emulation.ttcn
index 26c2da7..8b28a98 100644
--- a/library/rua/RUA_Emulation.ttcn
+++ b/library/rua/RUA_Emulation.ttcn
@@ -312,7 +312,7 @@
}
/* notify user of disconnect */
if (CLIENT.checkstate("Connected")) {
- CLIENT.send(RUA_Disc_Ind:{cause});
+ CLIENT.send(RUA_Disc_Ind:{cause}) to vc_conn;
}
f_conn_table_del(context_id);
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38680?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ief257969a451f2d11ad7619fb97af16d7dd7e199
Gerrit-Change-Number: 38680
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38674?usp=email )
Change subject: hnbgw: with-pfcp: Support running ConnHdlr concurrently
......................................................................
hnbgw: with-pfcp: Support running ConnHdlr concurrently
Use Mutex to serialize PFCP session establishment to workaround the
"Req with SEID=0" dispatching problem.
This same system is used in S1GW_Tests.
Change-Id: Ie19ee0bd1b811e9381e3c245a4b1208de8afcbce
---
M hnbgw/ConnHdlr.ttcn
M hnbgw/HNBGW_Tests.ttcn
M hnbgw/gen_links.sh
3 files changed, 29 insertions(+), 4 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, approved
diff --git a/hnbgw/ConnHdlr.ttcn b/hnbgw/ConnHdlr.ttcn
index 9205599..560d732 100644
--- a/hnbgw/ConnHdlr.ttcn
+++ b/hnbgw/ConnHdlr.ttcn
@@ -74,6 +74,8 @@
import from SCCPasp_Types all;
import from SCCP_Templates all;
+import from Mutex all;
+
/***********************************************************************
* code running inside per-UE ConnHdlr
***********************************************************************/
@@ -84,13 +86,15 @@
* MGCP_ConnHdlr (for the MGCP side, emulating the MGW)
* StatsD_ConnHdlr (for the statsd interface, verifying counters)
*/
-type component ConnHdlr extends RAN_ConnHdlr, MGCP_ConnHdlr, RUA_ConnHdlr, PFCP_ConnHdlr, StatsD_ConnHdlr {
+type component ConnHdlr
+extends RAN_ConnHdlr, MGCP_ConnHdlr, RUA_ConnHdlr, PFCP_ConnHdlr, StatsD_ConnHdlr, MutexCT {
var integer g_sccp_conn_id;
var TestHdlrParams g_pars;
timer g_Tguard;
port TELNETasp_PT HNBGWVTY;
}
+type record of ConnHdlr ConnHdlrList;
type record MgwResponse {
integer resp,
@@ -774,6 +778,15 @@
var RANAP_PDU rx;
var PDU_PFCP m;
+ /* This code block cannot be executed by more than one component at a time because
+ * the RANAP RAB Ass Request triggers the IUT to send PFCP Session Establishment
+ * Request PDU(s), which needs to be routed to the respective ConnHdlr component (us).
+ * As per 3GPP TS 29.244, section 7.2.2.4.2, these PFCP PDUs shall all have SEID=0,
+ * so that the PFCPEM component cannot route them unambiguously. This is why we
+ * need to ensure that only one ConnHdlr is triggering PFCP session establishment
+ * at the given moment of time. */
+ f_Mutex_lock(__BFILE__, __LINE__);
+
/* Subscribe for PFCP Session Establishment Request PDU(s), which are
* expected to have SEID set to 0, as per 3GPP TS 29.244, section 7.2.2.4.2. */
f_PFCPEM_subscribe_seid(c_SEID0);
@@ -788,8 +801,11 @@
m := f_pfcp_expect(tr_PFCP_Session_Est_Req());
/* Ask PFCPEM to route PDUs with to be indicated F-SEID to us. */
f_PFCPEM_subscribe_seid(g_pars.pfcp_pars.upf_f_seid.seid);
- /* We no longer expect to receive PFCP Session Establishment Request PDU(s). */
+ /* We're done establishing PFCP sessions, so at this point we no longer expect to
+ * receive Session Establishment Request PDUs with SEID=0. Unregister and unlock
+ * the mutex, enabling other components to establish PFCP sessions after us. */
f_PFCPEM_unsubscribe_seid(c_SEID0);
+ f_Mutex_unlock(__BFILE__, __LINE__);
var PFCP_Session_Establishment_Request serq := m.message_body.pfcp_session_establishment_request;
/* Store HNBGW F-SEID for later: */
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 97ae334..91bbb11 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -75,6 +75,7 @@
import from SCCPasp_Types all;
import from ConnHdlr all;
+import from Mutex all;
const integer NUM_MSC := 4;
const integer NUM_SGSN := 4;
@@ -275,6 +276,8 @@
var CounterNameValsList g_ctr_hnb;
var RanOps g_ran_ops := MSC_RanOps;
+
+ var MutexDispCT vc_mutex_disp;
}
/* global altstep for global guard timer; */
@@ -488,6 +491,8 @@
T_guard.start(guard_timeout);
activate(as_Tguard());
+ vc_mutex_disp := f_MutexDisp_start();
+
f_init_statsd("VirtHNBGW", vc_STATSD, mp_local_statsd_ip, mp_local_statsd_port);
f_init_vty("VirtHNBGW");
f_ipa_ctrl_start_client(mp_hnbgw_ip, mp_hnbgw_ctrl_port);
@@ -586,7 +591,8 @@
pfcp_pars := t_PfcpParams(pfcp_enabled := mp_enable_pfcp_tests,
pfcp_local_addr := mp_pfcp_ip_local,
- pfcp_upf_node_id := mp_pfcp_upf_node_id);
+ pfcp_upf_node_id := mp_pfcp_upf_node_id,
+ upf_f_seid := 1000 + imsi_suffix);
pars := t_pars(imsi_suffix,
ps_domain := ps_domain,
expect_separate_sccp_cr := expect_separate_sccp_cr,
@@ -637,13 +643,15 @@
connect(vc_conn:PFCP, vc_PFCP:CLIENT);
connect(vc_conn:PFCP_PROC, vc_PFCP:CLIENT_PROC);
+ f_MutexDisp_connect(vc_mutex_disp, vc_conn);
+
return vc_conn;
}
private function f_start_handler_run(ConnHdlr vc_conn, void_fn fn, TestHdlrParams pars) runs on test_CT {
var charstring id := testcasename(); // & int2str(pars.ran_idx);
pars.hnb := g_hnb_cfg[pars.hnb_idx];
- vc_conn.start(f_handler_init(fn, id, pars))
+ vc_conn.start(f_handler_init(fn, id, pars));
}
function f_start_handler_with_pars(void_fn fn, template (value) TestHdlrParams pars)
diff --git a/hnbgw/gen_links.sh b/hnbgw/gen_links.sh
index 51ce602..de173f1 100755
--- a/hnbgw/gen_links.sh
+++ b/hnbgw/gen_links.sh
@@ -105,6 +105,7 @@
FILES+="StatsD_Types.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_CodecPort_CtrlFunctdef.cc StatsD_Checker.ttcnpp "
FILES+="L3_Templates.ttcn L3_Common.ttcn "
FILES+="SCTP_Templates.ttcn "
+FILES+="Mutex.ttcn "
gen_links $DIR $FILES
ignore_pp_results
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38674?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ie19ee0bd1b811e9381e3c245a4b1208de8afcbce
Gerrit-Change-Number: 38674
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38675?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: RAN_Emulation: Increase ExpecTable size to 16
......................................................................
RAN_Emulation: Increase ExpecTable size to 16
Use same size as other tables.
This allow running HNBGW_Tests with 16 ConnHdlrs instead of 8.
Change-Id: I0748da523d886a8097b9f35991b9044e6ca33f95
---
M library/RAN_Emulation.ttcnpp
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
diff --git a/library/RAN_Emulation.ttcnpp b/library/RAN_Emulation.ttcnpp
index 9f942f3..5eb14de 100644
--- a/library/RAN_Emulation.ttcnpp
+++ b/library/RAN_Emulation.ttcnpp
@@ -273,7 +273,7 @@
var ConnectionData ConnectionTable[16];
/* pending expected incoming connections */
- var ExpectData ExpectTable[8];
+ var ExpectData ExpectTable[16];
/* tables for mapping inbound unitdata (like paging) */
var ImsiMapping ImsiTable[16];
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38675?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I0748da523d886a8097b9f35991b9044e6ca33f95
Gerrit-Change-Number: 38675
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38678?usp=email )
Change subject: hnbgw: mgcp: Support running CS RAB ConnHdlr concurrently
......................................................................
hnbgw: mgcp: Support running CS RAB ConnHdlr concurrently
Use Mutex to serialize CRCX wildcard endpoint, in order to be able
to properly steer the message to the good ConnHdlr.
Change-Id: Ibd97a37d98abfa746b58db0ea8bb591e7c8dc638
---
M hnbgw/ConnHdlr.ttcn
M hnbgw/HNBGW_Tests.ttcn
2 files changed, 14 insertions(+), 11 deletions(-)
Approvals:
pespin: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/hnbgw/ConnHdlr.ttcn b/hnbgw/ConnHdlr.ttcn
index 7ba5b94..44e4cce 100644
--- a/hnbgw/ConnHdlr.ttcn
+++ b/hnbgw/ConnHdlr.ttcn
@@ -687,6 +687,15 @@
var template RAB_SetupOrModifyList rab_sml;
timer T := 5.0;
+ /* This code block cannot be executed by more than one component at a time because the
+ * RANAP RAB Ass Request triggers the IUT to send MGCP CRCX PDU(s), which needs to be
+ * routed to the respective ConnHdlr component (us). This is why we need to ensure that
+ * one ConnHdlr is triggering MGCP CRCX wildcard at the given moment of time.
+ */
+ f_Mutex_lock(__BFILE__, __LINE__);
+
+ f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
+
/* Send RAB Assignment Request */
rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(g_pars.mgcp_pars.cn_rtp_ip), t_RAB_binding_port(g_pars.mgcp_pars.cn_rtp_port));
tx := valueof(ts_RANAP_RabAssReq(rab_sml));
@@ -697,11 +706,15 @@
alt {
[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
log("CRCX1", mgcp_cmd);
+ /* Unregister and unlock the mutex, enabling other components to
+ * establish MGCP sessions after us. */
+ f_Mutex_unlock(__BFILE__, __LINE__);
var template MgcpResponse mgcp_rsp := f_handle_crcx(g_pars.mgcp_pars, mgcp_cmd);
MGCP.send(valueof(mgcp_rsp));
}
[] T.timeout {
- setverdict(fail, "Timeout waiting for MGCP");
+ /* No need to f_Mutex_unlock since we are exiting anyway... */
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for MGCP");
}
}
T.stop;
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 6441cef..e367666 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -1070,8 +1070,6 @@
var RANAP_PDU tx;
timer T := 5.0;
- f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
f_statsd_reset();
tx := f_build_initial_ue(g_pars);
@@ -1114,8 +1112,6 @@
var RANAP_PDU tx;
timer T := 5.0;
- f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
f_statsd_reset();
tx := f_build_initial_ue(g_pars);
@@ -1170,8 +1166,6 @@
var RANAP_PDU tx;
timer T := 15.0;
- f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
f_statsd_reset();
tx := f_build_initial_ue(g_pars);
@@ -1407,8 +1401,6 @@
var RANAP_PDU tx;
timer T := 5.0;
- f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
tx := f_build_initial_ue(g_pars);
f_iuh2iu_connect(tx);
@@ -2329,8 +2321,6 @@
var RANAP_PDU tx;
timer T := 5.0;
- f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
-
tx := f_build_initial_ue(g_pars);
f_iuh2iu_connect(tx);
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38678?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ibd97a37d98abfa746b58db0ea8bb591e7c8dc638
Gerrit-Change-Number: 38678
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>