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
This document outlines how to use the OAI CI framework and gives a quickstart.
[[TOC]]
Quickstart
There is a script main.py that
- reads scenario files from XML
- executes the steps (e.g., deployment of CN/gNB/UE, attach, ping, ...)
To simplify, a script run_locally.sh can be used to run a single scenario
locally. First, download images for gNB&UE (we assume you already downloaded
the CN) and tag them "latest", which is expected by run_locally.sh:
docker pull oaisoftwarealliance/oai-gnb:develop
docker tag oaisoftwarealliance/oai-gnb:develop oai-gnb
docker pull oaisoftwarealliance/oai-nr-ue:develop
docker tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue
Now, run the scenario:
cd ~/openairinterface5g/ci-scripts/
./run_locally.sh xml_files/container_5g_rfsim_simple.xml
Output should look like
[2025-08-07 18:07:49,631] INFO: ----------------------------------------
[2025-08-07 18:07:49,631] INFO: Creating HTML header
[2025-08-07 18:07:49,631] INFO: ----------------------------------------
[2025-08-07 18:07:49,766] INFO: ----------------------------------------
[2025-08-07 18:07:49,767] INFO: Starting Scenario: xml_files/container_5g_rfsim_simple.xml
[2025-08-07 18:07:49,767] INFO: ----------------------------------------
[2025-08-07 18:07:49,767] INFO: placing all artifacts for this run in /home/richie/oai/cmake_targets/log/container_5g_rfsim_simple.xml.d/
[...]
[2025-08-07 18:07:49,771] INFO: ----------------------------------------
[2025-08-07 18:07:49,771] INFO: Test ID: 1 (#1)
[2025-08-07 18:07:49,771] INFO: Deploy OAI 5G CoreNetwork
[2025-08-07 18:07:49,771] INFO: ----------------------------------------
it will run an end-to-end test, connecting one UE to the gNB, and ping, before
undeploying. As shown, logs will be under
/home/richie/oai/cmake_targets/log/container_5g_rfsim_simple.xml.d/. The
python code also produces an HTML report in ci-scripts/test_results.html.
Running with local changes
In order to run the tests as above, with local changes, please build images locally.
It is not yet possible to override an existing image with changes made locally to a source file and run it directly through the CI framework. However, it is possible to override an existing image with local changes, and run the scenario manually following the console logs steps provided above. This is described in the 5G RFsimulator README.