Skip to content

Loading builds...

Changes

#3223 (Mar 30, 2026, 12:28:07 PM)

stp: m3ua: Fix incorrect RCTX being sent in TC_combinedlset_loadshare

An ASPAC was being sent containing an RCTX of an unrelated AS to the
sending ASP.
Newer libosmo-sigtran properly validates AS/RCTX is associated to the
ASP in the local config, and hence now returns an error properly making
the test fail.

Change-Id: Id8381a028a919a265ca330ef4f61c76637c168f6
Pau Espin Pedrol at

#3222 (Mar 30, 2026, 11:53:06 AM)

pgw: Test v6 and v4v6 PDU session userplane

Change-Id: Idf009b9118db8117c547a1bb0f27afdfa3f03924
Pau Espin Pedrol at

#3221 (Mar 30, 2026, 10:08:07 AM)

stp: STP_Tests_IPA: Introduce tests TC_ipa_tcp_{cli,srv}_adm_shutdown

Related tests already exist for M3UA and M3UA_TCP, but were missing for
IPA ASPs.

Change-Id: Ie30de6caa3e2b680aff9e50898e63f615b526500
Related: OS#6752
Pau Espin Pedrol at

#3220 (Mar 30, 2026, 8:28:06 AM)

stp: STP_Tests_M3UA_TCP: Introduce tests TC_m3ua_tcp_{cli,srv}_adm_shutdown

Related tests already existed for STP_Tests_M3UA, but we want to
explicitly test against M3UA_TCP since these tests involve the transport
layer directly.

Related: OS#6752
Change-Id: Ia37a0e244895fbb447ef8e71a0980538cc9fd7f8
Pau Espin Pedrol at

#3214 (Mar 25, 2026, 8:13:06 PM)

5gc: Introduce test TC_pdu_sess_est_pco_pcscf

Our deps/nas fork is modified to fix multiple incorrect definitions
around ProtocolContainer record.

Change-Id: Ic7b22ad647bcac944551ac1c29080f895ca72cf8
Pau Espin Pedrol at
GTPv2_Templates: Add enum for PDN Type and use it in pgw testsuite

Change-Id: I9833e998522a09a15b93c8fed0e18a5e8159d760
Pau Espin Pedrol at
GTPv1U_Emulation: Rename s/f_gtp1u_ping4/f_gtp1u_ping/

The function can also be (and is) used to ping IPv6 hosts.

Change-Id: I195cb048176aefddcb477083ddc949b86ec592fa
Pau Espin Pedrol at

#3213 (Mar 25, 2026, 4:23:09 PM)

5gc: Introduce test TC_pdu_sess_est_always_on

This feature is right now not implemented in open5gs and hence the test
is expected to fail, since it returns no AlwaysOn Indication in PDU
Session Establishment Accept.

Change-Id: I282e0c8072172fa633bf82ed6b9492b0bb4362cc
Pau Espin Pedrol at
5gc: Remove arleady tested TODO

PDU Sess Est Req with emeregency services is already tested in test
TC_normal_reg_emergency_services.

Change-Id: I5e2d202ffd019b22a006637534922e0ba1d09ca0
Pau Espin Pedrol at

#3212 (Mar 25, 2026, 1:08:09 PM)

s1gw: generalize f_TC_e_rab_setup_failure() for N E-RABs

The existing TC only tested PFCP Session Establishment failure with a
single E-RAB.  Generalize f_TC_e_rab_setup_failure() to use g_pars.erabs
throughout, so it works for any num_erabs: E-RAB 0 still triggers the
only PFCP Session Establishment Request (S1GW processes sequentially),
while all E-RABs in the request are expected to appear in the failure
response.

Add TC_e_rab_setup3_failure() which re-uses the same body with
num_erabs := 3, verifying that the S1GW lists all three E-RABs as
failed rather than just the first one.  Also make f_tr_E_RABList()
non-private so it is accessible from S1GW_Tests.ttcn.

