Commit Graph
512 Commits
Author SHA1 Message Date
Jaroslava Fiedlerova dab44db9aa CI: Update ShowTestID to include the source file and line
Replace xml.etree.ElementTree with lxml.etree for to enable line tracking.
Update ShowTestID to include the source file and line number for each
test.
2026-01-14 23:43:08 +01:00
Jaroslava Fiedlerova 3893d5c8ef CI: harmonize test case identifier
Remove unused testCase_id definitions and replace all occurrences of test_id
with test_idx across the ci-scripts folder.
2026-01-14 23:43:08 +01:00
Jaroslava Fiedlerova 0166bbd493 CI: Remove requested and exclusion test parsing and validation
Requested and exclusion test lists are no longer present in the XML files,
so related parsing, format checks, and filtering logic have been removed.
2026-01-14 23:43:08 +01:00
Jaroslava Fiedlerova 12f4167f99 CI: Automatically enumerate test cases, remove hardcoded IDs
Update all XML files in ci-scripts folder, using Python script
attached in MR !3844.
https://gitlab.eurecom.fr/oai/openairinterface5g/-/merge_requests/3844#note_198132
2026-01-14 23:43:03 +01:00
Robert Schmidt 81680e29a9 Implement StopObject()
For some test cases, we might want to stop a service earlier. This
functionality is done by StopObject().

Test log collection is still done by UndeployObject(), which will
collect the logs of all services (at that point, stopped or not).
2025-11-14 14:57:12 +01:00
Jaroslava Fiedlerova 50e32cfea5 Merge remote-tracking branch 'origin/prs_bug_fix_and_integrate_to_ci' into integration_2025_w45 (!3670)
PRS bug fix and CI Integration

- Fix the bug in PRS channel estimation while copying memory to compute the
  impulse response
- Integrate PRS testing to CI
2025-11-06 09:36:03 +01:00
Robert Schmidt d4aac07ae9 Remove write-only code 2025-11-05 11:13:31 +01:00
Jaroslava Fiedlerova 0d2212ca38 CI: Extend Custom_Script to accept arguments 2025-11-05 10:42:37 +01:00
Robert Schmidt f7eaafa835 CI test runner: handle SIGINT
Handle SIGINT and mark any subsequent steps as failed. Receiving SIGINT
a second time will abort the script immediately (as is the case before
this commit).

Note that Python seems to relay the signal to the "controlled" process
(e.g., Ping), which would return immediately with an error. So some
steps like Ping will abort immediately, others (e.g., IdleSleep) will
finish their step, and then the present logic will mark subsequent steps
as failed.
2025-11-04 00:14:27 +01:00
Robert Schmidt 19c6d20b45 Bugfix: "or None" is useless
"or None" would assign if the first term is false-y. But not specifying
it would already lead to the variable being set to None.
2025-11-03 18:53:00 +01:00
Robert Schmidt b0106f27b5 Centralize node for all XML steps
All XML steps take a single node. We can thus "centralize" reading this
parameter in the main loop and pass it to ExecuteActionWithParam().
2025-11-03 18:48:55 +01:00
Robert Schmidt 9e0540fbed Simplify node management in CI
Some CI tasks/commands like Iperf(), Ping() get multiple nodes (via XML
parameter "nodes") to potentially run UEs on different nodes (hosts) at
the same time. However, I argue that this is not good:

- we don't actually use this -- where we specify multiple UEs, it's
  always "localhost localhost..."
- it is inconsistent, as we typically have a single "node", not nodes,
  and there is a possibility to harmonize (see also next commit)
- if we needed it, there would be better ways to achieve the same.
  First, for hardware-based UEs, the ci_infra.yaml can specify different
  UEs. For simulated UEs, it would be feasible to have multiple XML
  steps run in parallel, e.g., in the XML <parallel> tag, which would
  clarify that multiple UEs on different hosts run in parallel
- it reduces code.

Hence, make a single <node> for these XML steps.
2025-11-03 18:46:32 +01:00
Robert Schmidt a5689f5b8c CI: Remove unused code 2025-11-03 18:46:00 +01:00
Robert SchmidtandGuido Casati 0ba9a9758b CI: expand %%workspace%% token
- main.py: replace %%workspace%% with CONTAINERS.eNBSourceCodePath in Custom_Command and Custom_Script

Co-authored-by: Guido Casati <hello@guidocasati.com>
2025-10-15 20:06:15 +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 4809ffc92a Add new Physim test for gracehopper 2025-09-12 14:53:09 +02:00
Robert Schmidt c4a0c3b05e Rename to deploy_physim()
deploy_oc_physim() is not specific to OpenShift anymore, so rename to a
neutral name.
2025-09-10 16:43:16 +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 deadd5414d CI: Generalizce deploy_oc_physim()
A future commit will enable to deploy physical simulators via docker.
Hence:

