Commit Graph
913 Commits
Author SHA1 Message Date
Jaroslava Fiedlerova 03d4ce2e1e CI: Attach multiple UEs at once in AW2S test 2025-09-26 15:07:16 +02:00
Robert Schmidt 7227cfb320 Merge remote-tracking branch 'origin/n2-handover' into integration_2025_w38 (!3334)
N2 handover

This MR introduces full support for N2 handover, covering handover
decision, preparation, execution, and notification between source and
target NG-RAN nodes.

Key features:

1. Handover Decision & Preparation:
  - Implement N2 handover decision based on UE measurement reports.
  - Generate the Handover Preparation Information message, including
    RRCReconfiguration.
  - Send Handover Required message from the source NG-RAN to the AMF.
2. Handover Execution:
  - Decode and handle the Handover Request on the target NG-RAN.
  - Process the Handover Command on the source gNB, triggering
    RRCReconfiguration.
  - Initiate Handover Notify after successful completion.
3 NGAP & RRC Enhancements:
  - Implement NGAP encoding/decoding functions for Handover Required,
    Handover Request, Handover Command, Handover Failure, and Handover
    Notify (3GPP TS 38.413).
  - Adds NG-RAN Status Transfer support (UL/DL) for PDCP COUNT
    preservation during mobility:
    - support for NGAP Uplink and Downlink RAN Status Transfer messages
      (TS 38.413 §9.2.3.13-14) to enable proper PDCP COUNT value
      transfer during handover or recovery: NGAP encoding/decoding for
      RAN Status Transfer, PDCP helpers to extract and apply COUNT (HFN
      + SN) per DRB. This aligns with TS 38.300 §9.2.3.2.1 and TS 23.502
      §4.9.1.3.3, ensuring PDCP status preservation in AM.
4. Testing:
  - Introduce a Telnet command to manually trigger N2 handover using UE
    ID and neighbor PCI.
  - Add configuration file for testing N2 handover with a target gNB.
2025-09-18 11:57:44 +02:00
Guido Casati 1015c1f5f0 Add new CI pipeline for N2 Handover
The pipeline is using the already existing conf files
for the source/target gNB CUs/DUs.

For the sake of simplicity, neighbour-config.conf has
been rewritten and simplified in this commit, then
adopted in this pipeline. The file was not used before.
2025-09-18 11:34:31 +02:00
Robert Schmidt 8045dc71e0 XML description for build on Jetson (ARMv8) 2025-09-17 15:26:34 +02:00
Robert Schmidt 1ea90fc987 Rename to native_armv9 image build type
For clarity, rename to native_armv9 for clarity. The check inside Python
checked for native_arm, and if we introduce native_armv8 (for jetson),
it would also match that.
2025-09-17 15:24:12 +02:00
Robert Schmidt e486557f63 Merge remote-tracking branch 'origin/physim-gracehopper' into integration_2025_w37 (!3611)
CI: Generalize PhySim tests, run PhySims on Gracehopper

This changeset generalizes/harmonizes the CI infrastructure for physim
testing, and adds a new pipeline for physim tests on Gracehopper
machines.

Specifically:

- Refactor the existing CI code for running and analyzing physical
  simulators. The existing code assumed those tests are deployed using
  OpenShift. Instead, OpenShift/Helm-specificities (e.g., running a
  "release") have been removed, and instead of hardcoding the deployment
  of the physical simulators using a script for Helm, the function takes
  any script that can deploy using Helm/docker/from source. The overall
  appearance is the same.
- Add a new pipeline RAN-PhySim-GraceHopper-5G that executes physical
  simulators on gracehopper. Reporting is done in the same way as for
  existing physical simulators (e.g., like in the RAN-PhySim-Cluster-5G
  pipeline), but deployed in docker instead of helm.
  -> some tests don't work reliably on ARM yet and are skipped
- the RAN-gNB-N300-Timing-Phytest-LDPC pipeline has been reworked to use
  the same code for testing T2 offload, with ctest, and the same
  reporting.
