Commit
33dfe43fdc8d2ad320ef7bd742f5611aa5642620
by laforge
testenv: display current test name on ^C
When running a whole testsuite and getting a lot of output, it can be useful to know which test was currently running when pressing ^C. Now that we have a function that provides this information, show it to the user.
Commit
d7531335952fd993f56d7632f8c96bf505c765eb
by Oliver Smith
testenv: get coredump + backtrace on crash
If the SUT or another test component crashes, check if a matching coredump was registered in coredumpctl. If that is the case, then copy it into the testdir and print + store the backtrace.
This solves the problem that it is especially tricky to get a good backtrace when a component crashes inside a container. One needs to grab the coredump from the host (usually handled by systemd-coredump, we cannot override /proc/sys/kernel/core_pattern for containers so it can't be handled in the container), then put the coredump into the container and finally run gdb to get the backtrace inside the container (where proper libraries and debug symbols are). This patch automates all of these steps.
Commit
c8d310d7a71739fdad9292ac6678352d2093b453
by laforge
s1gw: fix TC_e_rab_setup: handle PFCP Session related PDUs
S1GW_Tests.TC_e_rab_setup is failing since we introduced the PFCP support to osmo-s1gw. The IUT now requires co-located UPF, which we need to emulate in the testsuite.
Commit
5b3246910ea63dfc9abbafb2e1836484c3e9cd8a
by Oliver Smith
deps/update.sh: split update cmds from Makefile
Move the inline shell commands from the Makefile to a separate script, so they are easier to edit and maintain. Proper syntax highlighting, no need for all the backslashes + &&, etc.
Commit
68b83cd3f62619f764642f5aab491415d3065051
by Oliver Smith
deps/update: don't fetch repos where COMMIT exists
Instead of unconditionally fetching each git repository, check if the commit we want to checkout already exists in the git repository. If that is the case, then don't fetch it.
Commit
ebed76d72ac0e1467b1228146c44f0a1c8b34a29
by Oliver Smith
deps: make output readable
Instead of having a silent fetch and commits printed to stdout without information about the repository they belong to, change the output to have one line per git action and to include the repository name in each of them.
Example output:
[titan.ProtocolEmulations.M3UA] Checking out b58f92046e48a7b1ed531e243a2319ebca53bf4c [titan.ProtocolModules.IP] Checking out 1be86705f39ae38f3c04b2109806ee20d25e91d0 [titan.ProtocolModules.GTP_v13.5.0] Checking out 6b769f985eb91bf5a4332f29faa4a043b23ce62e [titan.ProtocolModules.ICMP] Checking out e49d9fb9f7de637b4bf4803dc6b6e911a8661640 [osmo-uecups] Initial git clone [titan.ProtocolModules.DIAMETER_ProtocolModule_Generator] Checking out ffd939595a08da1b8c8176aaa1f8578bfe02a912 [titan.ProtocolModules.L2TP] Checking out 17e76d3662bd0bb815158e8a9de1ec413f21b530 [titan.ProtocolModules.ICMPv6] Checking out 46f4d9b6e1e3c794294a92588401a81e4881dd27 [titan.ProtocolModules.LLC_v7.1.0] Checking out 09817f113255d7fb56f1d45d3dd629a093d9248d [titan.ProtocolModules.M3UA] Checking out c496d298876fed55c2b730278b7ee77982555563 [titan.ProtocolModules.PFCP_v15.1.0] Checking out d550ad9ddb6f9c823c9a555254cd76cf0e738d18 [titan.ProtocolModules.MobileL3_v13.4.0] Checking out b6602eb357673f097ea1a1d22edd568ecd239da1 [titan.TestPorts.TELNETasp] Checking out 873fe539642542cd9a901c208f1ec11c6d2f5387 [titan.TestPorts.SIPmsg] Checking out 78bf0daf8c599d374089d97a054914d8439d133a [titan.TestPorts.UDPasp] Checking out 54176e95850654e5e8b0ffa2f1b5f35c412b949c [titan.ProtocolModules.BSSGP_v13.0.0] Checking out e97d92a8b66bec399babea52f593771b76cb175a [titan.ProtocolModules.BSSMAP] Checking out 4acb6ab5f058477f0b90c2da182d52054e3614b0 [osmo-uecups] Updating URL to https://gerrit.osmocom.org/osmo-uecups [osmo-uecups] Checking out 8362efef7c6fa341eb947a75786878e0685767b7
Commit
c7e40d6a82ad2a004e5c82d46c5f82a9b7a99dc4
by Vadim Yanitskiy
Makefile: avoid fetching deps if not needed
Running `make deps` for the first time fetches all the dependencies. Running `make deps` again currently results in unnecessary git-fetch and get-checkout operations for each dependency.
This is not as bad as cloning dependencies from scratch every time, but still takes time and triggers unnecessary requests to the servers. It's also creating problems when building testsuites offline.
This patch makes the build system a bit smarter in a way that it would only try to update dependencies if the 'deps/Makefile' was changed.
Commit
452a888e4d109dee6559f5130c8000aa09c0fd60
by Oliver Smith
testenv: testsuite: use rsync with --archive
When running in podman, the source files from the testsuite get copied to a temporary directory to build the testsuites out-of-tree (avoiding conflicts with possibly incompatible binary objects that may exist from previously building the testsuites on the host).
This also copies additional scripts for preparation / clean up that may be used in testenv.cfg. Use the --archive flag with rsync to ensure that the executability is the same. I could have also used --executability, but --archive contains two other existing flags and more flags which may help us from running into unexpected situations such as this one.
Without this patch, there was a bug when: * first creating a shell script but not making it executable * running testenv with podman (where rsync runs and creates the file initially without executable permissions) * making the script executable * running testenv with podman again, rsync will not adjust the permissions for the copy of the file * user wonders why there is a "sh: 1: script.sh: Permission denied" error
Commit
50ae2377c5b423b0836a76791780b19495e69477
by Oliver Smith
testenv: podman.exec_cmd: better error if stopped
Testenv may try to run a comand in podman after the container was stopped, if there is a bug in the shutdown logic. Give a meaningful error in that case, instead of failing later on with a cryptic error in subprocess.run() because None was passed inside cmd (for the container name) instead of a string.
Commit
a247aa34831cf0a5580a8e24a0702956392bf032
by Oliver Smith
testenv: copy=: support copying directories too
In preparation for adding the inital testenv.cfgs for ggsn, allow copying full directories with copy= too. This will make the ggsn testenv.cfg files easier to maintain.
Commit
157897523e54762ec3739cd7842c7b5f5d724ac2
by Oliver Smith
ruff.toml: new file
Add a file in the root dir of the repository to allow running "ruff format" in order to auto-format the code with expected max line length, PEP-8, etc.
Replace _testenv/pyproject.toml with .ruff.toml in the root directory of the repository, so we can exclude "compare-results.py" which doesn't follow that code style. Otherwise it would get formatted too when running "ruff format" in the root dir of the repository.
Commit
6f020365e24375e3788a4d73622d72b67fc2d9ad
by Oliver Smith
testenv: improve --config argument parsing
* Support using wildcards for the config names via fnmatch as that makes it much easier to run the ggsn tests against all osmo-ggsn config variations, and update the examples in "testenv.py -h" to illustrate this. * Fix that it didn't complain about an invalid --config argument, as long as there was a valid --config argument before it. * Let raise_error_config_arg only output the invalid --config argument instead of all of them. * Complain if "--config all" is used in combination with another --config argument. * Sort testenv*.cfg files found alphabetically, so they are always executed in the same order.
Commit
9cc15715929078970d773b5a419fbbe928a84620
by Oliver Smith
ggsn: testenv: fix paths in copy= and clean=
I had moved osmo-ggsn related files to the osmo-ggsn directory and forgot to adjust testenv_osmo_ggsn_{v4,v6,v4v6}_only.cfg. Fix it by changing it like it is in testenv_osmo_ggsn_all.cfg
Commit
b8c0bc745c5d86fd9d5b292e77a54e28505525f7
by Oliver Smith
ggsn: testenv: add libosmocore-utils to package=
Add libosmocore-utils, so osmo-config-merge is installed when running with --binary-repo too. The osmo-config-merge program is used in osmo-ggsn/testenv.sh to merge the configs.
Commit
faa6fc2d3083e1d074a3a3e6ca8714c920a6d453
by laforge
library: add generic Mutex API for parallel components
In certain scenarios, it's required to ensure that only one of multiple parallel components executes a specific code block at any given time.
This, for example, is the case for the S1GW testsuite, where we want to simulate multiple eNBs establishing E-RABs. Each new E-RAB triggers the IUT (osmo-s1gw) to send a PFCP Session Establishment Request, and there is no way for the PFCPEM to correlate which session belongs to which eNB. This problem can be solved by ensuring that only one eNB is triggering the PFCP Session Establishment Request(s) at a time.
This patch implements a generic Mutex API, which can also be used by other testsuites that orchestrate multiple parallel components.
Commit
aaa88deeb3ef7f53f9867438ee7fcad9b7df8e11
by laforge
library/PFCP_Emulation: a better PDU routing concept
In recently merged 2962d170 I wrongly assumed, that SEID of outgoing PFCP PDUs can be used to correlate and route the incoming PDUs. In fact, the PFCP peers use two different SEID values, negotiating them using the F-SEID IE.
We could have implemented a logic to look for F-SEID in the outgoing PDUs, store and then use it for routing. However, a more flexible approach is to allow the the PFCP_ConnHdlr components to subscribe and unsubscribe to/from specific SEID values explicitly.
In this spirit, let's allow the PFCP_ConnHdlr components to subscribe and unsubscribe to/from broadcast PDUs (i.e. those, for which the PFCPEM component could not find a single recipient) explicitly.
Implicit routing using the SeqNr remains unchanged and will be performed by the PFCPEM component automatically like before.
Change-Id: I25802471519fa297ad4cb2b056adaa6748b00af2 Related: 2962d170 "library/PFCP_Emulation: fix routing of incoming PDUs"
Commit
19ef9f42928774f09248f907795c6cbf8c31cf84
by laforge
library: as_pfcp_ignore(): log SeqNr of received PDUs
Printing the PFCP PDU template ('?' by default) is not very informative when reading logs. Printing the message type of the received PDU is not informative either, because message types are defined as numbers in PFCP_Types.ttcn. Printing the whole PDU is way too verbose, and would be redundant given that the PFCPEM component already does print all received PDUs. Let's print the sequence number.
Commit
ff60a63c2aa656978cfdaf5958e21fadf8462ef5
by laforge
Revert "s1gw: cache PFCP Recovery Timestamp in ConnHdlr"
This reverts commit 7ad95e1cfb00d269069bd052c44a9cae9027f763.
A follow-up commit will remove the need for each ConnHdlr to call f_ConnHdlr_register_pfcp(), that among with handling the PFCP association retrieves a PFCP Recovery Timestamp from the PFCPEM.
Caching the PFCP Recovery Timestamp value is not really worth it, since it's rarely used and can always be retrieved on demand.
Commit
17f589464ba4063f12f3b03a9a958f492ad6d88f
by laforge
s1gw: move PFCP association handling into a dedicated ConnHdlr
Previously, the PFCP association request from the IUT was handled by the first ConnHdlr component (idx := 0). While this approach has worked, it fails when multiple ConnHdlr instances (idx > 0) are spawned.
The problem arises when other ConnHdlr (idx > 0) instances initiate PFCP procedures before the first ConnHdlr (idx := 0) has established the association, so we end up playing races.
This patch introduces a dedicated ConnHdlr component to handle the PFCP association independently. Once the association is established, the actual test ConnHdlr instances are spawned, ensuring a more reliable and orderly process.
Commit
2f6d76c9dd982fbf9c6660e875fb6d3aa3beced6
by laforge
s1gw: add multi-eNB variants of TC_e_rab_setup
The idea is to simulate multiple eNBs establishing one or more E-RAB(s) simultaneously. In order to achieve that, use the new Mutex API to ensure that only one ConnHdlr component is triggering PFCP session establishment at any given time.
The problem is that there is no way for the PFCPEM component to correlate which PFCP session belongs to which eNB when multiple ConnHdlr instances establish E-RAB(s) in parallel. This can be solved by making a part of the test scenario synchronous.
Commit
7108643171a3fc71a75e4ff7434b5252c7df5b2e
by Oliver Smith
testenv: podman: disable send_redirects
When starting podman, set the following sysctls to avoid ICMP redirects. ICMP redirects lead to test failures (TC_pdp4_clients_interact in the GGSN testsuite), and should not be sent in the test environment in general.
It is really needed to set both "all" and "default", or otherwise ICMP redirects still show up. I've seen setting both in this patch: https://patchwork.kernel.org/project/linux-kselftest/patch/1570719055-25110-4-git-send-email-yanhaishuang@cmss.chinamobile.com/
Commit
32662ad138fdd36fb9962e59711d1e9514417793
by Oliver Smith
testenv: requirements: find programs in /usr/sbin
Fix that testenv complains about a missing setcap program, if it is in /usr/sbin/setcap and /usr/sbin is not in PATH as it is the case with Debian. We actually run setcap with sudo when it is needed, and in that case /usr/sbin gets added to PATH in Debian.
Commit
23a36504bbed820c4025220577f8dee67b7196e3
by Oliver Smith
testenv: podman: remove mongodb-org.list
Remove mongodb-org.list at the end of building the podman image, as we only need to install mongodb once in the container but won't use the repository afterwards. This avoids checking the mongodb repository in "apt update".
Commit
d2a8a91a86bdc300252aef6f78d052c14e2a47d4
by Oliver Smith
testenv: podman: don't install GUI packages
Install erlang-nox and use the pre-built rebar3 as linked from rebar3.org, instead of using the Debian package to avoid pulling in ~600 MB of GUI dependencies.
Commit
c84c196c6bcd3dc78c5f42fb9c3e3944a6fa88c7
by Oliver Smith
ggsn: osmo-ggsn.src.cfg: tweak log output
* Print log levels. * Don't print categories as hex. * Print the basename at the end of the line. * Remove "logging level lgtp debug", there already is "logging level lgtp info" further above, and this is a more sensible setting. With "debug" there are way too many log messages in e.g. TC_lots_of_concurrent_pdp_ctx.
Commit
2d00ff393d38f569a817c50ea1d94f16a38c2e50
by Oliver Smith
ggsn: testenv: replace dummy netdev with bridge
Replace the dummy netdev that was used as network device reachable through the GTP tunnel that can answer ICMP, with a bridge device. The bridge device fulfils the same purpose, plus it can be used in a future patch to connect osmo-ggsn when it is running in QEMU with the testsuite.
Commit
5ac9dc135751a053684a0d572a73879f4b41dd97
by Oliver Smith
testenv: bridge: change default IPs 201 -> 1
During code review it was decided that we want to keep the 127.0.0.1 (and other 127.0.0.x) IPs in the configs, so one can start the testsuite with osmo-ggsn directly on the host without using testenv scripts too, with the same config.
The testenv script for osmo-ggsn will replace 127.0.0.x with 172.18.3.x on the fly before the testsuite starts, so we can run osmo-ggsn optionally in QEMU on 172.18.3.2, which will be bridged to the host.
172.18.3.1 will be used by the GGSN testsuite now, instead of 172.18.3.201 as previously planned, so change the default IP of the bridge. The bridge is not used for another testsuite yet.
Add the 201 IPs as EXTRA_IPS for the non-QEMU case, as they are configured as DNS IPs and tests need to be able to reach them.
Commit
d82c9efed9bc44302d0bf428a0234727c961037e
by Oliver Smith
ggsn: testenv: run SUT on bridge instead of lo
Replace IPs in testenv.sh so the SUT runs on 172.18.3.2 (testenv0 bridge) instead of 127.0.0.2 (lo). Later on when we can optionally use QEMU with osmo-ggsn to test kernel GTP-U. It will then run on this IP as well. So with this change we can use the same IP for both the QEMU and non-QEMU case.
Commit
fffa8ec1f928afe200e94e5a5c4561c2251bf38f
by Oliver Smith
ggsn: testenv: change VTY IP
Access the VTY of osmo-ggsn via 172.18.3.2 (127.0.0.2 if running without testenv), so the testsuite can access the VTY when osmo-ggsn optionally runs in QEMU too (through the bridge).
Commit
caaa0d631b8a8a4f8ed426455c36ca7e94c62ba0
by Oliver Smith
testenv: support running SUT in QEMU
Add two new arguments -C|--custom-kernel and -D|--debian-kernel. If any of these is set, pass an environment variable TESTENV_QEMU_KERNEL with the path to the kernel when running commands from testenv.cfg.
These commands can then source the new qemu_functions.sh and use it to build an initramfs with the SUT and depending libraries on the fly, and start up QEMU to boot right to starting the SUT. All of that takes about ~1s on my system with kvm. Without kvm ~5s.
A follow-up patch will adjust the ggsn testenv configs to optionally run osmo-ggsn in QEMU for testing kernel GTP-U.
These scripts are based on scripts/kernel-tests from docker-playground.
Commit
e72c295fdd725246b50d8c90f9199483d68f349b
by Oliver Smith
library/GTPv1U_Templates: support sending ext hdrs
Replace the seq (sequenceNumber) parameter in ts_GTP1U_PDU with opt_part (GTPU_Header_optional_part). opt_part contains seq:
type record GTPU_Header_optional_part { OCT2 sequenceNumber, OCT1 npduNumber, OCT1 nextExtHeader, GTPU_ExtensionHeader_List gTPU_extensionHeader_List optional }
With this change it is possible to set the extension headers too when sending GTPU packets. This is in preparation for a GGSN test case with extension headers.
Commit
6fe837de206c2c927ce44a8d53e1fb377b475937
by Oliver Smith
testenv: podman: restart_count in container_name
When running testsuites with multiple configurations in a row, as it is the case with the ttcn3-ggsn jobs in jenkins, the podman container gets restarted whenever switching to the next config.
Use a different name for each container by appending a restart count. This should fix that podman sometimes didn't fully shutdown the container yet and complains that the container name is already in use. This happens even though we use "podman kill" and "podman wait" on the previous container. When checking later, the container is really gone and the same name can be used, it seems that it just needs some more time to shutdown in some cases.
Fix for: > Error: error creating container storage: the container name > "testenv-ggsn_tests-osmo_ggsn_-osmocom-nightly-20241012-0752-2eb85125" is > already in use by "8b7ea42371a922ffbf4e966b853124b98cd25c9905ae443fefb4115a103d7779". > You have to remove that container to be able to reuse that name.: that name is already in use
Commit
6734ee53b419cfe30e85bceb7e30cf8bb853de41
by Oliver Smith
ggsn: README: document how to run with testenv
It is possible to run the GGSN testsuite in a lot of ways (as it was ported from docker-playground, which had the same variations but with a less consistent way of running them).
Document how it is typically run for development / in jenkins. This should make it easier for users, in addition to testenv already telling which configs are available if trying to run the ggsn testsuite without the -c argument, and to the general help output in "./testenv.py run -h".
$ ./testenv.py run ggsn [testenv] Using testsuite ggsn_tests (via alias ggsn) [testenv] Found multiple testenv.cfg files: [testenv] * testenv_open5gs.cfg [testenv] * testenv_osmo_ggsn_all.cfg [testenv] * testenv_osmo_ggsn_v4_only.cfg [testenv] * testenv_osmo_ggsn_v4v6_only.cfg [testenv] * testenv_osmo_ggsn_v6_only.cfg [testenv] Select a specific config (e.g. '-c open5gs') or all ('-c all')
Commit
2c10e94d32d53a476fe13a70c6e6ac10e80987c0
by Pau Espin Pedrol
cosmetic: library/GTPv1C_Templates: remove extra indentation level
The extra first indentation level around 99% of the file just loses space which makes it difficult to keep templates at an acceptable width. Do similarly to what we already do in lots of other template files which were added later than this one.
We already have an IPCP_Types.ttcn, and the GTPv1C_Types from ProtocolModules dep we use doesn't actually specify any record for IPCP, so those are totally protocol independent.
Commit
45c9f8f5c9285c275e882a143b11c022e0d948cf
by Pau Espin Pedrol
library/PCO_Types: Drop unused nonsense enum
That enum is PAP related, plus it doesn't really match the section describing, plus it's not used anywhere. Looks like a development artifact which was not dropped during submit.
Commit
54eb13f86a1db021eb018e6326766717f7142a48
by Pau Espin Pedrol
ggsn: Introduce test TC_pdp4(6)_act_deact_mtu
This tests so far only test retrieval of MTU over PCO, which is only used for IPv4 APNs. When IPv6 is in used, it is expected to be retrieved over IPv6 SLAAC RA. Such tests will be done in a follow-up patch once the related procedure is implemented in osmo-ggsn.
Commit
2cafd10ade08b377dc939fff383b124794726a86
by Oliver Smith
ctrl: tweak errmsg for counter mismatch
- instead of "-1", print "not present", so humans know what is happening. - the comma separated args in setverdict() create a lot of weird quotes. Use string concatenation to have only one set of quotes around the entire error message.
Related: OS#6545 Tweaked-by: Oliver Smith <osmith@sysmocom.de> Change-Id: I672fcef819a6542a5b3bcfa0a6d9c84d34b468f3
Commit
5cf0b7fb0c141de9b7192777928593e2651984c4
by Oliver Smith
testenv: qemu: get coredump and show backtrace
If the SUT crashes inside QEMU, copy the coredump via 9p to the outer system (either host or podman) where we have the same binaries and also debug symbols, and run gdb there to show the backtrace.
Commit
c9242ab93319ed1df95250d31328ee2635a72100
by Oliver Smith
testenv: improve output for missing -c argument
When a testsuite has multiple testenv.cfg files, the user needs to explicitly choose a config, or "-c all" for all configs. Improve the help output to directly print the arguments that need to be passed, instead of printing the config file names. Mention that wildcards can be used too.
Old: [testenv] Found multiple testenv.cfg files: [testenv] * testenv_generic.cfg [testenv] * testenv_sccplite.cfg [testenv] * testenv_vamos.cfg [testenv] Select a specific config (e.g. '-c generic') or all ('-c all')
New: [testenv] Found multiple testenv.cfg files, use one of: [testenv] -c generic [testenv] -c sccplite [testenv] -c vamos [testenv] You can also select all of them (-c all) or use the * character as wildcard.
Commit
14d4a2805d6790aa410f6c5c1d7328c71bdaef84
by Oliver Smith
testenv: osmo-dev: add hint for gen_makefile fail
When gen_makefile.py from osmo-dev fails, it is likely that the osmo-dev git clone is outdated, for example if a new file with configure options was added to osmo-dev.git and is now being used by testenv. Display a hint for pulling this repository to the user.
Commit
c009d49e97b9302ccb411567fb23a9f3e760e40c
by Oliver Smith
testenv: remove dead code for [testsuite] prepare=
Remove some WIP code that I intended to use for enabling the mongodb repository before installing binary packages, to be able to dynamically install mongodb from there. I solved it differently by just always having mongodb in the podman image.
This was a dead code path because configs with prepare= in [testsuite] are currently not valid, and therefore testenv refuses to use these configs (see keys_valid_testsuite in testenv_cfg.py's verify()).
I have a different use case for running prepare= before running the testsuite, to replace a module parameter in the testsuite's config. This will be done in the next patch.
Move the execution time of prepare and clean scripts in testdir.prepare() after the testsuite config has been copied to the testdir, so it can be modified by the prepare script.
Commit
6ac0838dd48308f165343f32f3e9ae47848d121e
by Pau Espin Pedrol
RAN_Emulation: Introduce field ranap_connect_ind_auto_res
This field allows skipping automatic response of the connect_ind, hence allowing ConnHdlr to totally skip it, delay it, or generate a CREF by means of sending RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ to RAN_Emulation, as per ITU Q.711 Figure 8.
Commit
b9ded6e8ac7bbd34128e68c457cb986d8cc2d853
by Pau Espin Pedrol
RAN_Emulation: Allow setting reason in primitive MSC_CONN_PRIM_DISC_REQ
This allows setting a specific reason in the CREF transmitted on the wire, other than "End user originted (0)". A follow-up commit will add a test in HNBGW_Tests where an emulated MSC answers with CREF reason "End user failure (0x02)".
Commit
86e5371c9e5d33bbae6bc4167fc135a8d6dc27ec
by Pau Espin Pedrol
RAN_Emulation: Support registering IuSigConId for connectionless RANAP messages
This allows dispatching received RANAP connectionless (UNITDATA) messages which target potentially existing connections identified by IuSigConId, like RANAP Reset Resource (Ack) messages. Dispatching it to relevant ConnHdlrs allows explicitly waiting to receive the message and answer from there.
Commit
0135d187401d3a40dd81706b922de8823d9bab14
by Pau Espin Pedrol
hnbgw: Get rid of pars param in void_fn
Store pars into component field "g_pars" before caling void_fn. This simplifies ConnHdlr test functions and also avoids potential problems modifying pars vs g_pars. This is the same as we do in lots of other testsuites.
Commit
00f332eca58e81ae366deaf21e6ce8d2cfc79d97
by Oliver Smith
testenv: run podman command with logfile
In very rare cases it seems podman is just crashing with no reason in jenkins. Add logging to the main script we run inside podman, and run podman with a logfile attached to figure out why.
3GPP TS 36.413, section 9.1.3.2 "E-RAB SETUP RESPONSE" defines the following two IEs as optional:
* E-RAB Setup List IE: 0..1 in the Range column means that it can either be omitted (0) or included only once (1); * E-RAB Failed to Setup List: 'O' in the Presence column.
Our templates for this S1AP PDU require the former to be a value (as if it was mandatory) and do not allow passing the later.
Commit
aeb0a0c236854129fe8b71f4d8e492251a36d234
by Pau Espin Pedrol
hnbgw: Send meaningful RANAP messages in f_tc_ranap_mo_disconnect()
Fix the code to send the messages that were fore sure intended, where an MO disconnect is triggered. This allows attaching more to reality, plus making it easier to follow up the test in wireshark and in the code.
Commit
9eb5e696a0997e0de8db0248ba8be31ebb2cdac9
by Oliver Smith
testenv: make podman stop more robust
Terminate the watchdog process before killing the podman container. This avoids bogus errors from a race condition where the container gets killed first, and then the watchdog process tries to feed the watchdog and fails:
[testenv] Stopping podman container [testenv] + ['podman', 'kill', 'testenv-hnbgw-all-osmocom-latest-20241031-1222-f34534a5-1'] e41700779a8ca5daf18ac5daa27d59a84d8442196e352f2756a19baf0592cf89 Error: no container with name or ID testenv-hnbgw-all-osmocom-latest-20241031-1222-f34534a5-1 found: no such container [testenv] podman container crashed!
While at it, use "check=False" with the "podman kill" command, so we avoid additional error messages if the container was already killed at that point (could happen through a bug). If we fail to kill it here, it is not a problem because the watchdog will ensure it terminates shortly after the watchdog process was stopped.
Commit
6d675c717d9664baf683842234fcba3ca1e97fd6
by Oliver Smith
bsc: testenv: set MTU=1500 for lo
Two tests are failing if the MTU is 65536 instead of 1500. This is an upstream bug in titan.TestPorts.SCTPasp: https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SCTPasp/-/issues/3
Add a workaround so the behavior of the test environment is the same as with docker-playground and the tests can pass again.