- Move the script to run out of deploy_oc_physim(), to make it more
  generic (later commits will introduce other scripts)
- pass the working directory (the function will be moved into
  cls_oaicitest, as it fits neither cls_containerize nor cls_cluster
  when deploying the tests from source)
- not using ci-scripts: don't hardcode a specific path, just use the
  working directory
- avoid helm-specific pods summary, and put it into the general "physim
  logs"
- remove helm-specific "release", and use a generic name for results
- always log pod logs and status to debug, even if deployment was not
  successful or tests did not finish.
2025-09-10 16:43:16 +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 9e1cbb1035 Ignore eNB{,1,2}{UserName,IPAddress,Password} parameters
After having transitioned to direct node names in the XML, these
parameters are not relevant anymore.

The best way to view this patch is with

    git show <SHA> --ignore-all-space
2025-08-14 14:55:04 +02:00
Robert Schmidt dc27690c86 LogCollecteNB() not used anymore
Since 28ce0dc444 ("Main: pass in ctx"), the CI always collects logs
into cmake_targets/log/. Hence, LogCollecteNB() is never called. We can
remove it.

Further, change the cmake_targets/log/ to ci-log/, which is shorter, and
append a / on the zip path to make sure that only contents is zipped.
2025-08-14 14:55:04 +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 c4efe9feed cls_containerize: yamlPath/services as normal string
These variables were set as lists, to be indexed by the "server ID".
Since this has been removed from all XMLs, it is not necessary anymore.
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 074092af17 Remove unused variables 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 40efa2a545 Remove LogCollectBuild step: not used by any pipeline 2025-08-07 15:39:59 +02:00
Robert Schmidt 244ea8fc22 Use archiveArtifact() for TerminateeNB() 2025-08-07 15:39:59 +02:00
Robert Schmidt 5090ce6f0a Ignore main.py TerminateeNB mode
No pipeline uses it. With the changes in the next commit, pipelines
would start to fail. Remove it for simplicity.
2025-08-07 15:39:59 +02:00
Robert Schmidt 14389235df Use archiveArtifact() for SCA.CppCheckAnalysis() 2025-08-07 15:39:59 +02:00
Robert Schmidt 27e37a4181 Use archiveArtifact() for LicenceAndFormattingCheck() 2025-08-07 15:39:59 +02:00
Robert Schmidt 5ffa431514 Use archiveArtifact() for Build()/BuildCluster()
I have to make both together, since they both depend on
AnalyzeBuildLogs().

- remove mkdir for legacy sub-logfiles in build_oai, that does not exist
  anymore; also, remove corresponding log analysis, I think we don't use
  it and it is overkill (either build works or not)
- manually try to copy "all.txt"
- explicitly list log files to copy, then analyze
- AnalyzeBuildLogs(): pass log files to inspect explicitly
2025-08-07 15:39:59 +02:00
Robert Schmidt 63f6368ca7 use archiveArtifact() for BuildProxy() 2025-08-06 12:24:30 +02:00
Robert Schmidt 1ffbba525d Use archiveArtifact() for BuildRunTests()
Collect also unit test logs, so that developers could see the reason for
failed logs.
2025-08-06 12:24:30 +02:00
Robert Schmidt 83d037057b Use archiveArtifact() for cls_native.run_physim() 2025-08-06 12:24:30 +02:00
Robert Schmidt 7ef8829167 Use archiveArtifact() for cls_native.Build() 2025-08-06 12:24:30 +02:00
Robert Schmidt 1d3e795c0c Use archiveArtifact() for deploy_oc_physim() 2025-08-06 12:24:30 +02:00
Robert Schmidt da9cec0bff Use archiveArtifact() for Ping+IPerf 2025-08-06 12:24:30 +02:00
Robert Schmidt 62ae72925b Use archiveArtifact() for module_UE 2025-08-06 12:24:30 +02:00
Robert Schmidt fa5c91e03f Use archiveArtifact() for (Un-)DeployObject() 2025-08-06 12:24:30 +02:00
Robert Schmidt 2b4e0e5244 Use archiveArtifact() for CN undeploy 2025-08-06 12:24:30 +02:00
Robert Schmidt dcbb3369e1 Simplify ShowTestID()
make it a non-class function, stateless, more information on the current
CI step (the number).
2025-08-06 12:23:59 +02:00
Robert Schmidt 28ce0dc444 Main: pass in ctx
Set the context for each task step. Set the artifact result path based
on the XML, so it is harmonized; currently, most pipelines use the "YAML
path" of docker-compose, but that does not always make sense. For
instance, Ping/Iperf() needs to look up this path, but does not
inherently belong to one specific YAML path (there might even be more).
2025-08-06 12:22:28 +02:00