- the CUDA LDPC test XML has been removed, as these tests don't work
  reliably.
- add a new macro add_timed_physim_test() that allows to define
  thresholds to be checked, so that ctest will check for them. see the
  documentation for more information
2025-09-12 15:57:51 +02:00
Robert Schmidt 230a969be4 Merge remote-tracking branch 'origin/CI-HO-setup' into integration_2025_w37 (!3612)
CI: Creation of F1 Handover pipeline

In this MR we are modifying/adding all the required files (.xml, .conf,
.yml) in order to create a pipeline on Jenkins that allows us to test
OTA F1 handover.
2025-09-12 15:56:34 +02:00
Robert Schmidt b00dd803d1 Remove existing physim offload tests
After the parent commit, there is no need for these XML files anymore.
The tests are driven by ctest instead.
2025-09-12 14:54:49 +02:00
Robert Schmidt 42dbaaf75c Add new T2 Offload test 2025-09-12 14:54:49 +02:00
Robert Schmidt 48be94a8c1 Remove LDPC GPU physim tests
Many of these tests do not pass (ldpctest returns non-zero output).
Moving to ctest would make all these tests and hence the pipeline fail.
2025-09-12 14:53:09 +02:00
Robert Schmidt 4809ffc92a Add new Physim test for gracehopper 2025-09-12 14:53:09 +02:00
Robert Schmidt 13e9910e4e Modify CI SA 60MHz 2x2 test to be DSUUU
Update configuration and tweak iperf thresholds accordingly. Tune some
parameters for good UL reception.
2025-09-11 19:47:52 +02:00
Reem Bahsoun bb383359e2 Add the required files for Handover CI setup (.conf, .yml, .xml) 2025-09-10 21:35:58 +02:00
Robert Schmidt 0ff85ff2c0 Rename PhySim deployment task to Deploy_Run_OC_PhySim
A future commit will introduce the possibility to deploy physims using
docker, so rename the current step to reflect that it works via
OpenShift.
2025-09-10 16:43:16 +02:00
Robert Schmidt 2b75e09151 Increase DL UDP traffic for OAIUE OTA pipeline 2025-08-29 14:53:36 +02:00
Jaroslava Fiedlerova 433d5c1099 CI: update XML and yaml files for 10 UEs/process RFSim test 2025-08-27 13:15:40 +02:00
Bartosz Podrygajlo acb2ae93bd Add RFSim 10 UEs/process RFSim test
Add an RFSim test for 10 UEs in a single process.
2025-08-27 13:15:40 +02:00
Robert Schmidt 8ccd944db2 Merge remote-tracking branch 'origin/rf_emulator_and_timers_fix' into integration_2025_w34 (!3589)
RF emulator and improvements of the timers

RF emulator:
Add an RF library emulating a real device without the need of a real
device.  This is thought to enable using phy-test without requiring a
radio device or channel simulation.  The library synchronizes on the
real time clock, drops TX and generate noise on RX.  Noise generation
can be disabled and the noise level configured.

Timers improvements:
- Fix standard deviation for merged timers
- Add display of ULSCH decoding timers
- Add decoding timer in AAL
2025-08-21 15:22:44 +02:00
Robert Schmidt 946939e8cc CI: integrate RFemulator phytest in timing-phytest pipeline 2025-08-21 10:53:03 +02:00
Robert Schmidt 9f5ea8beba Merge remote-tracking branch 'origin/cleanup-build-oai-speedup-cluster' into integration_2025_w33 (!3579)
CI: speed up and simplify build, remove unnecessary Python code, remove --eNB* parameter list

This cleans up the CI framework for running end-to-end tests, and
improves the integration with OAI code. Specifically

- cleanup build_oai and helpers to output all text, which is captured
  better by the CI