Change-Id: I8a5dc338d28013dc85e1ce4b3bdac92cb3b35304
Related: osmo-s1gw.git I7933fceb0edcdfdc95ace35416297b11c83f0bc9
Vadim Yanitskiy at

#3210 (Mar 24, 2026, 12:58:07 PM)

GTPv1U_Emulation: Clear entries from PidTable upon rx CUPS program_term_ind

Otherwise it will evnetually run out of entries if enough commands are
called sequentially.

Change-Id: I7be2639761726c09e4ea6f75c57d8414c5dbf128
Pau Espin Pedrol at
5gc: Introduce tests TC_ng_register_ping6(_256)

Change-Id: Iedf3697265b91bdda85e8d32402345ea8d58dc9f
Pau Espin Pedrol at
5gc: Introduce tests TC_ng_register_ping46(_256)

Depends: osmo-uecups.git Change-Id Ic2da7a761a8df7e006fc02ca6557a48f371e4151
Change-Id: I9cb250f07ac356b7345a570ed71590f041168ed2
Pau Espin Pedrol at

#3209 (Mar 24, 2026, 9:28:06 AM)

GTPv1U_Emulation: Support IPv6 SLAAC with osmo-uecups

Depends: osmo-uecups.git Change-Id I917b5c70f143d48b55b4e270e24594d1a36f71aa
Change-Id: Ic368383ea65161297e57a298a12c7b4adc927142
Pau Espin Pedrol at

#3207 (Mar 23, 2026, 7:13:09 PM)

General_types.ttcn: Introduce type OCT4_20n

This is useful to store EUAs of type v4,v6 or v4v6.

Change-Id: I00a35c444e3fb498712fbb4b9c310375c527052f
Pau Espin Pedrol at

#3203 (Mar 20, 2026, 9:13:08 PM)

eIM_Tests: align RSP version number in HTTP header

The RSP version number in the x-admin-protocol header string should
be set to v.2.1.0 (gsma/rsp/v2.1.0), even though the ASN.1 spec we
currently use is at version 2.5.

This is to maintain compatibility with older IPAd versions and also
stated explicitly in GSMA SGP.32 V2.1, section 6.1.

Change-Id: I125c3b13697c71d35788e54b7d88a9f943bb7a71
Related: SYS#7945
laforge at

#3202 (Mar 20, 2026, 9:08:05 PM)

library/HTTP_Adapter: clarify response template restriction

Change-Id: I1a5ee842c30de9ec22d9e375f6b1b24b3eaee1e0
Vadim Yanitskiy at
library/HTTP_Adapter: bail out early on failure

Replace `self.stop` with `Misc_Helpers.f_shutdown()`, and add it after
existing `setverdict(fail, ...)` calls that previously fell through.

In all these cases there is no meaningful way to continue: the caller
of these functions usually expects a valid value to be returned, and
continuing (not stopping) oftentimes results in confusing DTEs.

Change-Id: I229028d551d5cf9651e6e65314cd40f414bfe235
Vadim Yanitskiy at
s1gw: f_REST_*(): use tr_HTTP_RespBody(decmatch T:?)

Pass `exp := tr_HTTP_RespBody(decmatch T:?)` to f_http_transact() in
every REST helper that decodes the response body.  This ensures both
a 2xx status code and a decodable body are required before any decode
attempt is made, producing an informative "Unexpected HTTP response"
verdict (rather than a confusing DTE) when e.g. an older osmo-s1gw
returns HTTP 404 with an empty body for an unsupported endpoint.

Change-Id: I6997dae5314d4a4588386183832426ab5b8d0843
Vadim Yanitskiy at

#3199 (Mar 18, 2026, 11:43:09 AM)

s1gw: initial testcases for MME pooling

Three test cases covering the MME pool selection logic in OsmoS1GW:

* TC_mme_pool_reject_fallback: S1GW falls back to the next pool entry
  when the first MME rejects S1SetupReq with S1SetupFailure.
* TC_mme_pool_timeout_fallback: S1GW falls back when the first MME
  does not respond to S1SetupReq within the timeout.