- build some images in the Cluster-Build in parallel to increase speed
- remove all --eNB{,1,2}{IPAddress,UserName,Password} variables. Those
  were indexed through "instance" and "server ID" and are replaced with
  the actual node name. I consider further cleanup to introduce a
  "global" XML file node name so we don't need this in each step and
  instead define this once.
- individual cleanup
2025-08-14 16:45:52 +02:00
Robert Schmidt 5b8d66bbac Write simple CI documentation and add sample script 2025-08-14 14:55:23 +02:00
Robert Schmidt 3c54daf4e2 Remove "forcedWorkspaceCleanup" option
It is superseded by the CreateWorkspace() function and task step (which
removes and recreates a workspace), and this option was not actually
used in any function except for the build of unit tests, but no XML
step actually specified this option.
2025-08-14 14:55:23 +02:00
Robert Schmidt 45da9face4 Reimplement Initialize_eNB()/Terminate_eNB()
Reimplement these functions by

- using cls_cmd
- retain only the necessary steps from the timing-phytest function
- pass in ctx and node information, instead of server ID
- remove all superfluous variables that don't seem to be used
- make some lists (corresponding indices are "server ID") into normal
  variables.
2025-08-14 14:55:04 +02:00
Robert Schmidt 3f4df04875 Run_Physim(): pass node 2025-08-14 14:55:04 +02:00
Robert Schmidt 190dc55d9f Pass node to various Build*() functions
Pass node directly from XML to these functions

- BuildClusterImage()
- BuildImage()
- BuildProxy()
- BuildRunTests()

instead of reading the "server ID" and looking up from
eNB_IPAddress/eNB1_IPAddress/eNB2_IPAddress.

Improve the proxy build unit test by properly passing ctx information.
2025-08-14 14:55:04 +02:00
Robert Schmidt 293c7afd0b File not used by CI 2025-08-14 14:55:04 +02:00
Robert Schmidt d3837cd3b0 Deploy_Run_PhySim(): pass node name
harmonize with other code that takes a "node" parameter.
2025-08-14 14:55:04 +02:00
Robert Schmidt af58cf2441 CppCheckAnalysis()/LicenceFormattingCheck(): use node
- ubuntu18 eNB_IPAddress obelix => obelix
- cppcheck eNB_IPAddress 172.21.18.47 => carabe
2025-08-14 14:55:04 +02:00
Robert Schmidt 6233667de9 Push_Local_Registry(): pass node 2025-08-14 14:55:04 +02:00
Robert Schmidt 7839d06601 Create/Deploy/Undeploy(): use node
Pass the node name for a host on which to create a workspace or
deploy/undeploy.

Add a new test for the creation of workspaces.

To help myself and the reviewer, here is a list of
"eNB_IPAddress"/"eNB1_IPAddress" parameters I copied from the various
pipelines:
- rfsim 4G eNB_IPAddress none => localhost
- rfsim 5g eNB_IPAddress none => localhost
- flexric eNB_IPAddress none => localhost
- l2sim 4g eNB_IPAddress none => localhost
- l2sim 4G eNB1_IPAddress 172.21.16.128 => obelix => localhost
- cluster image eNB_IPAddress poseidon
- ubuntu18 eNB_IPAddress obelix => obelix
- ubuntu-arm eNB_IPAddress gracehopper3-oai => gracehopper3-oai
- arm-cross eNB_IPAddress alambix => alambix
- lte-tdd eNB_IPAddress 172.21.18.45 => starsky
- lte-fdd eNB_IPAddress 172.21.18.46 => hutch
- lte-oaiue eNB_IPAddress 172.21.18.46 => hutch
- lte-oaiue eNB1_IPAddress 172.21.18.47 => carabe
- lte-tdd-2x2 eNB_IPAddress 172.21.16.128 => obelix
- nsa eNB_IPAddress 172.21.16.137 => nepes
- nsa eNB1_IPAddress 172.21.16.109 => ofqot
- sa-aerial eNB_IPAddress gracehopper1-oai => gracehopper1-oai
- aw2s eNB_IPAddress 172.21.16.124 => avra
- sabox eNB_IPAddress 172.21.16.109 => ofqot
- sa-oaiue eNB_IPAddress avra => avra
- sa-oaiue eNB1_IPAddress caracal => caracal
- cppcheck eNB_IPAddress 172.21.18.47 => carabe
- timing-phytest eNB_IPAddress caracal => caracal
- physim 4g eNB_IPAddress avra => avra
- physim 5g eNB_IPAddress avra => avra
2025-08-14 14:55:04 +02:00
Robert Schmidt d95e6bca6b Pull_Image_from_Registry()/Clean_Test_Server_Images(): pass node
Pass the node name for a host onto/from which to pull/clean the images.
For doing this, I used:

- rfsim 4G eNB_IPAddress none => localhost
- rfsim 5g eNB_IPAddress none => localhost
- flexric eNB_IPAddress none => localhost
- l2sim 4g eNB_IPAddress none => localhost
- l2sim 4G eNB1_IPAddress 172.21.16.128 => obelix => localhost
2025-08-14 14:55:04 +02:00
Robert Schmidt e25075134c Integrate all SA-OAIUE pipeline related files into one 2025-08-14 14:55:04 +02:00
Robert Schmidt 881f753f3f Integrate all NSA-related XML files into one
Is simpler to test manually and view the results.
2025-08-14 14:55:04 +02:00
Robert Schmidt 7defffe97a Remove unused file 2025-08-14 14:55:04 +02:00
Robert Schmidt 3a241fe587 Merge remote-tracking branch 'origin/amarisoft-ue-redcap' into integration_2025_w33 (!3573)
Make Amarisoft UE sim a RedCap UE

Change Amarisoft UE configuration and gNB of the AW2S pipeline to
be/handle RedCap UEs.

The UE should only connect if the gNB handles RedCap UEs. In the logs,
we should see

    [MAC]   UE with RNTI 3725 is RedCap

which we check for the first two UEs (one normal UE/absence of this
message, one RedCap UE/presence of this message).
2025-08-13 08:10:32 +02:00
Robert Schmidt 3b57379887 CI AW2S-Amarisoft: verify RedCap'edness of a UE
Since the parent commit, UE 1 is normal (no RedCap), UE 2 is RedCap.
Verify that the gNB agrees with that and detects the second UE as RedCap
by analyzing some logs.

The first check is a bit elaborate, but basically is

    [ $(docker logs | grep XYZ | wc -l) -eq 0 ]
    ^   ^             ^          ^      ^
    1   2             3          4      5

(1) is the if statement, that compares
  (4) the number of occurrences
  (3) of "RedCap" in the
  (2) docker logs
(5) to being equal to

Note for all UEs which number, and whether it is RedCap (so this need to
be kept in sync with the Amarisoft UE sim configuration file in use!).
2025-08-12 17:33:14 +02:00
Robert Schmidt c3e7fe47e6 Remove unused Amarisoft CI XML file 2025-08-12 17:25:44 +02:00
Jaroslava Fiedlerova 3491a044ff Merge remote-tracking branch 'origin/ci-collect-ue-logs' into integration_2025_w32 (!3560)
CI: Refactor log collection, collect also (COTS) UE logs

Refactor log handling in CI: collect according to currently used XML files. This
makes it homogeneous in the pipelines, and avoids accidental overwriting (as
happens in phytest-timing), as well as harmonizing the log placement
(e.g., no YAML lookup in Ping/Iperf).

Allow to trace and archive UE logs (e.g., Quectel via QLog, Amarisoft UE logs).
By default, no logs will be collected as of this MR, as many files are big.