* TC_mme_pool_all_reject: all pool entries reject S1SetupReq; S1GW
  must send S1SetupFailure to the eNB and tear down the connection.

Infrastructure added to support these tests:

* S1AP_Server.ttcn: S1AP_ServerList type; directed register/unregister
  helpers (f_ConnHdlr_s1ap_register_to / _unregister_from) for use
  when multiple S1AP_Server_CT instances are active simultaneously.
* S1GW_ConnHdlr.ttcn: f_ConnHdlr_s1ap_setup_pool() drives the pool
  setup sequence: pre-registers with all servers, sends S1SetupReq once
  (S1GW re-transmits it per-MME), then iterates through the expected
  behaviors (ACCEPT / REJECT / TIMEOUT) waiting for each server in turn.
* S1GW_Tests.ttcn: f_init_s1ap_srv(N) starts N MME emulators on
  consecutive IP addresses; f_TC_exec_pool() orchestrates pool tests.
* osmo-s1gw.config: a 'mme_pool' section with three entries is added
  alongside the existing sctp_client section.  Older OsmoS1GW (without
  pooling support) will use sctp_client to connect to a single MME and
  the pool test cases will simply fail, as expected.  Newer OsmoS1GW
  will use mme_pool and all three test cases will pass.

Change-Id: Ib8fd62e4352e3055971a669b8b363078bcd95d8d
Related: SYS#7052
Vadim Yanitskiy at
s1gw: add testcases for impatient eNB during MME pool selection

Two new test cases covering scenarios where the eNB disconnects before
S1 setup completes, targeting specific states of the enb_proxy FSM:

* TC_mme_pool_enb_disc_wait_s1setup_req: eNB connects but disconnects
  before sending S1SetupReq (enb_proxy in wait_s1setup_req).  No MME
  connection is ever attempted; S1GW must handle the disconnect cleanly.

* TC_mme_pool_enb_disc_wait_s1setup_rsp: eNB sends S1SetupReq, S1GW
  forwards it to the first pool MME (enb_proxy in wait_s1setup_rsp),
  then eNB disconnects before the response arrives.  S1GW must detect
  the eNB disconnect and close the open MME connection in response.

A new helper S1GW_ConnHdlr.f_ConnHdlr_s1ap_close() is added for these
tests: unlike f_ConnHdlr_s1ap_disconnect(), it closes the eNB-side
socket without waiting for an S1APSRV_EVENT_CONN_DOWN from a pool
server (since in these scenarios either no MME connection exists
yet, or the CONN_DOWN is captured by the test body directly).

Change-Id: I5d27cdafcb9f595a2d3db59beff17cd55de2539e
Related: SYS#7052
Vadim Yanitskiy at
s1gw: add tests for MME registry REST procedures

Add three test cases exercising the S1GW REST interface for MME pool
management.  The REST TCs are gated on the mp_rest_enable module
parameter in the control block.

TC_rest_mme_list: query the MME pool list via REST and verify it
matches the three static entries from the 'mme_pool' section in
osmo-s1gw.config (mme0/mme1/mme2 with their respective addresses).

TC_rest_mme_add_del: add a new MME entry at runtime via REST, verify
it appears in both the list and individual GET responses, then delete
it and confirm it is gone.

TC_rest_mme_del_fallback: delete mme0 from the pool at runtime and
verify that a connecting eNB is routed directly to mme1, skipping the
deleted entry.  The pool is restored to its original state afterwards
via f_REST_mme_pool_restore().

Also add:
* {ts,tr}_MmeItem templates to S1GW_REST_Types.ttcn
* f_REST_mme_find(): returns the integer index of a named entry in a
  MmeList, or -1 if not found; used for both presence and absence checks
* f_REST_mme_pool_restore(): deletes all current entries and re-adds
  mme0/mme1/mme2 in original order to keep pool state predictable
  across test cases

Change-Id: I260bc987ab8ae0ecb547d0b69b261fd97c5c9c23
Related: SYS#7052
Vadim Yanitskiy at
s1gw: enable the REST interface, fix wrong REST port