Various cleanup in Jenkinsfiles, some bugfixes, add unit tests.
2025-08-07 21:40:35 +02:00
Robert Schmidt cc0d0ae0ab gNB caracal USRP build: don't stop if we can't reboot
Sometimes the connection fails because of the reboot. Without may_fail,
it would stop the build, which will then run the wrong code, possibly.
Instead, continue; if there is a problem with USRP, it will be visible
when starting nr-softmodem.
2025-08-07 15:39:59 +02:00
Robert Schmidt a3d46ed0e6 5g rfsim NTN LEO/GEO: remove leading undeploy step
It is not necessary (the final undeploys at the end are "always_exec"),
and makes the CI potentially fail since there is nothing to copy at this
point.
2025-08-06 12:20:13 +02:00
Xin Zhe Khooi f6aeb21d97 ldpc_aal: handle T2 case in runtime 2025-08-05 18:38:17 +02:00
Robert Schmidt 0d4246e354 Rename nrLDPC_coding_t2 options to nrLDPC_coding_aal 2025-08-05 18:38:17 +02:00
Robert SchmidtandXin Zhe Khooi c0d797ec0e Rename libldpc_t2 to libldpc_aal
Rename the library to reflect that it's more a generic AAL driver than
specifically for AAL. To this end, rename some documentation.

As of this commit, the options are still called nrLDPC_coding_t2. The
next commit will correct this.

Co-authored-by: Xin Zhe Khooi <khooixz@comp.nus.edu.sg>
2025-08-05 18:38:16 +02:00
Robert Schmidt c15accf106 Merge remote-tracking branch 'origin/Fix_DedicatedBWPs' into integration_2025_w31 (!3461)
Fix Dedicated BWPs

- Improve SearchSpace selection
- Improve CORESET selection
- Fix fill 'initialDownlinkBWP->pdsch_Config' when there are
  DedicatedBWPs
  * This fixes the reported 'RSRP = 0' issue when the UE is in the
    InitialBWP and we have DedicatedBWPs configured
- Add a 'common' type SearchSpace in the NR_BWP_DownlinkDedicated IE for
  DedicatedBWPs
- Fix hardcoded 'controlResourceSetId' by making it dynamic
- Remove 'searchspaceid' from 'verify_agg_levels' function because it
  was used only for LOG
- CI: Add DedicatedBWP to '40 MHz TDD F1+E1 SA' in
  'RAN-SA-B200-Module-SABOX-Container'
2025-07-31 15:53:31 +02:00
Robert Schmidt 128a6f3945 Add XML step to check UE is on dedicated BWP 2025-07-31 15:20:09 +02:00
Robert Schmidt aa4c2df593 Remove non-existing XML steps 2025-07-31 15:20:09 +02:00
Robert Schmidt da70ea75ae Merge remote-tracking branch 'origin/ci-change-phytest-frequency' into integration_2025_w31 (!3534)
CI: Adjust frequency configuration

Change frequency used by OTA CI pipelines to avoid overlap with
commercial deployments.
2025-07-31 09:51:31 +02:00
Jaroslava Fiedlerova ac6561335c CI: adjust gNB conf file in OAIUE pipeline
Following frequency change in the pipeline, we observed degraded UL channel
conditions resulting in low UL throughput. Increasing attenuation on the gNB
side was found to mitigate this issue by improving UL channel quality
and reducing UL noise power.

Increase tested UL and DL bitrates in OAIUE pipeline.
2025-07-30 18:11:09 +02:00
Jaroslava Fiedlerova 300060c26e Merge remote-tracking branch 'origin/ci-move-rfsim4g-to-acamas' into integration_2025_w30 (!3540)
CI: migrate RFSim4G to acamas machine
2025-07-23 16:46:21 +02:00
Jaroslava Fiedlerova c3cb3c8e91 Merge remote-tracking branch 'origin/ci-t2-dpdk-22.11' into integration_2025_w30 (!3533)
CI: test T2 with DPDK 22.11

Following the upgrade of T2 to the latest firmware, DPDK 22.11 is now required.
This MR updates the testing pipeline to ensure compatibility and deployment of
T2 physims with DPDK 22.11.
2025-07-23 11:08:53 +02:00