REST had been disabled because only nightly builds supported it.
The latest stable release (v0.4.0) also supports the REST interface,
so let's enable it unconditionally by removing the mp_rest_enable.

Also fix the REST port: mp_rest_port was incorrectly set
to 8125 (the StatsD port) instead of the actual REST port 8080.

Change-Id: I012749076c652ab541e569026eb01c696ad5adc8
Related: SYS#7052, SYS#7066
Vadim Yanitskiy at
s1gw: use REST interface to check PFCP assoc state

It's quicker to query the IUT using the REST interface rather than
waiting for StatsD metric "gauge.pfcp.associated.value" to be received.
As a bonus, we "learn" the local/remote RTS from the S1GW, which can
be used in new PFCP related testcases.

Change-Id: Iec7594e79f533b08ee93b443a39cb9c8ff03da43
Vadim Yanitskiy at
s1gw: add README.md

Change-Id: Ib5c1326c4260bf552b561a42f7ff9d3f28f89579
Vadim Yanitskiy at

#3198 (Mar 18, 2026, 11:13:09 AM)

5gc: Update mobility procedure status

There's no procedure to do direct mobility between GERAN/UTRAN and 5GS
according to spec, and IP preservation is not supported either through
indirect mobility GERAN/UTRAN<->EUTRAN<->5GS.

Regarding 3GPP TS 23.502 Annex G, open5gs-smfd supports Gn interface but
only when working against a 4G MME, not through 5GS (PCF and AMF).

Related specs:
*3GPP TS 23.501:
** 5.17.2.4 Mobility between 5GS and GERAN/UTRAN
** Annex L (normative): Support of GERAN/UTRAN access
* 3GPP TS 23.502 4.11.5 Impacts to 5GC Procedures
* 3GPP TS 23.632 5.3 5GC-EPC Mobility Scenarios

Change-Id: I6bb8672fbd553a1a2a51b97a8360658afa0fddff
Pau Espin Pedrol at
5gc: f_pdu_sess_establish(): Pass pdu sess type as param

Change-Id: I86680b0a2f5ddb27ecbebd5639199d2f77d397f6
Pau Espin Pedrol at
SCCP_Adapter: Fix typo in setverdict string

Change-Id: I8924bf646b5c45e71746d3e76cf6aa3aa3fb674c
Pau Espin Pedrol at

#3196 (Mar 17, 2026, 7:28:10 PM)

5gc: Introduce test TC_normal_reg_emergency_services_fallback

Change-Id: I17f15d901a10791ae0ad208b7d6ea9a333b93dad
Pau Espin Pedrol at
5gc: Document 'SMS over NAS' procedures as not implemented by open5gs

Change-Id: I7e69fc8076b3177b8d5513170aecdc1f3f92cd8d
Pau Espin Pedrol at
5gc: Document Location Services as not implemented by open5gs

Change-Id: I784ecc13018456278d228120cb22b786be6532ac
Pau Espin Pedrol at
5gc: Remove conditional check for nightly repo in TC_pdu_sess_modification

open5gs 2.7.7 was recently released, so there's no need to guard for
nightly repo, since latest repo should contain now 2.7.7 with the needed
fix.

Change-Id: Ie37fb0e895710fdc7a4d497812cc2585b00996f8
Pau Espin Pedrol at
5gc: Document multiple inter RAT procedures not implemented

Change-Id: I71cee40c79d7266ca46fa9757df18605646b320f
Pau Espin Pedrol at
5gc: Introduce test TC_secondary_rat_data_usage_report

Change-Id: I8a82b1a8bcea948356d819af5c4919ae3829e549
Pau Espin Pedrol at
NGAP_Templates: Fix wrong IE id in n2_PDUSessionResourceModifyConfirm

Change-Id: Iddcf4e3081d47f91e3b6ec52186116bf93e28c90
Pau Espin Pedrol at
5gc: Introduce test TC_ran_initiated_qos_flow_mobility

Change-Id: I1a1df29fa254496990d3d9099b3072433468ecb1
Pau Espin Pedrol at